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

Membres actuellement en ligne

Aucun membre en ligne actuellement.

Statistiques des forums

Discussions
312 453
Messages
2 088 551
Membres
103 881
dernier inscrit
malbousquet