|
Trouver une ressource
Vous ne trouvez pas de réponse à votre problème ? Alors posez la question dans le forum. Souvenez-vous qu'il n'y a jamais de question bête, mais rester dans l'ignorance parce que l'on n'ose pas poser une question, ça c'est une erreur !
Sujet : Base Donnée ouvert par Excel et VB [ Archives Visual Basic / Bases de données ] (Charlie)
Informations & options pour cette discussion
|
lundi 15 juillet 2002 à 15:54:57 |
Base Donnée ouvert par Excel et VB

Charlie
|
Allo... J'utilise une base de donnée qui est ouverte a la fois par Excel et VB. Mon problème est que je ne sais pas comment couper la connexion a ma BD en Excel. Car VB ouvre ma BD, par la suite c'est Excel pour retourner vers VB. Toutefois, quand j'essai de retourner vers VB il me marque un message d'erreur car la BD est déja ouverte. Mais une fois que j'ai importé mes données dans excel, j'ai pu besoin du lien mais je dois garder Excel ouvert. Quoi faire a part sauvegarder le fichier et le ré-ouvrir??? Merci
|
|
|
|
mardi 16 juillet 2002 à 17:47:45 |
Re : Base Donnée ouvert par Excel et VB

skrol29
|
Si tu donnait un peu + d'info peut être qu'on pourrait t'aider. Quelle est cette base de donnée qui n'accepte qu'une seule connexion (Access ?). Quelle méthode est utilisée pour lier Excel et la base ?
-------------------- Skrol 29 www.skrol29.com --------------------
------------------------------- Réponse au message : -------------------------------
Allo...
J'utilise une base de donnée qui est ouverte a la fois par Excel et VB. Mon problème est que je ne sais pas comment couper la connexion a ma BD en Excel.
Car VB ouvre ma BD, par la suite c'est Excel pour retourner vers VB. Toutefois, quand j'essai de retourner vers VB il me marque un message d'erreur car la BD est déja ouverte. Mais une fois que j'ai importé mes données dans excel, j'ai pu besoin du lien mais je dois garder Excel ouvert.
Quoi faire a part sauvegarder le fichier et le ré-ouvrir???
Merci
|
|
|
|
mardi 16 juillet 2002 à 18:03:34 |
Re : Base Donnée ouvert par Excel et VB

