Comparer les cellules de deux colonnes d'un tableau

Bonjour à tous,

J'ai une feuille dans laquelle j'ai créé un tableau dynamique.

Jusqu'ici, la macro que j'utilisais ne se reposait pas sur les noms des colonnes du tableau, mais sur le numéro de la colonne, comme ceci :

For i = Range("A2").CurrentRegion.Rows.Count To 2 Step -1

If Cells(i, 12).Value <> Cells(i, 15).Value Then

Cells(i, 12).Interior.ColorIndex = 3

End If

Next i

Mais comme j'ai créé un tableau dynamique, j'aimerai que ma macro se repose sur le noms de ses colonnes, de manière à ce qui si elles bougent de place, la macro reste valable, avec quelques choses qui ressemblerait plus à ça :

If Cells("Table1[Doc Items]").Value <> Cells("Table1[Check Doc Items]").Value Then

Cells("Table1[Doc Items]").Interior.ColorIndex = 3

Seulement cette formulation ne marche manifestement pas. Ici, je souhaite comparer les valeurs des cellules de ma colonne nommée "Doc Items" avec celles de la colonne nommée "Check Doc Items" et mettre en rouge les valeurs de la colonne "Doc Items" lorsqu'elles ne correspondent pas avec celles de "Check Doc Items".

Y a-t-il un moyen de le faire en se reposant sur les noms des colonnes ?

Merci d'avance pour votre aide et bonne journée,

Aelyth

Hello, tu peux utiliser ton code initial et le modifier comme ceci ca devrait fonctionner:

With Activesheet.ListObjects("Table1")

For i = Range("A2").CurrentRegion.Rows.Count To 2 Step -1

If Cells(i, .ListColumns("Doc Items").Index).Value <> Cells(i, .ListColumns("Check Doc Items").Index).Value Then
Cells(i, .ListColumns("Doc Items").Index).Interior.ColorIndex = 3
End If

Next i

End With

Est-ce que ça serait éventuellement possible de se passer de for i ?

Oui avec une mise en forme conditionnelle c'est même possible de passer sans macro

J'aurais plutôt souhaité incorporer la mise en forme conditionnelle à la macro, ce n'est pas la seule action que je fais avec.

Du coup sans le for i ça donnerait quoi ?

Le for i c'est quand même pas si compliqué mais bon c'est vrai que l'avantage de la mise en forme conditionnelle c'est qu'elle s'applique en temps réel:

With ActiveSheet.ListObjects("Table1")
ColumnLetter1 = Split(Cells(1, .ListColumns("Doc Items").Index + .Range.Column - 1).Address, "$")(1)
ColumnLetter2 = Split(Cells(1, .ListColumns("Check Doc Items").Index + .Range.Column - 1).Address, "$")(1)

    With Columns(.ListColumns("Doc Items").Index + .Range.Column - 1)
    .FormatConditions.Delete
    .FormatConditions.Add Type:=xlExpression, Formula1:="=ET($" & ColumnLetter1 & "1=$" & ColumnLetter2 & "1;$" & ColumnLetter1 & "1<>"""")"
    .FormatConditions(1).Interior.ColorIndex = 3
    End With
End With

Le for i c'est quand même pas si compliqué mais bon c'est vrai que l'avantage de la mise en forme conditionnelle c'est qu'elle s'applique en temps réel:

With ActiveSheet.ListObjects("Table1")
ColumnLetter1 = Split(Cells(1, .ListColumns("Doc Items").Index + .Range.Column - 1).Address, "$")(1)
ColumnLetter2 = Split(Cells(1, .ListColumns("Check Doc Items").Index + .Range.Column - 1).Address, "$")(1)

    With Columns(.ListColumns("Doc Items").Index + .Range.Column - 1)
    .FormatConditions.Delete
    .FormatConditions.Add Type:=xlExpression, Formula1:="=ET($" & ColumnLetter1 & "1=$" & ColumnLetter2 & "1;$" & ColumnLetter1 & "1<>"""")"
    .FormatConditions(1).Interior.ColorIndex = 3
    End With
End With

J'ai essayé d'insérer le code dans ma macro, mais il n'a aucun effet. Aucune erreur ne me revient, mais les cellules ne semblent pas se mettre en rouge.

Tu as vérifié dans Gérer les mises en forme conditionelle la formule qui est appliquée? Pour voir si c'est bon

Bonsoir Aelyth, funkyfoenky, le forum,

Une proposition par macro.....à tester.......

L' ajout /suppression de colonnes est prise en compte....

10test.xlsm (20.38 Ko)

Cordialement,

Bonsoir Aelyth, funkyfoenky, le forum,

Une proposition par macro.....à tester.......

L' ajout /suppression de colonnes est prise en compte....

Cordialement,

Bonjour,

Désolée du temps de réponse, je n'ai pas eu le temps au travail de me repencher sur le problème avant maintenant ! Ca marche parfaitement, merci beaucoup !

Cordialement,

Aelyth

Tu as vérifié dans Gérer les mises en forme conditionelle la formule qui est appliquée? Pour voir si c'est bon

Désolée du temps de réponse, je n'ai pas eu le temps au travail de me repencher sur le problème avant maintenant ! Oui, j'ai bien vérifié, mais la solution de Xorsankukai me convient nickel, donc je ne vais pas t'embêter plus, merci beaucoup à toi !

Cordialement,

Aelyth

Rechercher des sujets similaires à "comparer deux colonnes tableau"