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\plansdata.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\plansdata.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
Jackflash
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\plansdata.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\plansdata.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
Jackflash
Pièces jointes
Dernière édition: