Précédent   Forum des professionnels en informatique > Logiciels > Microsoft Office > Excel
Excel Forum d'entraide sur Excel. Vos questions sur les fonctions, formules, manipulations, et tout sujet qui ne trouve pas sa place dans un sous-forum.
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 21/04/2011, 15h08   #1
Membre Expert
 
Homme Alexis
Intégrateur d'Exploitation
Inscription : février 2003
Messages : 876
Détails du profil
Informations personnelles :
Nom : Homme Alexis
Âge : 32
Localisation : France

Informations professionnelles :
Activité : Intégrateur d'Exploitation
Secteur : Biens de consommation

Informations forums :
Inscription : février 2003
Messages : 876
Points : 1 619
Points : 1 619
Envoyer un message via ICQ à Alek-C Envoyer un message via Skype™ à Alek-C
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 :
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 :
=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 :
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 :
=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 !
Alek-C est déconnecté   Envoyer un message privé Réponse avec citation 01
Vieux 21/04/2011, 16h30   #2
Expert Confirmé
 
Philippe Tulliez
Développeur et formateur VBA, Excel et Word.
Inscription : janvier 2010
Messages : 1 305
Détails du profil
Informations personnelles :
Nom : Philippe Tulliez
Localisation : Belgique

Informations professionnelles :
Activité : Développeur et formateur VBA, Excel et Word.

Informations forums :
Inscription : janvier 2010
Messages : 1 305
Points : 2 653
Points : 2 653
Bonjour,
Comme ceci
Code :
=D2=INDIRECT("D"&LIGNE(D2)+1)
__________________
Philippe Tulliez
http://philippe.tulliez.be
Ce que l'on conçoit bien s'énonce clairement, et les mots pour le dire arrivent aisément. (Nicolas Boileau)

Lorsque vous avez la réponse à votre question, n'oubliez pas de cliquer sur et si celle-ci est pertinente pensez à voter
corona est déconnecté   Envoyer un message privé Réponse avec citation 10
Vieux 21/04/2011, 16h32   #3
Membre Expert
 
Femme
Ingénieur développement logiciels
Inscription : juin 2007
Messages : 480
Détails du profil
Informations personnelles :
Sexe : Femme
Localisation : France, Ain (Rhône Alpes)

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

Informations forums :
Inscription : juin 2007
Messages : 480
Points : 1 024
Points : 1 024
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 :
=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.
tedo01 est déconnecté   Envoyer un message privé Réponse avec citation 10
Vieux 21/04/2011, 17h08   #4
Membre Expert
 
Homme Alexis
Intégrateur d'Exploitation
Inscription : février 2003
Messages : 876
Détails du profil
Informations personnelles :
Nom : Homme Alexis
Âge : 32
Localisation : France

Informations professionnelles :
Activité : Intégrateur d'Exploitation
Secteur : Biens de consommation

Informations forums :
Inscription : février 2003
Messages : 876
Points : 1 619
Points : 1 619
Envoyer un message via ICQ à Alek-C Envoyer un message via Skype™ à Alek-C
Bonjour,

c'est assez intéressant, je viens d'essayer avec
Code :
=D2<>INDIRECT("D"&LIGNE(D2)+1)
et ça marche, mais
Code :
=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 :
=D2<>INDIRECT("L"&LIGNE()+MOD(LIGNE();2)+1-3*MOD(LIGNE();2)&"C"&COLONNE();FAUX)
Appliquée sur :
Alek-C est déconnecté   Envoyer un message privé Réponse avec citation 01
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 12h24.


 
 
 
 
Partenaires

Hébergement Web