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.

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
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.

Cordialement, Vich.