Formule Si complexe

Bonjour à tous.

Voici mon problème. J'ai un tableau avec 6 colonnes (colonne A, colonne B, colonne C, colonne D, colonne E, colonne F). Certaines de ces colonnes contiennent des données, d'autres pas.

Je voudrais faire apparaître dans plusieurs cellules, le nom des colonnes de mon tableau qui contiennent des données.

ça a l'air simple dit comme ça mais ça ne l'est pas du tout. Je joins un fichier exemple pour que vous compreniez mieux.

Je vous remercie d'avance pour l'aide que vous pourrez m'apporter.

19exemple.xlsx (11.74 Ko)

Bonjour,

Peux-tu rejoindre ton fichier au format 2003 ?

Ainsi, nous pourrons tous l'ouvrir et tenter d'y apporter réponse

A te (re)lire

@+

Bonjour Captain Kirk,

J'ai rentré une formule mais je n'ai pas bien saisi ta demande...

Redis si c'est bien cela que tu souhaites faire.

28exemple.zip (8.92 Ko)

Bonjour,

Dans le même esprit, une autre formule en D23 :

=SI(NBVAL(D6:D14)=0;"";D5)

à recopier vers la droite

@+

Bonjour

Je vous remercie pour votre aide. En fait, le résultat souhaité est bon mais c'est la méthode qui n'est pas appropriée si je puis dire

En fait, la formule utilisée n'est pas à recopier sur plusieurs lignes mais doit être utilisée ponctuellement.

La formule doit faire plusieurs choses:

  • premièrement, examiner les colonnes du tableau
  • si on tombe sur une colonne vide, alors on passe à la suivante. Si la suivante est vide, alors on passe à la suivante et ainsi de suite jusqu'à ce qu'on tombe sur une colonne qui contient des données, en l'occurence, la colonne B dans l'exemple. Dans ce cas là, on indique dans la cellule appropriée le nom de la colonne qui contient des données. On va dire par exemple que le résultat doit apparaître en D24

Mais ce n'est pas la seule colonne qui contient des données. Donc je voudrais réutiliser une formule de ce genre, qui fasse exactement la même chose mais dont le résultat soit différent de celui qui apparaît en D24. Cette nouvelle formule doit:

- premièrement, examiner les colonnes du tableau

- la colonne A est vide, donc on passe à la suivante. La colonne B contient des données mais on a déjà affiché le nom de la colonne B en D24. Donc on passe à la colonne suivante. La colonne C est vide donc on passe à la colonne D. La colonne est vide donc on passe à la colonne E qui elle, contient des données. Donc on affiche le nom de la colonne E

Ensuite, on utilise encore une autre formule pour la colonne F qui reprend cette même trame.

Comprenez-vous? Je m'excuse si je ne suis pas assez clair. Et je m'excuse aussi de ne pas avoir envoyé des fichiers 2003 mais en ce moment, je suis au boulot et ils utilisent la version 2007.

Re,

Utilise la version de Thibo elle est plus simple, la mienne est lourde, surtout si l'on allonge la colonne...

Une seule formule dans une cellule ne peut pas renvoyer différents résultats dans plusieurs cellules, tu dois utiliser une macro qui effectura la procédure que tu viens de décrire...pour ça je ne peux pas vraiment t'aider...

Cependant je vois pas l'intérêt...la formule proposée renvoie exactement le même résultat que ce que tu recherches

PS : Sous excel 2007 tu peux faire "enregistrer sous" et opter pour le format "Excel 2003"

A plus

re,

J'avoue ne pas comprendre vraiment tes explications

Avec Excel 2007, tu peux enregistrer au format 2003. Au moment d'enregistrer, déroule la rubrique type de fichier et tu auras Excel 2003

Pour en revenir à ton souci, ce serait sympa de revenir avec les commentaires directement dans le fichier (au format 2003) et avec le résultat attendu

A te (re)lire

@+

Edit : Bing ! Salut Elconqueror

@+

J'ai essayé de bidouiller une formule à ma sauce en m'aidant de vos précieux conseils. ça donne ça:

=SI(NBVAL($B$6:$B$14)>=1;$B$5;SI(NBVAL($C$6:$C$14)>=1;$C$5;SI(NBVAL($D$6:$D$14)>=1;$D$5;SI(NBVAL($E$6:$E$14)>=1;$E$5;SI(NBVAL(F6:$F$14)>=1;$F$5;SI(NBVAL($G$6:$G$14)>=1;$G$5;""))))))

Donc d'après la formule:

- si la plage de données B6 à B14 n'est pas nulle, alors on indique la valeur de la cellule B5; sinon si la plage de données C6 à C14 n'est pas nulle, alors on indique la valeur de la cellule C5; sinon etc etc etc

J'ai mis cette formule dans la cellule A18. Donc comme vous pouvez le voir, la formule m'indique le nom de la colonne colonne B.

Maintenant, je voudrais faire apparaître le nom de la colonne F en A19 par exemple. Mais comme l'a dit elconqueror, une seule formule dans une cellule ne peut pas renvoyer différents résultats dans plusieurs cellules ce qui est évident. Donc pour faire apparaître le nom de la colonne F, il faudrait une formule qui reprend tous les éléments de la formule précédente avec quelque chose en plus. Il faut lui dire que la valeur souhaitée doit être différente de la valeur en A18.

Est-ce que vous comprenez?

18exemple.zip (11.64 Ko)

Bonjour,

Avec une formule matricielle, voir fichier.

23exemple-kirk.zip (11.74 Ko)

A+

A première vue, cette formule à l'air parfaite et répond à mes attentes. Je te remercie infiniment. ca va me simplifier grandement la tâche. Je n'ai plus qu'à l'ajuster à mon véritable tableau qui est 100 fois plus grand

Juste une petite question: à quoi correspond le chiffre 5 dans la formule? Merci

capture d ecran 398 capture d ecran 399
Captain Kirk a écrit :

Juste une petite question: à quoi correspond le chiffre 5 dans la formule?

C'est le numéro de la ligne contenant les en-têtes de colonnes.

Merci beaucoup

J'ai essayé la formule et elle marche super bien....... mais uniquement quand on tape la formule sur la feuille qui contient le tableau.

Comme tu peux le voir, j'ai retapé la formule en D18 sur la feuille qui contient le tableau (Feuil1), j'ai validé la formule avec CTRL+MAJ+ENTREE. Aucun problème, ça marche du tonnerre!!!

Par contre, j'ai retapé la même formule en A43 dans la feuille Convention Client B et là, damnation, ça ne marche pas. La formule m'indique 0. Est-ce normal?

J'ai aussi retapé les autres formules qui contiennent la fonction DECALER en A43 dans la feuille Convention Client F mais là aussi ça ne marche pas, mais c'est normal puisque la formule en A43 de la feuille Convention Client B ne marche pas non plus.

Bonjour,

J'avoue ne pas comprendre non plus...ça devrait fonctionner dans ton fichier...

Je me rappelle plus trop...OOoiste, peux-tu m'expliquer l'utilisation des { } en début et fin de formule

Merci, bonne journée à vous!

C'est bon, j'ai résolu le problème. Si il y en a que ça intéresse, je joins le fichier. La formule est dans la Feuil2 en A20.

Extrait de la formule utilisée:

INDEX(Feuil1!B5:G5;MIN(SI(Feuil1!B6:G14<>"";COLONNE(Feuil1!B5:G5)))-1)

Un grand merci pour l'aide que vous m'avez apporté!!!

Rechercher des sujets similaires à "formule complexe"