Excel / VB MAJ Fichier par un autre fichier

PISKAL66 Messages postés 2 Statut Membre -  
PISKAL66 Messages postés 2 Statut Membre -
Bonjour,

Dans le cadre de mon travail j'ai besoin d'actualiser un fichier que j'appellerai FICHIER 1 à partir d'un autre fichier Excel appelé FICHIER 2. A chaque ouverture de mon FICHIER 1 il faut qu'EXCEL le mette à jour à partir du fichier 2 tel que:
FICHIER 1
colonne A
ID CLIENT
284466
47464
11564
4647/79

FICHIER 1
colonne B
Facture Payée?

FICHIER 2
colonne X
ID CLIENT
48938
98765
12133
47464

FICHIER 2
colonne Y
FACTURE PAYEE
oui
non
non
oui

Lorsque la conne Y du fichier 2 est mise à jour, à l'ouverture du FICHIER 1 la mention oui ou non doit apparaître dans la colonne B en fonction du même ID client. A noter certains ID CLIENT du fichier 2 ne sont pas présents dans le fichier 1.

Si un génie d'Excel peut m'aider ça serait gentil.

Merci

1 réponse

  1. Polux31 Messages postés 7219 Statut Membre 1 204
     
    Bonjour,

    Tu peux le faire avec une connexion ADO.

    Il faut activé la référence Microsoft ActiveX Data Objects x.xx Library.

    Ensuite dans un module, copier/coller ce code :

    Sub MAJ()
    Dim ws As Worksheet
    Dim lig As Long
    Dim str As String
    
        Set ws = Worksheets(1)
        lig = 2
        While ws.Range("A" & lig).Value <> ""
            str = queryOpen(ws.Range("A" & lig).Value)
            ws.Range("B" & lig).Value = str
        lig = lig + 1
        Wend
        
    End Sub
    
    Function queryOpen(ByVal Id As Long) As String
        Dim Source As ADODB.Connection
        Dim Requete As ADODB.Recordset
        Dim Fichier As String, xSQL As String
        Dim i As Long
        
        Fichier = "C:\Fichier2.xls" 'Mettre le chemin complet de la base
        
        Set Source = New ADODB.Connection
        Source.Open "Provider = Microsoft.Jet.OLEDB.4.0;" & _
            "data source=" & Fichier & ";" & _
            "extended properties=""Excel 8.0;HDR=Yes"""
        
        xSQL = "SELECT [Feuil1$].FACTURE PAYEE FROM [Feuil1$] " & _
            "WHERE [Feuil1$].ID CLIENT =" & Id
        
        Set Requete = New ADODB.Recordset
        Set Requete = Source.Execute(xSQL)
        
        queryOpen = Requete.fields(0)
        
        Requete.Close
        Source.Close
        
    End Function


    Et pour lancer la MAJ lors de l'ouverture, il faut aller dans l'éditeur de Thisworkbook et copier ce code:

    Private Sub Workbook_Open()
        Module1.MAJ
    End Sub


    ;o)
    1
    1. PISKAL66 Messages postés 2 Statut Membre
       
      bonsoir,

      ouf j'étais pas prêt de trouver !! merci beaucoup je vais essayer de tester ça !!

      Merci
      0