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à :
Merci d'avance !
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
SB
Partager