Bonjour,
Je rencontre un problème sur un projet qui m'a été confié :
J'ai deux classeurs Excel qui sont construits de la même façon 00 7099 01.xlsx et 00 7099 01 Test.xlsx le but de la macro est de comparer les deux classeurs car 00 7099 01 Test.xlsx contient des différences avec le premier classeur. 00 7099 01.xlsx 00 7099 01 Test.xlsx
3 lignes ont été supprimées -> Doit ressortir en Rouge (donc copié la ligne supprimée dans le premier classeur et la rajouter au classeu Test avec un interior color index rouge)
1 ligne à été rajoutée -> Doit ressortir en vert
2 lignes ont été modifiées -> Doit ressortir en orange avec les cases modifiées en orange foncé
Les lignes supprimées sont les fils n° 2000 / 2013 / 2040 (voir colonne A du premier classeur)
La ligne rajoutée est la ligne 2080 dans le nouveau classeur (voir colonne A du classeur Test)
Les lignes modifiée sont les lignes 2002 et 2015 avec respectivement :
-2002 : Ref câble changée (Colonne C) et Input Connection FIN pour XML (Colonne K) changé.
-2015 : Ref Contact 1 (Colonne O) changée et Route (Colonne Z) changée
Au début je suis parti sur un système de double boucle pour parcourir les deux fichiers mais après réflexion et test c'est complétement débile car il moulinne dans le vide à créer une infinité de ligne rouge.
Je sèche complétement même si je suis persuadé que cela n'est pas très difficile... j'ai parcourus pas mal de forum sans grand succès donc je créer un thread pour avoir votre avis là dessus.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38 Private Sub ActualisationICD() '********************************************' '************* COMPARE DEUX ICD *************' '********************************************' Dim I, J, NbLigneRajoutee As Integer NbLigneRajoutee = 0 'Dimension des Nouvel et Ancien ICD pour travailler avec Dim NouvelICD As Workbook, AncienICD As Workbook Set AncienICD = Application.ThisWorkbook 'Applique dans NouvelICD le classeur sélectionné par l'opérateur via l'explorateur de fichiers Windows Set NouvelICD = Application.Workbooks.Open(Application.GetOpenFilename) 'Calcul le nombre de ligne du nouvel ICD Dim NbLigneNouvelICD As Integer NouvelICD.Activate NbLigneNouvelICD = Range("A1").End(xlDown).Row 'Calcul le nombre de ligne de l'ancien ICD Dim NbLigneAncienICD As Integer AncienICD.Activate NbLigneAncienICD = Range("A1").End(xlDown).Row For I = 2 To NbLigneNouvelICD For J = 2 To NbLigneAncienICD If NouvelICD.Worksheets(1).Range("A" & I) <> AncienICD.Worksheets(1).Range("A" & J) Then NouvelICD.Worksheets(1).Rows(I).Interior.ColorIndex = 10 End If 'Si la ligne à étée supprimée on la rajoute à la fin de l'ICD et la colorie en rouge 'If AncienICD.Worksheets(1).Range("A" & J) <> NouvelICD.Worksheets(1).Range("A" & I) Then 'NouvelICD.Worksheets(1).Rows(NbLigneNouvelICD + NbLigneRajoutee + 1).Insert 'AncienICD.Worksheets(1).Rows(J).Copy 'NouvelICD.Worksheets(1).Rows(NbLigneNouvelICD + NbLigneRajoutee + 1).PasteSpecial 'NouvelICD.Worksheets(1).Range("A" & NbLigneNouvelICD + NbLigneRajoutee + 1).Interior.ColorIndex = 3 'End If Next J Next I End Sub
Cordialement, Vich.
Partager