Une intervention à une question posée sur mon forum préféré et dont la question était « Comment colorier une ligne sur deux en tenant compte des lignes masquées » m’a inspiré ce billet.

Grâce à la mise en forme conditionnelle et pour améliorer la lisibilité des données dans un tableau d’excel, il est possible de mettre en évidence une ligne sur deux comme illustré ci-dessous.

Comment procéder ?

Dans la mise en forme conditionnelle

  1. Sélectionner la plage concernée
  2. Choisir la règle Utiliser une formule pour déterminer pour quelles cellules le format sera appliqué
  3. Placer la formule ci-dessous
    =MOD(LIGNE();2)
  4. Choisir le format à appliquer

Cette astuce, vous la trouvez facilement sur le net.
Oui mais si nous appliquons un filtre sur cette liste, par exemple afficher les lignes qui contienne Excel en colonne A

D’où vient le problème ?

La fonction MOD renvoie le reste de la division du premier argument nommé Nombre par le deuxième argument nommé Diviseur. Ainsi MOD(4;2) renvoie 0 et MOD(3;2) renvoie 1
La fonction LIGNE() renvoie le numéro de la ligne où elle est placée donc ce qui fait que chaque ligne impaire est colorée mais pas les lignes paires.
Donc dans notre exemple comme les lignes contenant Excel sont placées pour la plupart dans des lignes paires nous n’avons plus le résultat escompté.

D’où la question posée sur le forum Developpez.Com Comment colorier une ligne sur deux en tenant compte des lignes masquées à laquelle j’ai répondu.

Comment colorer une ligne sur deux en tenant compte des lignes masquées ou filtrées ?

La solution est de remplacer la fonction LIGNE() par la fonction SOUS.TOTAL(103;$A$2:A2) qui a pour avantage de totaliser uniquement les lignes visibles.
Le premier argument nommé no_fonction de la fonction SOUS.TOTAL définit le type de totalisation souhaité. 103 est la totalisation de NBVAL (COUNTA pour les version anglaise) et pour rappel la fonction NBVAL dénombre les cellules remplies.

La formule à placer dans la règle Utiliser une formule pour déterminer pour quelles cellules le format sera appliqué de la mise en forme conditionnelle est

=MOD(SOUS.TOTAL(103;$A$2:$A2);2)

Voici le résultat