EXCEL 2000 VBA prob connexion à Access 2000

Fermé
vortexjack Messages postés 4 Date d'inscription lundi 30 avril 2012 Statut Membre Dernière intervention 22 mai 2012 - 30 avril 2012 à 23:24
michel_m Messages postés 16603 Date d'inscription lundi 12 septembre 2005 Statut Contributeur Dernière intervention 16 décembre 2023 - 22 mai 2012 à 12:23
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
A voir également:

6 réponses

michel_m Messages postés 16603 Date d'inscription lundi 12 septembre 2005 Statut Contributeur Dernière intervention 16 décembre 2023 3 310
1 mai 2012 à 08:41
Bonjour

Sur quelle ligne se situe l'erreur ?
0
vortexjack Messages postés 4 Date d'inscription lundi 30 avril 2012 Statut Membre Dernière intervention 22 mai 2012
2 mai 2012 à 21:43
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.
0
vortexjack Messages postés 4 Date d'inscription lundi 30 avril 2012 Statut Membre Dernière intervention 22 mai 2012
10 mai 2012 à 10:24
help, help, help
0
michel_m Messages postés 16603 Date d'inscription lundi 12 septembre 2005 Statut Contributeur Dernière intervention 16 décembre 2023 3 310
10 mai 2012 à 10:47
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
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
vortexjack Messages postés 4 Date d'inscription lundi 30 avril 2012 Statut Membre Dernière intervention 22 mai 2012
22 mai 2012 à 11:49
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
0
michel_m Messages postés 16603 Date d'inscription lundi 12 septembre 2005 Statut Contributeur Dernière intervention 16 décembre 2023 3 310
22 mai 2012 à 12:23
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
0