Comparer deux fichiers excel à l'aide d'une macro VBA
Fermé
SaidB22
Messages postés
2
Date d'inscription
lundi 14 février 2022
Statut
Membre
Dernière intervention
15 février 2022
-
Modifié le 14 févr. 2022 à 16:37
ThauTheme Messages postés 1442 Date d'inscription mardi 21 octobre 2014 Statut Membre Dernière intervention 29 juillet 2022 - 15 févr. 2022 à 14:05
ThauTheme Messages postés 1442 Date d'inscription mardi 21 octobre 2014 Statut Membre Dernière intervention 29 juillet 2022 - 15 févr. 2022 à 14:05
A voir également:
- Comparer deux fichiers excel à l'aide d'une macro VBA
- Telecharger macro convertir chiffre en lettre excel - Télécharger - Tableur
- Liste déroulante excel - Guide
- Déplacer une colonne excel - Guide
- Aller à la ligne excel - Guide
- Fusionner deux fichiers excel - Guide
3 réponses
ThauTheme
Messages postés
1442
Date d'inscription
mardi 21 octobre 2014
Statut
Membre
Dernière intervention
29 juillet 2022
160
15 févr. 2022 à 10:34
15 févr. 2022 à 10:34
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/
SaidB22
Messages postés
2
Date d'inscription
lundi 14 février 2022
Statut
Membre
Dernière intervention
15 février 2022
15 févr. 2022 à 11:05
15 févr. 2022 à 11:05
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
ThauTheme
Messages postés
1442
Date d'inscription
mardi 21 octobre 2014
Statut
Membre
Dernière intervention
29 juillet 2022
160
Modifié le 15 févr. 2022 à 14:05
Modifié le 15 févr. 2022 à 14:05
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