Trouver lez 3ème nombre psitif
Résolu
Andioen
Messages postés
5
Statut
Membre
-
eriiic Messages postés 24581 Date d'inscription Statut Contributeur Dernière intervention -
eriiic Messages postés 24581 Date d'inscription Statut Contributeur Dernière intervention -
Bonjour,
Dans une ligne de 8 colonnes, j'ai 1, 2 ou 3 nombres positifs. J'ai besoin de détecter la position (colonne ) du premier nombre positif ou du second, pour appliquer une formule au second.
Comment faire ?
Dans une ligne de 8 colonnes, j'ai 1, 2 ou 3 nombres positifs. J'ai besoin de détecter la position (colonne ) du premier nombre positif ou du second, pour appliquer une formule au second.
Comment faire ?
Configuration: Windows / Firefox 64.0
8 réponses
-
Bonjour
pour un champ de valeur comprenant des nombres négatifs et positifs , par exemple de A1 à H1
pour avoir le N° de colonne du 1° nombre positif:
PETITE.VALEUR(SI(A1:H1>0;COLONNE($A$1:$H$1));1)
et du second
PETITE.VALEUR(SI(A1:H1>0;COLONNE($A$1:$H$1));2)
Ect.....
attention- cette formule est matricielle et doit être entrée avec la touche enter en maintenant les touches ctrl et shift enfoncées. (elle doit s'afficher automatiquement entre accolades dans la barre de formule)
- la formule n'inclut pas le 0 dans les positifs. Pour l'inclure remplacer > par >=
- la formule donne le N° de colonne dans la feuille, et donc, si le champ traité ne commence pas en A il est nécessaire d'appliquer une valeur corrective en fin de formule pour avoir si besoin le rang dans le champ
soit par exemple, pour un champ commençant en C jusqu'à J:
=PETITE.VALEUR(SI(C1:J1>0;COLONNE(C1:J1));1)-2
crtdlmnt
-
Bonjour,
c'est quoi le premier pour toi ?
Le premier à se présenter ou le plus petit positif ?
eric
-
Bonjour,
Merci beaucoup d'avoir mis cette compétence à mon service. La formule marche parfaitement.
Pour répondre à Eric, le premier signifiait le premier à se présenter.
Je vais oser demander une idée supplémentaire.
Supposons que la ligne testée soit la ligne 2. La formule est donc devenue =PETITE.VALEUR(SI($A2:$H2>0;COLONNE($A2:$H2));1).
Y aurait-il une manière d'écrire la formule pour que ce qui apparaisse comme résultat ne soit pas le numéro de la colonne, mais le contenu de la colonne en ligne 1 (en fait, le titre de la colonne) ?
Cdmt -
bonjour
si les titres sont en ligne 1:
=INDEX($A$1:$H$1;PETITE.VALEUR(SI($A2:$H2>0;COLONNE($A2:$H2));1))
attention aux $ si vous tirez la formule
toujours en matricielle, bien sur
si cela vous convient, merci de passer le sujet en résolu (menu roue dentée, en haut à droite du titre)
crdlmnt
-
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question -
Merci. Vote compétence me facilite considérablement le travail
-
Aie ! Il y a un pépin !
Quand utilise la formule que vous m'avez apprise, tout va bien s'il y a des valeurs à trouver. mais s'il n'y en n'a pas, il y a affichage "#NOMBRE!".
Je m'explique. Si dans la ligne A2 à H2, il y a un chiffre positif, j'obtiens bien le résultat escompté. Et ainsi de suite dans toutes les autres lignes, ou je change dans la formule le numéro de la ligne. Ainsi pour la ligne 7 : =INDEX($A$1:$H$1;PETITE.VALEUR(SI($A7:$H7>0;COLONNE($A7:$H7));1)). Mais si dans une ligne il n'y a pas de valeur positive, j'ai "#NOMBRE!".
Bon, je peux m'en tirer en faisant une cellule intermédiaire avec votre formule, dans laquelle je reconnaitrais s'il y a un nombre ou pas, mais ce n'est pas une solution élégante par rapport à votre apport ! -
Bonjour,
il suffit en début de formule mettre une gestion d'erreur et en fin ;"")
=SIERREUR( ta formule ;"")
comme cela, et au passage une autre approche de formule
=SIERREUR(INDIRECT(ADRESSE(1;EQUIV(PETITE.VALEUR(A2:H2;1);2:2;0);4));"")
-
Re bonjour,
J'avais trouvé une solution simpliste : mise en forme conditionnelle en caractères blancs sur les cases contenant une erreur.
Mais i le simplisme ne suffit pas, je reviendrai sur votre proposition
.
Cordialement