Excel / VB MAJ Fichier par un autre fichier

Fermé
PISKAL66 Messages postés 2 Date d'inscription mercredi 2 juin 2010 Statut Membre Dernière intervention 3 juin 2010 - 2 juin 2010 à 23:26
PISKAL66 Messages postés 2 Date d'inscription mercredi 2 juin 2010 Statut Membre Dernière intervention 3 juin 2010 - 3 juin 2010 à 20:50
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


A voir également:

1 réponse

Polux31 Messages postés 6917 Date d'inscription mardi 25 septembre 2007 Statut Membre Dernière intervention 1 novembre 2016 1 204
3 juin 2010 à 10:59
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
PISKAL66 Messages postés 2 Date d'inscription mercredi 2 juin 2010 Statut Membre Dernière intervention 3 juin 2010
3 juin 2010 à 20:50
bonsoir,

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

Merci
0