Charlie
|
Allo... je me débrouille pas si mal en C++ mais je commence en VB la... Alors, je ne connais pas encore tout les termes!
Mon programme VB utilise un controleur ADO pour ouvrir une base de donnée ACCESS...
Voici la déclaration de l'ouverture qui plante... message d'erreur: Couldn't use "; file already in use.
Cat.ActiveConnection = "provider=microsoft.jet.oledb.3.51;" & "Data source =" & link & ";"
ou link= le chemin d'acces et Private Cat As New ADOX.Catalog
c'est ici que ca plante...
par la suite, j'active les tables comme ca:
cmdado.ActiveConnection = Cat.ActiveConnection cmdado.CommandText = " select * from Project"
rsProject.CursorLocation = adUseClient rsProject.CursorType = adOpenDynamic rsProject.LockType = adLockOptimistic rsProject.Open cmdado
Private cmdado As New ADODB.command Private rsProject As New ADODB.Recordset
Pour lire excel... je fais l'équivalent de cliquer sur: Données, Données Externes, Importer des données... (cette fonction n'est pas valide en Excel97...)
Voici ce qu'il fait... project.pname=== chemin d'acces de ma BD
Dim Excel97 as Excel.application
With excel97.Application.ActiveWorkbook .Sheets.Add .ActiveSheet.Name = "All Class" With .Sheets("All Class") With .QueryTables.Add(Connection:=Array( _ "OLEDB;Provider=Microsoft.Jet.OLEDB.4.0;Password="""";User ID=Admin;Data Source=C:\" & Project.pName & ";Mode=Share Deny Write;Extended Properti" _ , _ "es="""";Jet OLEDB:System database="""";Jet OLEDB:Registry Path="""";Jet OLEDB:Database Password="""";Jet OLEDB:Engine Type=4;Jet OLEDB:D" _ , _ "atabase Locking Mode=0;Jet OLEDB:Global Partial Bulk Ops=2;Jet OLEDB:Global Bulk Transactions=1;Jet OLEDB:New Database Password=" _ , _ """"";Jet OLEDB:Create System Database=False;Jet OLEDB:Encrypt Database=False;Jet OLEDB:Don't Copy Locale on Compact=False;Jet OLED" _ , "B:Compact Without Replica Repair=False;Jet OLEDB:SFP=False"), Destination:= _ Range("C5")) .CommandType = xlCmdTable .CommandText = Array("Data") .Name = Project.pName .FieldNames = False .RowNumbers = False .FillAdjacentFormulas = False .PreserveFormatting = True .RefreshOnFileOpen = False .BackgroundQuery = True .RefreshStyle = xlInsertDeleteCells .SavePassword = True .SaveData = True .AdjustColumnWidth = False .RefreshPeriod = 0 .PreserveColumnInfo = True .SourceDataFile = Project.pPath & Project.pName .Refresh BackgroundQuery:=False End With end with
Voila, j'espère avoir été clair...
------------------------------- Réponse au message : -------------------------------
Si tu donnait un peu + d'info peut être qu'on pourrait t'aider. Quelle est cette base de donnée qui n'accepte qu'une seule connexion (Access ?). Quelle méthode est utilisée pour lier Excel et la base ?
-------------------- Skrol 29 www.skrol29.com --------------------
------------------------------- Réponse au message : -------------------------------
Allo...
J'utilise une base de donnée qui est ouverte a la fois par Excel et VB. Mon problème est que je ne sais pas comment couper la connexion a ma BD en Excel.
Car VB ouvre ma BD, par la suite c'est Excel pour retourner vers VB. Toutefois, quand j'essai de retourner vers VB il me marque un message d'erreur car la BD est déja ouverte. Mais une fois que j'ai importé mes données dans excel, j'ai pu besoin du lien mais je dois garder Excel ouvert.
Quoi faire a part sauvegarder le fichier et le ré-ouvrir???
Merci
|
|
|
|
mardi 16 juillet 2002 à 18:19:48 |
Re : Base Donnée ouvert par Excel et VB

skrol29
|
Ton problème vient du fait que Access n'est pas client/serveur. Il est obligé de gérer le multi-utilisateur par des vérrous de fichier.
Je vois 2 moyens pour te dépatouiler :
1/ modifier la chaîne de connexion Excel pour spécifier une lecture seule. Y'a des paramètres pour ça mais je sais plus lequel 'sorry).
2/ + propre : supprime le code généré par Excel et pilote le transfert de données en pilotant Excel depuis ton prog VB (avec OLE).
Explications : Excel utilise une connexion spéciale qui est ouverte et maintenue tant que le classeur est ouvert. C'est pratique pour un utilisateur neuneu, mais crée des complications pour les programmeurs. Sous VB, tu peux créer une instance du moteur Excel (voir CreateObject), et piloter Excel avec un nouveau classeur ou un classeur déjà existante, exactement comme le faisait le code sous Excel. C'est le même language. Quand le job est fini, tu détruit l'instance.
-------------------- Skrol 29 www.skrol29.com --------------------
------------------------------- Réponse au message : -------------------------------
Allo... je me débrouille pas si mal en C++ mais je commence en VB la... Alors, je ne connais pas encore tout les termes!
Mon programme VB utilise un controleur ADO pour ouvrir une base de donnée ACCESS...
Voici la déclaration de l'ouverture qui plante... message d'erreur: Couldn't use "; file already in use.
Cat.ActiveConnection = "provider=microsoft.jet.oledb.3.51;" & "Data source =" & link & ";"
ou link= le chemin d'acces et Private Cat As New ADOX.Catalog
c'est ici que ca plante...
par la suite, j'active les tables comme ca:
cmdado.ActiveConnection = Cat.ActiveConnection cmdado.CommandText = " select * from Project"
rsProject.CursorLocation = adUseClient rsProject.CursorType = adOpenDynamic rsProject.LockType = adLockOptimistic rsProject.Open cmdado
Private cmdado As New ADODB.command Private rsProject As New ADODB.Recordset
Pour lire excel... je fais l'équivalent de cliquer sur: Données, Données Externes, Importer des données... (cette fonction n'est pas valide en Excel97...)
Voici ce qu'il fait... project.pname=== chemin d'acces de ma BD
Dim Excel97 as Excel.application
With excel97.Application.ActiveWorkbook .Sheets.Add .ActiveSheet.Name = "All Class" With .Sheets("All Class") With .QueryTables.Add(Connection:=Array( _ "OLEDB;Provider=Microsoft.Jet.OLEDB.4.0;Password="""";User ID=Admin;Data Source=C:\" & Project.pName & ";Mode=Share Deny Write;Extended Properti" _ , _ "es="""";Jet OLEDB:System database="""";Jet OLEDB:Registry Path="""";Jet OLEDB:Database Password="""";Jet OLEDB:Engine Type=4;Jet OLEDB:D" _ , _ "atabase Locking Mode=0;Jet OLEDB:Global Partial Bulk Ops=2;Jet OLEDB:Global Bulk Transactions=1;Jet OLEDB:New Database Password=" _ , _ """"";Jet OLEDB:Create System Database=False;Jet OLEDB:Encrypt Database=False;Jet OLEDB:Don't Copy Locale on Compact=False;Jet OLED" _ , "B:Compact Without Replica Repair=False;Jet OLEDB:SFP=False"), Destination:= _ Range("C5")) .CommandType = xlCmdTable .CommandText = Array("Data") .Name = Project.pName .FieldNames = False .RowNumbers = False .FillAdjacentFormulas = False .PreserveFormatting = True .RefreshOnFileOpen = False .BackgroundQuery = True .RefreshStyle = xlInsertDeleteCells .SavePassword = True .SaveData = True .AdjustColumnWidth = False .RefreshPeriod = 0 .PreserveColumnInfo = True .SourceDataFile = Project.pPath & Project.pName .Refresh BackgroundQuery:=False End With end with
Voila, j'espère avoir été clair...
------------------------------- Réponse au message : -------------------------------
Si tu donnait un peu + d'info peut être qu'on pourrait t'aider. Quelle est cette base de donnée qui n'accepte qu'une seule connexion (Access ?). Quelle méthode est utilisée pour lier Excel et la base ?
-------------------- Skrol 29 www.skrol29.com --------------------
------------------------------- Réponse au message : -------------------------------
Allo...
J'utilise une base de donnée qui est ouverte a la fois par Excel et VB. Mon problème est que je ne sais pas comment couper la connexion a ma BD en Excel.
Car VB ouvre ma BD, par la suite c'est Excel pour retourner vers VB. Toutefois, quand j'essai de retourner vers VB il me marque un message d'erreur car la BD est déja ouverte. Mais une fois que j'ai importé mes données dans excel, j'ai pu besoin du lien mais je dois garder Excel ouvert.
Quoi faire a part sauvegarder le fichier et le ré-ouvrir???
Merci
|
|
|
|
mardi 16 juillet 2002 à 18:27:30 |
Re : Base Donnée ouvert par Excel et VB

Charlie
|
Allo...
CE que tu me parle, avec le OLE... c'est d'ajouter une feuille excel dans une de mes forms...
Si c'est ca, ca cause un petit probleme car mon but est de convertir ma base de donné en fichier Excel pour faire plein de calculs et de stat et de tracer des graphs...
Alors, je ne peux pas vraiment ne pas utiliser excel dans toute sa puissance! C'est qu'il calcul pas mal plus vite que si je le ferais faire par mon programme par ailleurs.
Bye!
------------------------------- Réponse au message : -------------------------------
Ton problème vient du fait que Access n'est pas client/serveur. Il est obligé de gérer le multi-utilisateur par des vérrous de fichier.
Je vois 2 moyens pour te dépatouiler :
1/ modifier la chaîne de connexion Excel pour spécifier une lecture seule. Y'a des paramètres pour ça mais je sais plus lequel 'sorry).
2/ + propre : supprime le code généré par Excel et pilote le transfert de données en pilotant Excel depuis ton prog VB (avec OLE).
Explications : Excel utilise une connexion spéciale qui est ouverte et maintenue tant que le classeur est ouvert. C'est pratique pour un utilisateur neuneu, mais crée des complications pour les programmeurs. Sous VB, tu peux créer une instance du moteur Excel (voir CreateObject), et piloter Excel avec un nouveau classeur ou un classeur déjà existante, exactement comme le faisait le code sous Excel. C'est le même language. Quand le job est fini, tu détruit l'instance.
-------------------- Skrol 29 www.skrol29.com --------------------
------------------------------- Réponse au message : -------------------------------
Allo... je me débrouille pas si mal en C++ mais je commence en VB la... Alors, je ne connais pas encore tout les termes!
Mon programme VB utilise un controleur ADO pour ouvrir une base de donnée ACCESS...
Voici la déclaration de l'ouverture qui plante... message d'erreur: Couldn't use "; file already in use.
Cat.ActiveConnection = "provider=microsoft.jet.oledb.3.51;" & "Data source =" & link & ";"
ou link= le chemin d'acces et Private Cat As New ADOX.Catalog
c'est ici que ca plante...
par la suite, j'active les tables comme ca:
cmdado.ActiveConnection = Cat.ActiveConnection cmdado.CommandText = " select * from Project"
rsProject.CursorLocation = adUseClient rsProject.CursorType = adOpenDynamic rsProject.LockType = adLockOptimistic rsProject.Open cmdado
Private cmdado As New ADODB.command Private rsProject As New ADODB.Recordset
Pour lire excel... je fais l'équivalent de cliquer sur: Données, Données Externes, Importer des données... (cette fonction n'est pas valide en Excel97...)
Voici ce qu'il fait... project.pname=== chemin d'acces de ma BD
Dim Excel97 as Excel.application
With excel97.Application.ActiveWorkbook .Sheets.Add .ActiveSheet.Name = "All Class" With .Sheets("All Class") With .QueryTables.Add(Connection:=Array( _ "OLEDB;Provider=Microsoft.Jet.OLEDB.4.0;Password="""";User ID=Admin;Data Source=C:\" & Project.pName & ";Mode=Share Deny Write;Extended Properti" _ , _ "es="""";Jet OLEDB:System database="""";Jet OLEDB:Registry Path="""";Jet OLEDB:Database Password="""";Jet OLEDB:Engine Type=4;Jet OLEDB:D" _ , _ "atabase Locking Mode=0;Jet OLEDB:Global Partial Bulk Ops=2;Jet OLEDB:Global Bulk Transactions=1;Jet OLEDB:New Database Password=" _ , _ """"";Jet OLEDB:Create System Database=False;Jet OLEDB:Encrypt Database=False;Jet OLEDB:Don't Copy Locale on Compact=False;Jet OLED" _ , "B:Compact Without Replica Repair=False;Jet OLEDB:SFP=False"), Destination:= _ Range("C5")) .CommandType = xlCmdTable .CommandText = Array("Data") .Name = Project.pName .FieldNames = False .RowNumbers = False .FillAdjacentFormulas = False .PreserveFormatting = True .RefreshOnFileOpen = False .BackgroundQuery = True .RefreshStyle = xlInsertDeleteCells .SavePassword = True .SaveData = True .AdjustColumnWidth = False .RefreshPeriod = 0 .PreserveColumnInfo = True .SourceDataFile = Project.pPath & Project.pName .Refresh BackgroundQuery:=False End With end with
Voila, j'espère avoir été clair...
------------------------------- Réponse au message : -------------------------------
Si tu donnait un peu + d'info peut être qu'on pourrait t'aider. Quelle est cette base de donnée qui n'accepte qu'une seule connexion (Access ?). Quelle méthode est utilisée pour lier Excel et la base ?
-------------------- Skrol 29 www.skrol29.com --------------------
------------------------------- Réponse au message : -------------------------------
Allo...
J'utilise une base de donnée qui est ouverte a la fois par Excel et VB. Mon problème est que je ne sais pas comment couper la connexion a ma BD en Excel.
Car VB ouvre ma BD, par la suite c'est Excel pour retourner vers VB. Toutefois, quand j'essai de retourner vers VB il me marque un message d'erreur car la BD est déja ouverte. Mais une fois que j'ai importé mes données dans excel, j'ai pu besoin du lien mais je dois garder Excel ouvert.
Quoi faire a part sauvegarder le fichier et le ré-ouvrir???
Merci
|
|
|
|
mardi 16 juillet 2002 à 18:51:10 |
Re : Base Donnée ouvert par Excel et VB

skrol29
|
>CE que tu me parle, avec le OLE... c'est d'ajouter >une feuille excel dans une de mes forms...
Non, non. Pas de l'OLE incorporée. Pas de feuille Excel dans tes forms. Beark caca.
Il s'agit de l'instruction AppExcel = CreateObject("excel.application")
Tu peux aussi ajouter la Référence 'Microsoft Excel' à ton project, et le code suivant dans ta proc : Dim AppExcel as Excel.Application ... Set AppExcel = New Excel.Application 'charge Excel ... Set AppExcel = Nothing 'décharge Excel
En ajoutant la référence, c'est + facile à programmer car l'environnement de prog te liste des propritétés et méthode d'Excel.
Maintenant, ta variable AppExcel contient un instance de la classe Excel entière. C'est à dire que tu peux faire depuis ton appli tout ce que tu faisait sous Excel, exctement de la même manière. Par exemple : AppExcel.ActiveWorkbook.Sheets.Add
Il te reste à remplir les cellules une par une.
Ha oui au fait : les graph existent aussi déjà sous Access. Ce sont les mêmes graph que sous Excel. C'est peut être + simple.
-------------------- Skrol 29 www.skrol29.com --------------------
|
|
|
|
mardi 16 juillet 2002 à 19:12:36 |
Re : Base Donnée ouvert par Excel et VB

Charlie
|
C'est exactement de cette facon que je procède...
Au départ, j'ouvrais ma BD avec VB et je copiais les infos dans excel mais je me suis rendu compte que c'était beaucoup plus rapide (1min de moins) d'ouvrir la BD avec Excel meme si j'avais a interchanger des colonnes.
Faire une boucle qui parcours ma BD et qui acceder a mes recordset étais tres lent... 1min environ. Maintenant, j'importe mes données et je fais tout mes traitements en 45sec... Alors, le gain de temps est énorme!
------------------------------- Réponse au message : -------------------------------
>CE que tu me parle, avec le OLE... c'est d'ajouter >une feuille excel dans une de mes forms...
Non, non. Pas de l'OLE incorporée. Pas de feuille Excel dans tes forms. Beark caca.
Il s'agit de l'instruction AppExcel = CreateObject("excel.application")
Tu peux aussi ajouter la Référence 'Microsoft Excel' à ton project, et le code suivant dans ta proc : Dim AppExcel as Excel.Application ... Set AppExcel = New Excel.Application 'charge Excel ... Set AppExcel = Nothing 'décharge Excel
En ajoutant la référence, c'est + facile à programmer car l'environnement de prog te liste des propritétés et méthode d'Excel.
Maintenant, ta variable AppExcel contient un instance de la classe Excel entière. C'est à dire que tu peux faire depuis ton appli tout ce que tu faisait sous Excel, exctement de la même manière. Par exemple : AppExcel.ActiveWorkbook.Sheets.Add
Il te reste à remplir les cellules une par une.
Ha oui au fait : les graph existent aussi déjà sous Access. Ce sont les mêmes graph que sous Excel. C'est peut être + simple.
-------------------- Skrol 29 www.skrol29.com --------------------
|
|
|
Cette discussion est classé dans : base, vb, donnée, excel, ouvert
Répondre à ce message
Sujets en rapport avec ce message
Base Donnée ouvert par Excel et VB [ par Charlie ]
Allo...J'utilise une base de donnée qui est ouverte a la fois par Excel et VB. Mon problème est que je ne sais pas comment couper la connexion a ma BD
vb + base de donnée Excel [ par hamid_raf ]
Salut mes amis,je suis entrain de réaliser dans le cadre d'un stage, une application VB plus Excel, l'interface en VB et la base de donnée est sous Ex
Création d'une base de donnée excel en vb.net [ par toxjamescook ]
bonjourVoila j'ai comme projet de faire en programme une base de donnée sous forme de tableau le but étant de pouvoir ouvrir cette base de donnée sur
base de donnée excel avec VB [ par elvis78 ]
bonjour a tous.j'aimerai savoir comment on peut a partir de VB de creer une feuille excel.je pense que l'on peut car ce sont tous les deux des produit
Création d'une Base de donnée Excel [ par cdrique ]
Cdrique Je suis un grand débutant du VB doublé d'un trés trés petit devellopeur. Je souhaite récupérer des données numériques inclusent dans des case
lier une base de donnée excel a combobox vb6 [ par UrbanSyphon ]
Bonjour,J' ai une feuille excel appelé engins qui appartient au classeur nommé compacteurs_vm . Je voudrai utiliser les valeurs de la colonne 2 pour l
vb et excel [ par Fabian26 ]
J'ai fait un programme qui capte des données sur le Port série. Ensuite je dois envoyer ces données dans un tableau Excel. Le problème est que je reco
Compacter base de donnée vb access [ par manhino ]
bonjour,J'ai un petit soucis car je voudrai compacter une table de ma base de donnée par programmation vba.J'ai une base de donnée dans laquelle j'ai
modification d'une base de donnée [ par orzhov54 ]
bonjour, je suis entrain de faire un logiciel en Visual Basic sous VB 2005, qui doit aller chercher des informations dans une base de donnée grace a u
lier vb à une base de données en excel [ par oliboukou ]
je suis en train de faire une application vb mais il me faut aller prendre des données dans une base excel, et ensuite les utiliser dans des formules;
Livres en rapport
|
Téléchargements
Logiciels à télécharger sur le même thème :
|