Comparer des couleurs de cellule sous excel2003
Bonjour forum,
j'ai un fichier de prévisions - observations horaires codées sous forme de couleur. Je me demande s'il est possible avec une formule de comparer les couleurs des 2 séries: prévisions et observations. Je voudrais faire une comparaison aux heures, 3 heures et 6 heures de façon à obtenir un tableau de contingence.
Je fournis un exemple simple avec quelques instructions en guise d'explications suppl.
Merci en avance pour vos réponses
Émil
Bonjour emil,
Pour ma part, je n'ai pas tout compris comment tu trouves tes couleurs pour les blocs de 3h et 6h. Il faudrait plus d'explications.
Qu'entends-tu par "couleur la plus élevée" ?
Ex : pour le bloc de 3 heures entre 15 et 18 du vendredi 11/02, comment trouves-tu OJ ?
De plus, tu ne t'es pas trompé sur la comparaison horaire entre 1h et 5h le samedi 12/02 ?
Tu as mis OV OV OO OV alors que je verrais + : JV JV JJ JVTu confirmes ?
Bonjour VBA-new,
pour répondre à ta seconde question:
Tu as raison, je me suis trompé et tu as raison... j'aurais dû réviser pour éviter la confusion, toutes mes excuses!
À ta première question:
"Qu'entends-tu par "couleur la plus élevée" ?
Ex : pour le bloc de 3 heures entre 15 et 18 du vendredi 11/02, comment trouves-tu OJ ?
Réponse:
L'ordre des couleurs est: Vert, la couleur la moins élevée puis Jaune, Ocre puis finalement Brun est la couleur la plus élevée.
Pour chaque bloc de 3 heures (ou 6 heures), on considère toujours la couleur la plus élevée.
Ainsi, le 11/02, entre 15 et 18 heure, on a en prévision: O, O, V. Des 3 couleurs, Ocre est la plus élevée.
en observation, on a: J, V, V. Des 3 couleurs, Jaune est la plus élevée.
Voilà, j'espère que mes explications sont maintenant un peu plus claires!
En passant, crois-tu que ces comparaisons peuvent se faire grâce à une formule ou il faut plutôt passer par une VBA?
Merci
Émil
C'est tout à fait clair !Emil a écrit :Voilà, j'espère que mes explications sont maintenant un peu plus claires!
Sans VBA c'est possible en passant par la macro-fonction LIRE.CELLULE. Mais c'est un peu compliqué !Emil a écrit :En passant, crois-tu que ces comparaisons peuvent se faire grâce à une formule ou il faut plutôt passer par une VBA?
Voici plus où moins ma démarche :
- On utilise la fonction LIRE.CELLULE pour déterminer la couleur de la cellule. Pour cela, il est nécessaire de passer par la création de champs nommés pour utiliser cette fonction.
- J'ai créé une feuille qui contient les codes couleurs et les lettres associées.
- J'ai créé 3 champs nommés :
1. coulPrev =LIRE.CELLULE(63;INDIRECT(ADRESSE(4;COLONNE())))
2. coulObs =LIRE.CELLULE(63;INDIRECT(ADRESSE(6;COLONNE())))
3. formule =LIRE.CELLULE(63;INDIRECT(ADRESSE(LIGNE();COLONNE())))
- lignes 10 et 11 (à masquer si besoin car ce sont des lignes intermédiaires) de la feuille TP, j'ai mis les codes couleurs associés aux prévisions et observations
- ligne 13 : j'ai mis une formule pour extraire les couleurs des prévisions
- ligne 14 : j'ai mis une formule pour extraire les couleurs des observations
Il y a peut-être moyen d'éviter les lignes intermédiaires ainsi que la création d'une nouvelle feuille là mais je ne vois pas trop.
Bonsoir
Avec LIRE.CELLULE, macro-Fonction XL4 (qui déclenche l'avertissement Macro, bien que le fichier n'en comprenne pas)
Formules Nommées
1) Sélectionner C4
La Formule
=LIRE.CELLULE(63;!C$4)est nommée CouleurP
2) Sélectionner C6
La Formule
=LIRE.CELLULE(63;!C$6)est nommée CouleurO
Formule en C8 incrémentée vers la droite
=INDEX({"V";"J";"O";"B"};EQUIV(CouleurP;{4;6;44;46};0))&INDEX({"V";"J";"O";"B"};EQUIV(CouleurO;{4;6;44;46};0))Formule en D10 à Copier coller sur les autres emplacements en Ligne 10
=SI(SOMMEPROD(--(GAUCHE(C8:E8;1) ="B"))>0;"B";SI(SOMMEPROD(--(GAUCHE(C8:E8;1) ="O"))>0;"O";SI(SOMMEPROD(--(GAUCHE(C8:E8;1) ="J"))>0;"J";"V")))&SI(SOMMEPROD(--(DROITE(C8:E8;1) ="B"))>0;"B";SI(SOMMEPROD(--(DROITE(C8:E8;1) ="O"))>0;"O";SI(SOMMEPROD(--(DROITE(C8:E8;1) ="J"))>0;"J";"V")))Formule en F12 à Copier coller sur les autres emplacements en Ligne 12
=SI(SOMMEPROD(--(GAUCHE(C8:H8;1) ="B"))>0;"B";SI(SOMMEPROD(--(GAUCHE(C8:H8;1) ="O"))>0;"O";SI(SOMMEPROD(--(GAUCHE(C8:H8;1) ="J"))>0;"J";"V")))&SI(SOMMEPROD(--(DROITE(C8:H8;1) ="B"))>0;"B";SI(SOMMEPROD(--(DROITE(C8:H8;1) ="O"))>0;"O";SI(SOMMEPROD(--(DROITE(C8:H8;1) ="J"))>0;"J";"V")))Cordialement
Bonsoir Amadéus et Vba-New,
désolé de donner des nouvelles tardivement... c'est qu'il m'a pris un certain temps pour comprendre et digérer les solutions que vous m'avez proposées. Vous êtes vraiment très forts!
Encore merci!
Émil