Comparer deux fichiers excel à l'aide d'une macro VBA
SaidB22
Messages postés
2
Date d'inscription
Statut
Membre
Dernière intervention
-
ThauTheme Messages postés 1442 Date d'inscription Statut Membre Dernière intervention -
ThauTheme Messages postés 1442 Date d'inscription Statut Membre Dernière intervention -
Bonjour,
Étant novice sur le langage VBA, j'aimerais savoir si quelqu'un parmi vous pourrait m'aider à mettre en place une macro qui me permettrait de comparer deux colonnes sur deux fichiers Excel distincts et compléter d'autres colonnes sur le fichier de destination, quand la condition est vérifiée ( quand les valeurs des cellules comparées sont identiques ) .
En résumé, j'aimerais comparer les valeurs de la colonne B du fichier A avec les valeurs de la colonne F du fichier B, si les valeurs sont identiques, il faudrait remplir d'autres colonnes sur le fichier B en se basant sur le fichier A.
Par avance merci de votre aide !


Étant novice sur le langage VBA, j'aimerais savoir si quelqu'un parmi vous pourrait m'aider à mettre en place une macro qui me permettrait de comparer deux colonnes sur deux fichiers Excel distincts et compléter d'autres colonnes sur le fichier de destination, quand la condition est vérifiée ( quand les valeurs des cellules comparées sont identiques ) .
En résumé, j'aimerais comparer les valeurs de la colonne B du fichier A avec les valeurs de la colonne F du fichier B, si les valeurs sont identiques, il faudrait remplir d'autres colonnes sur le fichier B en se basant sur le fichier A.
Par avance merci de votre aide !
A voir également:
- Comment comparer deux fichiers excel
- Liste déroulante excel - Guide
- Nombre de jours entre deux dates excel - Guide
- Comment réduire la taille d'un fichier - Guide
- Comment ouvrir un fichier epub ? - Guide
- Word et excel gratuit - Guide
3 réponses
Bonjour Said, bonjour le forum,
Pour éviter de perdre du temps, je te propose de nous envoyer un fichier Excel parce que je doute que PhotoChope soit capable de faire ça. Et aussi, plus de précision sur les autres colonnes à remplir. Ton problème me paraît relativement simple à résoudre avec le fichier qui va bien.
Pour envoyer un fichier il y a plein de sites hébergeurs de fichiers. Par exemple : https://www.cjoint.com/
Pour éviter de perdre du temps, je te propose de nous envoyer un fichier Excel parce que je doute que PhotoChope soit capable de faire ça. Et aussi, plus de précision sur les autres colonnes à remplir. Ton problème me paraît relativement simple à résoudre avec le fichier qui va bien.
Pour envoyer un fichier il y a plein de sites hébergeurs de fichiers. Par exemple : https://www.cjoint.com/
Bonjour @ThauTheme,
Merci pour ta réponse.
En effet, je souhaiterais comparer deux fichiers Excel A et B et effectuer quelques manips quand la condition est vérifiée ou pas :
1 - On compare la colonne B du fichier A avec la colonne F du fichier B, si les cellules sont identiques :
--> On remplit les colonnes vertes du fichier B avec les données correspondantes, contenues dans les colonnes vertes du fichier A.
Autre manip supplémentaire :
- Si on s’aperçoit qu'il existe des données sur la colonne B du fichier A mais pas dans la colonne F du fichier B, on ajoute la ligne avec les données correspondantes contenues dans les colonnes vertes du fichier A.
Voici le lien vers les fichiers en question : https://www.cjoint.com/c/LBpkdSUlJrz
Merci pour ta réponse.
En effet, je souhaiterais comparer deux fichiers Excel A et B et effectuer quelques manips quand la condition est vérifiée ou pas :
1 - On compare la colonne B du fichier A avec la colonne F du fichier B, si les cellules sont identiques :
--> On remplit les colonnes vertes du fichier B avec les données correspondantes, contenues dans les colonnes vertes du fichier A.
Autre manip supplémentaire :
- Si on s’aperçoit qu'il existe des données sur la colonne B du fichier A mais pas dans la colonne F du fichier B, on ajoute la ligne avec les données correspondantes contenues dans les colonnes vertes du fichier A.
Voici le lien vers les fichiers en question : https://www.cjoint.com/c/LBpkdSUlJrz
Bonjour Said, bonjour le forum,
Si tes deux fichiers sont ouverts, le code ci-dessous à placer dans le fichier A (qui, par conséquent deviendra Fichier A.xlsm) :
Si tes deux fichiers sont ouverts, le code ci-dessous à placer dans le fichier A (qui, par conséquent deviendra Fichier A.xlsm) :
Sub Macro1() Dim CA As Workbook 'déclare la variable CA (Calsseur A) Dim OA As Worksheet 'déclare la variable OA (Onglet A) Dim CB As Workbook 'déclare la variable CB (Calsseur B) Dim OB As Worksheet 'déclare la variable OB (Onglet B) Dim TVA As Variant 'déclare la variable TVA (Tableau des Valeurs A) Dim TVB As Variant 'déclare la variable TVB (Tableau des Valeurs B) Dim I As Integer 'déclare la variable I (Incrément) Dim J As Integer 'déclare la variable J (incrément) Dim TEST As Boolean 'déclare la variable TEST Dim PLV As Integer 'décalre la varaible PL (Prelière Ligne vide) Set CA = ThisWorkbook 'définit le classeur CA Set OA = CA.Worksheets("PUBLISHING TEAM Facturation 2") 'définit l'onglet OA Set CB = Workbooks("Fichier B.xlsx") 'définit le classeur CB Set OB = CB.Worksheets("Feuil1") 'définit l'onglet OB TVA = OA.Range("A1").CurrentRegion 'définit le tableau des valeurs TVA TVB = OB.Range("A1").CurrentRegion 'définit le tableau des valeurs TVB For I = 2 To UBound(TVA, 1) 'boucle 1 : sur toutes les lignes I du tableau des valeurs TVA (en partant de la seconde) TEST = False 'définit la variable TEST For J = 2 To UBound(TVB, 1) 'boucle 2 : sur toutes les lignes J du tableau des valeurs TVB (en partant de la seconde) 'condition : si le texte après le tiret de la donnée ligne I colonne 2 de TVA est égal a la valeur ligne J colonne 6 de TVB (convertie en texte) If Split(TVA(I, 2), "-")(1) = CStr(TVB(J, 6)) Then OB.Cells(J, 9).Value = TVA(I, 5) 'récupère dans la cellule ligne J colonne 9 de l'onglet OB la valeur de la donnée ligne I colonne 5 de TVA OB.Cells(J, 11).Value = TVA(I, 6) 'récupère dans la cellule ligne J colonne 11 de l'onglet OB la valeur de la donnée ligne I colonne 6 de TVA OB.Cells(J, 13).Value = TVA(I, 7) 'récupère dans la cellule ligne J colonne 13 de l'onglet OB la valeur de la donnée ligne I colonne 6 de TVA TEST = True 'redéfinit la variable TEST Exit For 'sort de la boucle 2 End If 'fin de la condition If TEST = False Then 'si TEST est [vrai] (la ligne n'existe pas dans B) PLV = OB.Cells(Application.Rows.Count, "A").End(xlUp).Row + 1 'définit la premiere ligne vide PLV de la colonne A de l'onglet OB OB.Cells(PLV, 1).Value = TVA(I, 4) 'récupère dans la cellule ligne PLV colonne 1 de l'onglet OB la valeur de la donnée ligne I colonne 4 de TVA OB.Cells(PLV, 6).Value = Split(TVA(I, 2), "-")(1) 'récupère dans la cellule ligne PLV colonne 6 de l'onglet OB la valeur de la donnée ligne I colonne 2 de TVA (après le tiret) OB.Cells(PLV, 7).Value = TVA(I, 1) 'récupère dans la cellule ligne PLV colonne 7 de l'onglet OB la valeur de la donnée ligne I colonne 1 de TVA OB.Cells(PLV, 8).Value = TVA(I, 3) 'récupère dans la cellule ligne PLV colonne 8 de l'onglet OB la valeur de la donnée ligne I colonne 3 de TVA OB.Cells(PLV, 9).Value = TVA(I, 5) 'récupère dans la cellule ligne PLV colonne 9 de l'onglet OB la valeur de la donnée ligne I colonne 5 de TVA OB.Cells(PLV, 11).Value = TVA(I, 6) 'récupère dans la cellule ligne PLV colonne 11 de l'onglet OB la valeur de la donnée ligne I colonne 6 de TVA OB.Cells(PLV, 13).Value = TVA(I, 7) 'récupère dans la cellule ligne PLV colonne 13 de l'onglet OB la valeur de la donnée ligne I colonne 7 de TVA Exit For 'sort de la boucle 2 End If 'fin de la condition Next J 'prochaine ligne de la boucle 2 Next I 'prochaine ligne de la boucle 1 MsgBox "Données traitées !" 'message End Sub