EXCEL 2000 VBA prob connexion à Access 2000
vortexjack
Messages postés
4
Statut
Membre
-
michel_m Messages postés 18903 Date d'inscription Statut Contributeur Dernière intervention -
michel_m Messages postés 18903 Date d'inscription Statut Contributeur Dernière intervention -
Bonjour à tous,
J'ai une base access 2000 répertoriant + de 18000 plans laquelle se situe sur réseau
dans un répertoire connexe, j'ai créé u fichier intitulé Planothèque.xls (excel 1997-2003) qui interroge cette base access et en rapatrie les données uniquement dans un but d'information pour l'utilisateur, aucune modification des données.
Ce fichier excel est appelé à être ouvert par plusieurs utilisateurs en même temps lesquels sont susceptibles d'interroger en même temps (mais il y a peu de chance) la base de données access.
Tout au plus, plusieurs utilisateurs ouvriront-ils en même temps le fichier excel mais il y a peu de chance pour qu'il envoient une requête simultanée mais ca peut arriver.
Lors de l'ouverture de ce fichier excel, via le code VBA, excel interroge déjà cette database access pour remplir des listes déroulantes du formulaire d'interrogation Planothèque Excel.
Pour ce faire, j'utilise le code suivant :
Sub remplissageLDrouteatlasàrechercher()
On Error GoTo errorHandler
Dim Str As String, x As Integer
Dim ConnectString As String
Dim ADOConnection As ADODB.Connection
'Connexion à la base
Set ADOConnection = New ADODB.Connection
ConnectString = "Provider=Microsoft.jet.oledb.4.0;Data source=\\S100n1\D142\Planotheque\plans\database\pl ansdata.mdb;persist security info = false"
ADOConnection.Open ConnectString
Dim adorecordset As ADODB.Recordset
'La requete MySQL dans ta table
Str = "SELECT [atlas des routes de D142].[code atlas], [atlas des routes de D142].Commune FROM [atlas des routes de D142] "
Str = Str & "WHERE ((([atlas des routes de D142].[n° route]) = " & Chr(34) & Me.routeàrechercher.Value & Chr(34) & ")) ORDER BY [atlas des routes de D142].[ordre de tri]"
Set adorecordset = New ADODB.Recordset
adorecordset.Open Str, ADOConnection, adOpenKeyset, adLockOptimistic, adCmdText
'On se place sur le 1er enegistrment (Nom Long)
adorecordset.MoveFirst
'Début de la boucle pour extraire les résultats
For x = o To Me.route_atlasàrechercher.ListIndex
Me.route_atlasàrechercher.RemoveItem (x)
Next x
Me.route_atlasàrechercher.Clear
Do While Not adorecordset.EOF()
With Me.route_atlasàrechercher
.AddItem adorecordset![code atlas]
.List(.ListCount - 1, 1) = adorecordset![Commune]
End With
adorecordset.MoveNext
Loop
'Fin de la boucle
'Fin de la connexion
ADOConnection.Close
Set ADOConnection = Nothing
Set adorecordset = Nothing
Exit Sub
errorHandler:
'indique le numéro et la description de l'erreur survenue
MsgBox Err.Number & vbLf & Err.Description & Chr(13) & Chr(13) & "Veuillez noter le message d'erreur et le communiquer à Jackflash"
End Sub
ou encore
Private Sub routeàrechercher_GotFocus()
On Error GoTo errorHandler
If Me.routeàrechercher.ListCount > 0 Then Exit Sub
Dim Str As String
Dim ConnectString As String
Dim ADOConnection As ADODB.Connection
'Connexion à la base
Set ADOConnection = New ADODB.Connection
ConnectString = "Provider=Microsoft.jet.oledb.4.0;Data source=\\S100n1\D142\Planotheque\plans\database\pl ansdata.mdb;persist security info = false"
ADOConnection.Open ConnectString
Dim adorecordset As ADODB.Recordset
'La requete MySQL dans ta table
Str = "SELECT routes.[n° route] FROM routes ORDER BY routes.[Type route], Val([numéro route]), routes.[n° route]"
Set adorecordset = New ADODB.Recordset
adorecordset.Open Str, ADOConnection, adOpenKeyset, adLockOptimistic, adCmdText
'On se place sur le 1er enegistrment (Nom Long)
adorecordset.MoveFirst
'Début de la boucle pour extraire les résultats
Do While Not adorecordset.EOF()
Me.routeàrechercher.AddItem adorecordset![n° route]
adorecordset.MoveNext
Loop
'Fin de la boucle
'Fin de la connexion
ADOConnection.Close
Set ADOConnection = Nothing
Set adorecordset = Nothing
Exit Sub
errorHandler:
'indique le numéro et la description de l'erreur survenue
MsgBox Err.Number & vbLf & Err.Description & Chr(13) & Chr(13) & "Veuillez noter le message d'erreur et le communiquer à à Jackflash - merci."
End Sub
Que je mette ce fichier Planothèque.xls en mode partagé ou non, protégé ou non, excel me renvoie un message d'erreur du type "Erreur d'exécution '-2147024864" mais ce n'est pas exactement ce n° d'erreur et le fichier ne fonctionne plus correctement car il n'a pas pu exécuter son code correctement ni remplir les différentes liste déroulante.
POuvez-vous m'aider ?
Merci et bonne soirée
vortexjack
J'ai une base access 2000 répertoriant + de 18000 plans laquelle se situe sur réseau
dans un répertoire connexe, j'ai créé u fichier intitulé Planothèque.xls (excel 1997-2003) qui interroge cette base access et en rapatrie les données uniquement dans un but d'information pour l'utilisateur, aucune modification des données.
Ce fichier excel est appelé à être ouvert par plusieurs utilisateurs en même temps lesquels sont susceptibles d'interroger en même temps (mais il y a peu de chance) la base de données access.
Tout au plus, plusieurs utilisateurs ouvriront-ils en même temps le fichier excel mais il y a peu de chance pour qu'il envoient une requête simultanée mais ca peut arriver.
Lors de l'ouverture de ce fichier excel, via le code VBA, excel interroge déjà cette database access pour remplir des listes déroulantes du formulaire d'interrogation Planothèque Excel.
Pour ce faire, j'utilise le code suivant :
Sub remplissageLDrouteatlasàrechercher()
On Error GoTo errorHandler
Dim Str As String, x As Integer
Dim ConnectString As String
Dim ADOConnection As ADODB.Connection
'Connexion à la base
Set ADOConnection = New ADODB.Connection
ConnectString = "Provider=Microsoft.jet.oledb.4.0;Data source=\\S100n1\D142\Planotheque\plans\database\pl ansdata.mdb;persist security info = false"
ADOConnection.Open ConnectString
Dim adorecordset As ADODB.Recordset
'La requete MySQL dans ta table
Str = "SELECT [atlas des routes de D142].[code atlas], [atlas des routes de D142].Commune FROM [atlas des routes de D142] "
Str = Str & "WHERE ((([atlas des routes de D142].[n° route]) = " & Chr(34) & Me.routeàrechercher.Value & Chr(34) & ")) ORDER BY [atlas des routes de D142].[ordre de tri]"
Set adorecordset = New ADODB.Recordset
adorecordset.Open Str, ADOConnection, adOpenKeyset, adLockOptimistic, adCmdText
'On se place sur le 1er enegistrment (Nom Long)
adorecordset.MoveFirst
'Début de la boucle pour extraire les résultats
For x = o To Me.route_atlasàrechercher.ListIndex
Me.route_atlasàrechercher.RemoveItem (x)
Next x
Me.route_atlasàrechercher.Clear
Do While Not adorecordset.EOF()
With Me.route_atlasàrechercher
.AddItem adorecordset![code atlas]
.List(.ListCount - 1, 1) = adorecordset![Commune]
End With
adorecordset.MoveNext
Loop
'Fin de la boucle
'Fin de la connexion
ADOConnection.Close
Set ADOConnection = Nothing
Set adorecordset = Nothing
Exit Sub
errorHandler:
'indique le numéro et la description de l'erreur survenue
MsgBox Err.Number & vbLf & Err.Description & Chr(13) & Chr(13) & "Veuillez noter le message d'erreur et le communiquer à Jackflash"
End Sub
ou encore
Private Sub routeàrechercher_GotFocus()
On Error GoTo errorHandler
If Me.routeàrechercher.ListCount > 0 Then Exit Sub
Dim Str As String
Dim ConnectString As String
Dim ADOConnection As ADODB.Connection
'Connexion à la base
Set ADOConnection = New ADODB.Connection
ConnectString = "Provider=Microsoft.jet.oledb.4.0;Data source=\\S100n1\D142\Planotheque\plans\database\pl ansdata.mdb;persist security info = false"
ADOConnection.Open ConnectString
Dim adorecordset As ADODB.Recordset
'La requete MySQL dans ta table
Str = "SELECT routes.[n° route] FROM routes ORDER BY routes.[Type route], Val([numéro route]), routes.[n° route]"
Set adorecordset = New ADODB.Recordset
adorecordset.Open Str, ADOConnection, adOpenKeyset, adLockOptimistic, adCmdText
'On se place sur le 1er enegistrment (Nom Long)
adorecordset.MoveFirst
'Début de la boucle pour extraire les résultats
Do While Not adorecordset.EOF()
Me.routeàrechercher.AddItem adorecordset![n° route]
adorecordset.MoveNext
Loop
'Fin de la boucle
'Fin de la connexion
ADOConnection.Close
Set ADOConnection = Nothing
Set adorecordset = Nothing
Exit Sub
errorHandler:
'indique le numéro et la description de l'erreur survenue
MsgBox Err.Number & vbLf & Err.Description & Chr(13) & Chr(13) & "Veuillez noter le message d'erreur et le communiquer à à Jackflash - merci."
End Sub
Que je mette ce fichier Planothèque.xls en mode partagé ou non, protégé ou non, excel me renvoie un message d'erreur du type "Erreur d'exécution '-2147024864" mais ce n'est pas exactement ce n° d'erreur et le fichier ne fonctionne plus correctement car il n'a pas pu exécuter son code correctement ni remplir les différentes liste déroulante.
POuvez-vous m'aider ?
Merci et bonne soirée
vortexjack
A voir également:
- EXCEL 2000 VBA prob connexion à Access 2000
- Gmail connexion - Guide
- Liste déroulante excel - Guide
- Word et excel gratuit - Guide
- Déplacer colonne excel - Guide
- Si ou excel - Guide
6 réponses
Bonsoir,
merci de t'intéresser à mon problème
je ne saurais pas le dire mais j'ai l'impression que le problème vient de l'environement multi-utilisateur car quand j'utilise seul ce fichier, aucun problème n'apparaît. Je compliquerai encore l'histoire en disant que j'ai fait le test en ouvrant ledit fichier sur plusieurs ordinateur en même temps et que cela n'avait pas posé de problème.
Maintenant l'excécution de certains de mes fichiers en format XLS 2000 ouvert avec Excel 2007 et réenregistré en format compatible Excel 1997-2003 pose aussi problème alors que dans leur version ancienne exécutée avec Excel 2000, on ne rencontre aucun problème.
Là,j'ai la sensation que c'est dû à une ou plusieurs DLL manquantes dans la version de Excel 2007 installée sur nos PC.
merci de t'intéresser à mon problème
je ne saurais pas le dire mais j'ai l'impression que le problème vient de l'environement multi-utilisateur car quand j'utilise seul ce fichier, aucun problème n'apparaît. Je compliquerai encore l'histoire en disant que j'ai fait le test en ouvrant ledit fichier sur plusieurs ordinateur en même temps et que cela n'avait pas posé de problème.
Maintenant l'excécution de certains de mes fichiers en format XLS 2000 ouvert avec Excel 2007 et réenregistré en format compatible Excel 1997-2003 pose aussi problème alors que dans leur version ancienne exécutée avec Excel 2000, on ne rencontre aucun problème.
Là,j'ai la sensation que c'est dû à une ou plusieurs DLL manquantes dans la version de Excel 2007 installée sur nos PC.
bonjour,
ma question pour essayer de t'aider
Sur quelle ligne se situe l'erreur ?
ta réponse
<ital>je ne saurais pas le dire mais j'ai l'impression
Dans la grande majorité des cas, pas de réponse égale question imprécise ou mal formulée.
De plus, les intervenants (qui sont tous bénévoles, je te le rappelle), sont souvent rebutés par un manque d'effort du questionneur.
--</ital>
Michel
ma question pour essayer de t'aider
Sur quelle ligne se situe l'erreur ?
ta réponse
<ital>je ne saurais pas le dire mais j'ai l'impression
Dans la grande majorité des cas, pas de réponse égale question imprécise ou mal formulée.
De plus, les intervenants (qui sont tous bénévoles, je te le rappelle), sont souvent rebutés par un manque d'effort du questionneur.
--</ital>
Michel
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
Bonjour michel_m,
Je te remercie de t'intéresser à mon problème.
Malheureusement, excel ne me signale pas à quel endroit de ma procédure le bas blesse.
Tout au plus me renseigne-t-il le code de l'erreur qui est
" -2147217904 aucune valeur donnée pour un ou plusieurs des paramètres requis."
C'est tout ce que j'ai comme info.
Comme déjà dit auparavant, j'ai la nette impression qu'il s'agit d'un problème de référence non présente sur le PC exécutant mon fichier car sur le mien ou sur d'autre pas de problème à moins que ce soit l'environnement multi-utilisateur.
En continuant mes recherches sur le net, certains forums me confortent dans ma réflexion et d'autres, suggèrent que mes requêtes SQL multi-tables sont trop complexes pour excel. SI tel était le cas, je ne vois pas pourquoi elles fonctionneraient sur mon PC et ceux de mes collègues de mon bureau alors que mes collègues d'un autre bureau ne parvienne pas à les utiliser sans problème.
Il est à noter que le PC où le problème survient rencontre parfois le problème dénoncé mais pas à chaque utilisation du fichier, ce qui rend l'étude du problème encore plus hard.
Déjà merci de ton intérêt et bonne journée
Vortexjack
Je te remercie de t'intéresser à mon problème.
Malheureusement, excel ne me signale pas à quel endroit de ma procédure le bas blesse.
Tout au plus me renseigne-t-il le code de l'erreur qui est
" -2147217904 aucune valeur donnée pour un ou plusieurs des paramètres requis."
C'est tout ce que j'ai comme info.
Comme déjà dit auparavant, j'ai la nette impression qu'il s'agit d'un problème de référence non présente sur le PC exécutant mon fichier car sur le mien ou sur d'autre pas de problème à moins que ce soit l'environnement multi-utilisateur.
En continuant mes recherches sur le net, certains forums me confortent dans ma réflexion et d'autres, suggèrent que mes requêtes SQL multi-tables sont trop complexes pour excel. SI tel était le cas, je ne vois pas pourquoi elles fonctionneraient sur mon PC et ceux de mes collègues de mon bureau alors que mes collègues d'un autre bureau ne parvienne pas à les utiliser sans problème.
Il est à noter que le PC où le problème survient rencontre parfois le problème dénoncé mais pas à chaque utilisation du fichier, ce qui rend l'étude du problème encore plus hard.
Déjà merci de ton intérêt et bonne journée
Vortexjack
Bonjour,
pour savoir quelle ligne:
tu vas dans l'éditeur VBA
tu cliques dans la macro qui plante
et tu lances la macro en pas à pas (touche F8)
quand ca sautera à la ligne errorhandl, ce sera la ligne fautive
maintenant, si ta macro a été écrite avec XL2007 et quelle est utilisée avec XL 2000, tu risques des problèmes
au besoin met en pièces jointes une capture d'écran des dll utilisée (outils-ref)
mais sans connaitre la ligne fautive, toute aide sera guère possible
pour savoir quelle ligne:
tu vas dans l'éditeur VBA
tu cliques dans la macro qui plante
et tu lances la macro en pas à pas (touche F8)
quand ca sautera à la ligne errorhandl, ce sera la ligne fautive
maintenant, si ta macro a été écrite avec XL2007 et quelle est utilisée avec XL 2000, tu risques des problèmes
au besoin met en pièces jointes une capture d'écran des dll utilisée (outils-ref)
mais sans connaitre la ligne fautive, toute aide sera guère possible