Excel / VB MAJ Fichier par un autre fichier
PISKAL66
Messages postés
2
Statut
Membre
-
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
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
-
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)