Problème connexion Excel-Access
Bonjour à tous !
Si aujourd'hui je vous écris, c'est parce que je rencontre un problème de connexion entre Excel et Access. J'ai déjà fait plusieurs recherche, mais sans résultat.
Bref, voici ma situation actuelle :
Je suis actuellement en train de finir un programme sur Excel qui réalise 3 étapes importantes :
Étape 1 : Importe des données, sur la première feuille Excel, provenant d'autres tableurs Excel (Réalisé en VBA)
Étape 2 : Importe des données, sur la deuxième feuille Excel, provenant d'une requête d'une base de données Access (Pour cela, j'ai utilisé l'assistant pour importer les données dans Excel
Données/A partir d'un fichier Access).
Étape 3 : Et enfin, après plusieurs opérations de mises à jour effectuées, je remets à jour les données et/ou intègre les nouvelles données dans la base de donnée initiale
(Utilisé à l'étape 2).
Le problème ?
Quand j'exécute le code d'intégration ou Mise à jour de données, j'ai une erreur :
"Impossible d'utiliser E:\....\Suivi.mdb, le fichier est en cours d'utilisation"
J'en déduis qu'il faut que lorsque que je lance ma macro d'intégration/mise à jour des fichiers, il faut que je ferme la connexion Excel->Access existante de l'étape 2.
Comment puis-je faire en VBA, pour que dés que je lance mon code d'intégration/Mises à jour, la connexion de la feuille 2 soit fermée et ainsi libérer ma base de donnée...
Merci de m'avoir lu :)
A titre informatif voici le code VBA pour l'intégration de nouvelles données :
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47
| Private Sub CommandButton2_Click()
Dim maTable As String
derniere_ligne_feuil3 = Sheets(3).Cells.Find("*", , , , , xlPrevious).Row
premiere_ligne = 1
Dim source As database
Dim rsT As DAO.Recordset
Set source = dbengine.OpenDatabase("E:\Suivi-trans.mdb")
Set rsT = source.OpenRecordset("Base_affaire", dbopendynaset)
'Base_affaire est la requête dans laquelle j'ajoute les nouvelles données
derniere_ligne_feuil3 = Sheets(3).Cells.Find("*", , , , , xlPrevious).Row
For n = 1 To derniere_ligne_feuil3
If Cells(lig, 10) = "Conserver" Then
Code_Affaire = Sheets(3).Cells(n, 1)
nouvLibelle = Sheets(3).Cells(n, 2)
nouvAgence = Sheets(3).Cells(n, 3)
With rsT
.MoveFirst
.FindFirst ("N°_affaire= " & "'" & (Code_Affaire) & "'")
If .NoMatch Then
.AddNew
.Fields("N°_affaire") = Code_Affaire
.Fields("Désignation_affaire") = nouvLibelle
.Fields("Agence") = nouvAgence
.Update
Else
MsgBox "valeur " & Code_affaire & "déjà existant"
End If
End With
End If
Next
rsT.Close
source.Close
End Sub |
A votre bon coeur ;)