Question sur Excel

  • Créateur du sujet Créateur du sujet r0m135
  • Date de début Date de début

r0m135

Membre confirmé
26 Mars 2011
28
0
Bonsoir, je sais pas si je poste au mauvais endroit, le cas échéant je vous présente mes excuses ..
Je voudrais savoir si vous connaissiez un moyen de récupérer/ lire la couleur d'une cellule pour la mettre dans une autre ?
Par exemple j'ai une liste de date ou chaque date est colorée à la main.
Je voudrais trouver un moyen de mettre dans une cellule annexe la couleur de la date la plus avancée .. ( MAX(LISTE) donc .. )
J'ai trouvé avec du VBA mais j'aimerais si possible faire sans, ne pouvant à priori pas modifier le fichier pour le mettre en .xlsm .


Question annexe, si j'écris MAX(Liste) il me donne la date la plus avancée, mais est-il possible d'avoir l'ADRESSE de la date la plus avancée ? ( par exemple B15 ) pour pouvoir l'utiliser convenablement dans une autre formule : =FormuleXXX( XXX; MAX(Liste )) ne marcherait pas car l'argument demandé est une adresse


En vous remerciant par avance ..
 
Je voudrais savoir si vous connaissiez un moyen de récupérer/ lire la couleur d'une cellule pour la mettre dans une autre ?
Par exemple j'ai une liste de date ou chaque date est colorée à la main.
Je voudrais trouver un moyen de mettre dans une cellule annexe la couleur de la date la plus avancée... (=MAX(LISTE) donc ...)
J'ai trouvé avec du VBA mais j'aimerais si possible faire sans, ne pouvant à priori pas modifier le fichier pour le mettre en .xlsm
On ne peut pas agir sur le format d'une cellule via une formule dans cette même cellule. Le recours à du VBA est indispensable. Ou, pour certains besoins, à la "Mise en forme conditionnelle" (mais ce que tu veux faire ne pourrait être obtenu que pour un choix limité de couleurs, connu à l'avance).

si j'écris MAX(Liste) il me donne la date la plus avancée, mais est-il possible d'avoir l'ADRESSE de la date la plus avancée ? (par exemple B15) pour pouvoir l'utiliser convenablement dans une autre formule : =FormuleXXX( XXX; MAX(Liste )) ne marcherait pas car l'argument demandé est une adresse
Oui, avec une formule un peu alambiquée (on peut éventuellement faire plus simple, je regarderai si j'ai du temps) :
=ADRESSE(MIN(SI(Liste=MAX(Liste);LIGNE(Liste)));MAX(SI(Liste=MAX(Liste);COLONNE(Liste)));4) à valider avec les touches "Contrôle-Majuscule-Entrée" (ou "Commande-Entrée") pour en faire une formule matricielle…

Pour ce genre d'astuces, tu peux consulter le site Excelabo. C'est essentiellement orienté versions Windows, mais une bonne partie des instructions sont aussi utilisables sur Mac.
 
Merci beaucoup, entre temps j'ai trouvé effectivement une formule du même type, donc mon problème est résolu. Et effectivement pour récupérer la couleur du max j'ai du passer par le VBA

Par contre que veut dire faire une formule matricielle ?
Merci encore en tout cas
 
En validant de façon matricielle une formule, on fait savoir à Excel qu'il ne doit pas évaluer la formule de façon linéaire (lecture simple) mais qu'il doit l'évaluer "en boucle".

Un exemple simple : si on veut faire la somme des produits des nombres qui se trouvent dans les cellules A2:B4, on peut écrire =A2*B2 + A3*B3 + A4*B4. Excel va évaluer chaque groupe et en faire la somme, de façon linéaire.
Si on écrit =SOMME(A2:A4*B2:B4) et qu'on valide par "Contrôle-Majuscule-Entrée", Excel sait qu'il doit faire la somme des produits comme vu précédemment.

Bon, bien sûr, pour ce cas précis, on peut utiliser SOMMEPROD(A2:A4;B2B4) qui est une formule matricielle en soi (pré-programmée, en quelque sorte). Mais il est pas mal de cas de figure où c'est bien utile de pouvoir faire ce genre de manip...