J'ai une liste de contrats sous une ligne d'en-tête. Certains contrats occupent plusieurs lignes.Comparer les cellules A3 et A2, si elles sont égales, rien d'autre ne colore les cellules de rangée 3 A par F. Répéter avec la ligne suivante
Ce que je voudrais, c'est avoir une macro VBA qui va comparer les cellules A3 à A2. Si ce sont les mêmes prochain. Si elles sont différentes, sélectionnez les cellules A3: F3 et changez Interior.Color en gris.
Ensuite, comparez A4 à A3, puis A5 à A4 et répétez pour toutes les cellules utilisées dans la colonne A, en faisant effectivement une table.
C'est ce que l'écran ressemble à:
Row Column A Column B C D E F
1. 000000 (Info) (Info) (Info) (Info) (Info)
2. 111111 (Info) (Info) (Info) (Info) (Info)
3. 123456 (Info) (Info) (Info) (Info) (Info)
4. 123456 (Info) (Info) (Info) (Info) (Info)
5. 654321 (Info) (Info) (Info) (Info) (Info)
6. 124536 (Info) (Info) (Info) (Info) (Info)
7. 666666 (Info) (Info) (Info) (Info) (Info)
Ce que je voudrais voir est:
1. 000000 (Info) (Info) (Info) (Info) (Info) 'line is clear
2. 111111 (Info) (Info) (Info) (Info) (Info) 'line is grey
3. 123456 (Info) (Info) (Info) (Info) (Info) 'line is clear
4. 123456 (Info) (Info) (Info) (Info) (Info) 'line is clear
5. 654321 (Info) (Info) (Info) (Info) (Info) 'line is grey
6. 124536 (Info) (Info) (Info) (Info) (Info) 'line is clear
7. 666666 (Info) (Info) (Info) (Info) (Info) 'line is grey
J'ai passé ma journée à la recherche et ont trouvé (et a travaillé sur le script suivant cependant, il ne fait que colorier la première cellule de la ligne
Sub Line_Shading()
Application.ScreenUpdating = False
Dim this As Variant
Dim previous As Variant
Dim currentColor As Long
Dim rng As Range
Dim a As Range
' pick a color to start with
currentColor = 14277081 ' 14277081 Grey or 16777215 Clear
' rng = used and visible cells
Set rng = Range("A2:A" & Range("A2").End(xlDown).Row)
For Each a In rng
If Not a.Row = 1 Then ' skip header row
this = a.Value
'some simple test logic to switch colors
If this <> previous Then
If currentColor = 14277081 Then
currentColor = 16777215
ElseIf currentColor = 16777215 Then
currentColor = 14277081
End If
End If
'set interior color
a.Interior.color = currentColor 'Interior.Color
previous = this
End If
Next a
Application.ScreenUpdating = True
End Sub
Je pense que ça va juste être une modification de la ligne: a.Interior.color = currentColor 'Interior.Color mais je ne peux pas voir la solution.
Suggestions?
Le problème avec la mise en forme conditionnelle est que le document que je l'utilise est différent chaque jour et donc je dois re- créer le format conditionnel tout le temps. J'essaie de le faire en VBA car j'ai déjà environ 7-8 macros qui seront appliquées au document chaque matin quand il sera généré. –
Compris, j'ai ajouté le correctif à votre code, dans l'édition. @EricWaters voir la partie inférieure de la réponse. –
Oui, je l'ai vu par la suite et ça marche comme une beauté! Merci beaucoup pour l'aide! –