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   -
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

  1. Vaucluse Messages postés 27336 Date d'inscription   Statut Contributeur Dernière intervention   6 453
     
    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
  2. eriiic Messages postés 24581 Date d'inscription   Statut Contributeur Dernière intervention   7 281
     
    Bonjour,

    c'est quoi le premier pour toi ?
    Le premier à se présenter ou le plus petit positif ?
    eric
    0
  3. Andioen Messages postés 5 Statut Membre
     
    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
  4. Vaucluse Messages postés 27336 Date d'inscription   Statut Contributeur Dernière intervention   6 453
     
    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
  5. Vous n’avez pas trouvé la réponse que vous recherchez ?

    Posez votre question
  6. Andioen Messages postés 5 Statut Membre
     
    Merci. Vote compétence me facilite considérablement le travail
    0
  7. Andioen Messages postés 5 Statut Membre
     
    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
  8. Mike-31 Messages postés 18405 Date d'inscription   Statut Contributeur Dernière intervention   5 147
     
    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
  9. Andioen Messages postés 5 Statut Membre
     
    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
    1. eriiic Messages postés 24581 Date d'inscription   Statut Contributeur Dernière intervention   7 281
       
      Bonjour,

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