Trouver lez 3ème nombre psitif

Résolu/Fermé
Andioen Messages postés 5 Date d'inscription jeudi 27 décembre 2018 Statut Membre Dernière intervention 28 décembre 2018 - 27 déc. 2018 à 16:40
eriiic Messages postés 24569 Date d'inscription mardi 11 septembre 2007 Statut Contributeur Dernière intervention 28 décembre 2023 - 29 déc. 2018 à 12:18
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 ?

Configuration: Windows / Firefox 64.0

8 réponses

Vaucluse Messages postés 26496 Date d'inscription lundi 23 juillet 2007 Statut Contributeur Dernière intervention 1 avril 2022 6 394
Modifié le 27 déc. 2018 à 17:15
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

0
eriiic Messages postés 24569 Date d'inscription mardi 11 septembre 2007 Statut Contributeur Dernière intervention 28 décembre 2023 7 211
27 déc. 2018 à 17:37
Bonjour,

c'est quoi le premier pour toi ?
Le premier à se présenter ou le plus petit positif ?
eric
0
Andioen Messages postés 5 Date d'inscription jeudi 27 décembre 2018 Statut Membre Dernière intervention 28 décembre 2018
28 déc. 2018 à 11:30
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
0
Vaucluse Messages postés 26496 Date d'inscription lundi 23 juillet 2007 Statut Contributeur Dernière intervention 1 avril 2022 6 394
Modifié le 28 déc. 2018 à 11:41
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
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
Andioen Messages postés 5 Date d'inscription jeudi 27 décembre 2018 Statut Membre Dernière intervention 28 décembre 2018
28 déc. 2018 à 13:24
Merci. Vote compétence me facilite considérablement le travail
0
Andioen Messages postés 5 Date d'inscription jeudi 27 décembre 2018 Statut Membre Dernière intervention 28 décembre 2018
28 déc. 2018 à 15:12
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 !
0
Mike-31 Messages postés 18310 Date d'inscription dimanche 17 février 2008 Statut Contributeur Dernière intervention 29 mars 2024 5 073
28 déc. 2018 à 15:29
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));"")
0
Andioen Messages postés 5 Date d'inscription jeudi 27 décembre 2018 Statut Membre Dernière intervention 28 décembre 2018
28 déc. 2018 à 15:59
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
0
eriiic Messages postés 24569 Date d'inscription mardi 11 septembre 2007 Statut Contributeur Dernière intervention 28 décembre 2023 7 211
29 déc. 2018 à 12:18
Bonjour,

le sierreur() est plus léger qu'une MFC, c'est une fonction à connaitre et à utiliser.
eric
0