Fermer une connexion Excel-> Access

franzoose

XLDnaute Nouveau
Bonjour à tous !

Si aujourd'hui je vous écris, c'est parce que je rencontre un problème de connexion entre Excel et Access

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:
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
 

Discussions similaires

Statistiques des forums

Discussions
312 235
Messages
2 086 476
Membres
103 228
dernier inscrit
malik832