Bonjour,
Je souhaite comparer 2 feuilles, voir fichier joint, le but est de voir si il y a eu un changement dans la colonne status (exemple: passage de 1 a 4), de la feuille apres par rapport a la feuille avant.
Par avance merci.
Bonjour,
Je souhaite comparer 2 feuilles, voir fichier joint, le but est de voir si il y a eu un changement dans la colonne status (exemple: passage de 1 a 4), de la feuille apres par rapport a la feuille avant.
Par avance merci.
Bonjour,
En supposant qua la colonne status soit la meme dans les deux feuilles:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11 For Each cellule In Selection If (cellule.Value <> Worksheets("Apres").Range(cellule.Address).Value) Then MsgBox ("Le sattus a change") ' code faisant l'action en cas de changement End If Next cellule End Sub
bonjour,
ci-joint 3 possibilite de traitement suivant l'organisation des datas
1) comparefixe
suppose que les 2 feuilles ont les memes cles et sont triées de la meme facon avec un nombre de ligne fixe. compare et met une * sur les lignes changées sur la feuille "Apres"
2) comparecpt
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 Sub comparefixe() ' macro si le nombre de ligne est fixe et les les des datas sont les memes entre avant et apres ' variable de boucle Dim i As Integer ' pour les 29 lignes For i = 2 To 29 'efface le contenu de la cellule 3 de la ligne en cours Worksheets("Apres").Cells(i, 3) = "" ' compare pour la ligne en cours les cellules 2 de Apres et Avant If Worksheets("Apres").Cells(i, 2).Value <> Worksheets("Avant").Cells(i, 2).Value Then ' si difference il y a met * en cellule 3 de la ligne en cours Worksheets("Apres").Cells(i, 3) = "*" End If Next i End Sub
idem mais avec variante pour un nombre de ligne non determiné
3) comparealeat
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 Sub comparecpt() ' macro si le nombre de ligne n'est pas connu mais les les des datas sont les memes entre avant et apres ' nombre de lignes de la feuille Avant Dim nbligavt As Integer ' flag de fin de derniere ligne Dim flag As Boolean ' variable de boucle Dim i As Integer ' ************************* compte le nombre de ligne ****************************** ' initialise nombre de ligne a zero et flag a true nbligavt = 0 flag = True ' jusqu'a ce que flag soit false ajoute 1 a nombre de ligne Do Until flag = False nbligavt = nbligavt + 1 ' si la cellule 1 de la ligne en cours est vide alors flag a false If Worksheets("Avant").Cells(nbligavt, 1).Value = "" Then flag = False Loop ' enleve la derniere ligne celle qui est vide du compteur de lignes nbligavt = nbligavt - 1 ' ************************* coparaison des 2 feuilles ****************************** ' pour les nbligavt lignes For i = 2 To nbligavt 'efface le contenu de la cellule 3 de la ligne en cours Worksheets("Apres").Cells(i, 3) = "" ' compare pour la ligne en cours les cellules 2 de Apres et Avant If Worksheets("Apres").Cells(i, 2).Value <> Worksheets("Avant").Cells(i, 2).Value Then ' si difference il y a met * en cellule 3 de la ligne en cours Worksheets("Apres").Cells(i, 3) = "*" End If Next i End Sub
version pour le fun les données ne sont pas forcement triées de la meme facon sur les 2 feuilles
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
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53 Sub comparealeat() ' macro si le nombre de ligne n'est pas connu et les les des datas melanges entre avant et apres ' nombre de lignes de la feuille Avant Dim nbligavt As Integer ' nombre de lignes de la feuille Apres Dim nbligapr As Integer ' flag de fin de derniere ligne Dim flag As Boolean ' variables de boucle Dim i As Integer Dim j As Integer ' ************************* compte le nombre de ligne Avant ****************************** ' initialise nombre de ligne a zero et flag a true nbligavt = 0 flag = True ' jusqu'a ce que flag soit false ajoute 1 a nombre de ligne Do Until flag = False nbligavt = nbligavt + 1 ' si la cellule 1 de la ligne en cours est vide alors flag a false If Worksheets("Avant").Cells(nbligavt, 1).Value = "" Then flag = False Loop ' enleve la derniere ligne celle qui est vide du compteur de lignes nbligavt = nbligavt - 1 ' ************************* compte le nombre de ligne Apres ****************************** ' initialise nombre de ligne a zero et flag a true nbligapr = 0 flag = True ' jusqu'a ce que flag soit false ajoute 1 a nombre de ligne Do Until flag = False nbligapr = nbligapr + 1 ' si la cellule 1 de la ligne en cours est vide alors flag a false If Worksheets("Apres").Cells(nbligapr, 1).Value = "" Then flag = False Loop ' enleve la derniere ligne celle qui est vide du compteur de lignes nbligapr = nbligapr - 1 ' ************************* coparaison des 2 feuilles ****************************** ' pour les nbligapr lignes de la feuille apres For i = 2 To nbligapr 'efface le contenu de la cellule 3 de la ligne en cours Worksheets("Apres").Cells(i, 3) = "" ' pour les nbligavt lignes de la feuille avant For j = 2 To nbligavt 'compare les nom pour trouver sur la feuille Avant le nom en cours de traitement sur Apres If Worksheets("Avant").Cells(j, 1).Value = Worksheets("Apres").Cells(i, 1).Value Then ' compare pour le meme nom les cellules 2 de Apres et Avant If Worksheets("Avant").Cells(j, 2).Value <> Worksheets("Apres").Cells(i, 2).Value Then ' si difference il y a met * en cellule 3 de la ligne en cours Worksheets("Apres").Cells(i, 3) = "*" End If End If Next j Next i End Sub
Bonsoir,
Si tu veux juste connaître les cellules modifiée,
dans un colonne tu tapes
=B:B=Apres!B:B
affiche Vrai ou Faux
Salutations
Partager