Trouver lez 3ème nombre psitif

Résolu
Andioen Messages postés 5 Date d'inscription   Statut Membre Dernière intervention   -  
eriiic Messages postés 24603 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 ?

Configuration: Windows / Firefox 64.0
A voir également:

8 réponses

Vaucluse Messages postés 26496 Date d'inscription   Statut Contributeur Dernière intervention   6 438
 
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 24603 Date d'inscription   Statut Contributeur Dernière intervention   7 276
 
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   Statut Membre Dernière intervention  
 
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   Statut Contributeur Dernière intervention   6 438
 
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   Statut Membre Dernière intervention  
 
Merci. Vote compétence me facilite considérablement le travail
0
Andioen Messages postés 5 Date d'inscription   Statut Membre Dernière intervention  
 
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 18405 Date d'inscription   Statut Contributeur Dernière intervention   5 135
 
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   Statut Membre Dernière intervention  
 
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 24603 Date d'inscription   Statut Contributeur Dernière intervention   7 276
 
Bonjour,

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