Mise en forme conditionnelle 1x/2

Salut tout le monde,

Je suis confronté à un énième problème, qui doit être le dernier, par rapport à un formatage conditionnel.

Il s'agit là d'un vrai casse-tête que j'ai pas réussi à résoudre.

Je m'explique:

  • Dans un tableau on saisit l'année et le nom d'une personne.
  • J'aimerait que, quand l'année précédente est différente de celle qui vient d'être saisie, la ligne se mette en gris.
  • Mais j'aimerait aussi que si la ligne précédente est déjà en gris, la nouvelle ligne ne se mette pas en gris.
  • Que si l'année est la même que la précédente la ligne soit blanche.

En bref, s'il y a 3 années différentes j'aimerais que sa donne :

1ère ligne : Blanche ; 2ème ligne: grise ; 3ème ligne: blanche.

Pour le moment sa me donne le résultat suivant :

1ère ligne : Blanche ; 2ème ligne: grise ; 3ème grise et à chaque fois que l'année saisie est différente de celle de la ligne précédente sa me met en gris (normal étant donné mon formatage).

Si quelqu'un à une astuce ! Je le remercie d'avance, j'ai besoin d'un regard neuf.

Bonjour,

=ET($B5<>"";MOD($B5;2)=0)

=ET($B5<>"";MOD($B5;2)=1)

Je ne crois pas que cela puisse fonctionner, il s'agit de deux formatages ?

En fait, j'aimerais, peu importe l'année frappé ou même si c'est du texte, que dans tous les cas la ligne revienne blanche si celle d'avant est grise.

Et celle d'avant est grise si elle est différente de la précédente.

Je sais pas si c'est très clair, j'ai mis un fichier excel en pièce-jointe.

Voilà, voilà en espérant que vous puissiez m'aider !

2mfc-vhae.xlsx (9.48 Ko)

Avec une fonction personnalisée :

Function VALDIFF(c As Range, plage As Range) As Boolean
    Dim n%, i%
    Application.Volatile
    With plage
        For i = 1 To .Rows.Count
            If .Cells(i - 1, 1) <> "" And .Cells(i, 1) <> "" Then
                If .Cells(i, 1) <> .Cells(i - 1, 1) Then
                    n = n + 1
                ElseIf .Cells(i, 1) = .Cells(i - 1) Then
                    n = n + IIf(n Mod 2 = 1, 1, 0)
                End If
            End If
            If .Cells(i, 1).Address = c.Address Then
                VALDIFF = IIf(n Mod 2 = 1, True, False)
                Exit For
            End If
        Next i
    End With
End Function

Voir utilisation dans MFC.

2vhae-mfc-vhae.xlsm (18.81 Ko)

Merci, beaucoup pour ta réponse. Je n'ai pas la possibilité aujourd'hui de tester cet macro mais je t'enverrai un retour.

Je vois une petite erreur à rectifier :

                ElseIf .Cells(i, 1) = .Cells(i - 1, 1) Then

Manquait la colonne.

Sans conséquence dans l'exemple, mais vaut mieux la mettre !

Rechercher des sujets similaires à "mise forme conditionnelle"