IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Excel Discussion :

Mise en forme conditionnelle et fonction LIGNE() [XL-2007]


Sujet :

Excel

  1. #1
    Membre chevronné

    Homme Profil pro
    Responsable projets techniques
    Inscrit en
    Février 2003
    Messages
    980
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Responsable projets techniques
    Secteur : Biens de consommation

    Informations forums :
    Inscription : Février 2003
    Messages : 980
    Points : 1 894
    Points
    1 894
    Par défaut Mise en forme conditionnelle et fonction LIGNE()
    Bonjour,

    Voilà, j'ai un petit souci avec une mise en forme conditionnelle.

    J'ai des lignes qui vont de paires, et je voulais comparer pour chaque ligne le contenu de chaque cellule avec le contenu de la cellule correspondante dans l'autre ligne.

    Exemple (# indique le numéro de la ligne) :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    #	TABLE	V1	V2	V3
    1	A	12	3	4
    2	B	5	3	3
    3	C	12	2	3
    4	D	12	2	12
    Je voudrais avoir en rouge les valeurs V1 et V3 des tables A et B car elles diffèrent. Idem pour les valeurs V3 des tables C et D. Je veux que les autres valeurs soient en vert.
    On ne cherche pas à comparer V3 entre les tables B et C par exemple : les lignes vont vraiment de paires (une ligne avec la suivante).

    J'étais parti sur une formule assez compliquée (je suis fatigué aujourd'hui, et je n'ai pas cherché plus simple, si ça se trouve, c'est possible), mais je ne comprends pas pourquoi elle ne marche pas. J'ai cherché à la simplifier au maximum sur un petit cas de test, mais ça ne passe toujours pas, et il me semble que c'est l'usage de la fonction LIGNE() qui pose problème.

    Est-ce que quelqu'un a déjà fait de la mise en forme conditionnelle avec cette fonction ?

    Pour info, voici la fonction utilisée :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    =SI(D2=INDIRECT("L"&LIGNE(D2)+MOD(LIGNE(D2);2)+1-3*MOD(LIGNE(D2);2)&"C"&COLONNE(D2);FAUX);VRAI;FAUX)
    On compare la valeur de D2 avec le gros machin qui suit et qui détermine s'il faut prendre D3 ou D1.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    MOD(LIGNE(D2);2)+1-3*MOD(LIGNE(D2)
    permet de calculer s'il faut ajouter un ou retrancher un à la ligne courante... le reste ne fait que construire une adresse à passer à INDIRECT.

    J'ai également essayé un plus simple
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    =SI(D2=INDIRECT("D"&LIGNE(D2)+1);VRAI;FAUX)
    uniquement sur la cellule D2 sans succès...

    Pourtant, si je mets ces deux formules dans des cellules de ma feuille et que j'étire les formules, j'ai bien les VRAI / FAUX qui sont correctement calculés...

    Une idée ?

    Merci d'avance !

  2. #2
    Rédacteur
    Avatar de Philippe Tulliez
    Homme Profil pro
    Formateur, développeur et consultant Excel, Access, Word et VBA
    Inscrit en
    Janvier 2010
    Messages
    12 922
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Formateur, développeur et consultant Excel, Access, Word et VBA

    Informations forums :
    Inscription : Janvier 2010
    Messages : 12 922
    Points : 28 908
    Points
    28 908
    Billets dans le blog
    53
    Par défaut
    Bonjour,
    Comme ceci
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    =D2=INDIRECT("D"&LIGNE(D2)+1)

  3. #3
    Membre expérimenté
    Femme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Juin 2007
    Messages
    673
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Ain (Rhône Alpes)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Conseil

    Informations forums :
    Inscription : Juin 2007
    Messages : 673
    Points : 1 580
    Points
    1 580
    Par défaut
    Bonjour,
    Je ne saurais pas diagnostiquer le problème dans la formule, par contre il y a plus simple.
    En effet, dans une mise en forme conditionnelle, il suffit d'utiliser directement des fonctions qui renvoient des booléens au lieu d'un si.
    Par exemple, j'ai testé cette formule en tant que mise en forme conditionnelle et elle donne le bon résultat :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    =OU(ET(MOD(LIGNE(D2);2)=0;D2<>D3);ET(MOD(LIGNE(D2);2)=1;D2<>D1))
    Pour avoir les cellules en vert et rouge, il suffit de les mettre toutes en vert, et d'ajouter la mise en forme conditionnelle rouge avec comme condition ma formule.

  4. #4
    Membre chevronné

    Homme Profil pro
    Responsable projets techniques
    Inscrit en
    Février 2003
    Messages
    980
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Responsable projets techniques
    Secteur : Biens de consommation

    Informations forums :
    Inscription : Février 2003
    Messages : 980
    Points : 1 894
    Points
    1 894
    Par défaut
    Bonjour,

    c'est assez intéressant, je viens d'essayer avec
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    =D2<>INDIRECT("D"&LIGNE(D2)+1)
    et ça marche, mais
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    =SI(D2<>INDIRECT("D"&LIGNE(D2)+1);VRAI;FAUX)
    ne fonctionne pas !!

    Je peux me tromper, mais ça devrait être exactement la même chose non ? Bref, j'aurais tendance à appeler ça un bug, mais c'est peut-être une feature

    En tout cas, merci pour le tuyau, c'est vrai que j'utilise toujours SI() dans les mises en forme conditionnelles (et ailleurs) ce qui n'est pas toujours utile (voir qui peut devenir gênant) !



    Edit, et ça marche du coup aussi avec ma formule sans le SI() ... comme quoi, fallait pas chercher bien loin
    Formule :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    =D2<>INDIRECT("L"&LIGNE()+MOD(LIGNE();2)+1-3*MOD(LIGNE();2)&"C"&COLONNE();FAUX)
    Appliquée sur :

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [AC-2007] Mise en forme conditionnelle pour les lignes entières
    Par Oliv'83 dans le forum IHM
    Réponses: 8
    Dernier message: 25/08/2017, 14h24
  2. [AC-2007] Mise en forme conditionnelle en fonction d'une CheckBox
    Par Oxopor dans le forum IHM
    Réponses: 3
    Dernier message: 28/06/2011, 17h29
  3. [XL-2007] Mise en forme conditionnelle en fonction d'une autre cellule
    Par amaryllis dans le forum Excel
    Réponses: 2
    Dernier message: 01/09/2010, 22h01
  4. mise en forme conditionnelle en fonction d'un champs
    Par perefourras dans le forum Word
    Réponses: 4
    Dernier message: 02/12/2007, 13h56
  5. Mise en forme conditionnelle ou fonction si?
    Par emilie31 dans le forum Excel
    Réponses: 4
    Dernier message: 24/10/2007, 11h03

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo