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 :
A votre bon coeur
Code : Sélectionner tout - Visualiser dans une fenêtre à part
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![]()
Partager