Bonjour à tous

Voilà, je cherche depuis un bon moment le moyen de mettre à jour une feuille Excel à partir d'une autre à l'aide d'un programme VBA.
La Feuil1 contient la mise à jour des informations relatives à plusieurs départements et la Feuil3 est la feuille de suivi sur laquelle j'apporte des modifications aux dernières colonnes (celle de droite) pour l'avancement des événements pour chacune des lignes.
J'ai donc besoin de comparer les deux tableaux automatiquement, et à chaque fois qu'une ligne a été ajoutée ou retirée à la mise à jour (Feuil1), qu'elle en soit de même à la feuille de suivi (Feuil3) sans décaler les annotations des dernières colonnes (N.B.: la mise à jour de la Feuil1 s'effectue par écrasement).
Ce que je cherche à faire depuis le début est de comparer certaines cellules de la ième ligne de la Feuil1 avec celles de chacune des lignes Feuil3 pour vérifier si cette ième ligne figure déjà en Feuil3, sinon copier cette ligne en Feuil3 et supprimer les lignes en trop en Feuil3.

Voici ce que j'ai fait jusque là :

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
l1 = 11 'première ligne
err = 0
l3 = 11 'première ligne
 
While Feuil3.Cells(l3, 1) <> ""
    If Feuil1.Cells(l1, 1) = "xxx" And Feuil1.Cells(l1, 2) = Feuil3.Cells(l3, 2) _
        And Feuil1.Cells(l1, 3) = Feuil3.Cells(l3, 3) And Feuil1.Cells(l1, 10) = Feuil3.Cells(l3, 10) _
        And Feuil1.Cells(l1, 13) = Feuil3.Cells(l3, 13) And Feuil1.Cells(l1, 16) = Feuil3.Cells(l3, 16) Then
            l1 = l1 + 1
            Feuil3.Cells(l3, 30) = 1 'signalement des lignes communes
            l3 = 11
            err = 0
        ElseIf Feuil1.Cells(l1, 1) <> "" Then
            l3 = l3 + 1
            err = 1
            End If    
    If err = 1 Then
        t = l3 - 1
        Rows(l1).Select
        Selection.Copy
        Feuil3.Activate
        Rows(t).Select
        Selection.Insert Shift:=xlDown
        Feuil3.Cells(t, 30) = 1 'signalement des lignes insérées
        err = 0
    End If
l1 = l1 + 1
Loop Until Feuil3.Cells(l3, 1) = ""
Wend
 
l3 = 11
 
While Feuil3.Cells(l3, 1) <> ""
    If Feuil3.Cells(l3, 30) <> 1 Then 
        Feuil3.Rows(l3).Delete Shift:=xlUp 'suppression des lignes non signalées
    Else: l3 = l3 + 1
    End If
Wend
Merci d'avance !

SB