Chercher la 1ere valeur non nulle avec condition

Résolu/Fermé
Nat - 25 juin 2018 à 08:27
Vaucluse Messages postés 26496 Date d'inscription lundi 23 juillet 2007 Statut Contributeur Dernière intervention 1 avril 2022 - 25 juin 2018 à 11:18
Bonjour,

Je souhaite trouver la première valeur non nulle d'une ligne en posant une condition sur la colonne.
J'ai en colonne les mois de l'année, en ligne, des personnes et le nombre de jours travaillés dans le mois par personne indiqué dans la cellule.

Je souhaite chercher à retourner, par personne, la première valeur non nulle à partir d'aujourd'hui (le mois en cours).
J'ai trouvé cette formule matricielle pour la première valeur non nulle:
=INDEX(Timeline[@[janvier-18]:[mars-20]];1;EQUIV(1;(1-ESTVIDE(Timeline[@[janvier-18]:[mars-20]]));0))

mais j'aimerai que la matrice sur laquelle j'applique ma formule soit réduite à "MoisEnCours:[mars-20]...et là, je sèche...


1 réponse

Vaucluse Messages postés 26496 Date d'inscription lundi 23 juillet 2007 Statut Contributeur Dernière intervention 1 avril 2022 6 395
25 juin 2018 à 09:38
Bonjour
.. pas sur d'avoir reconstitué" correctement vos données, mais la formule vous inspirera peut être (matricielle)

https://mon-partage.fr/f/lR2aHXHL/

si ça ne convient pas , revenez en déposant un modèle montrant vos tableau conforpme
crdlmnt
0
Wahou, c'est super, l'inspiration est là en effet, et le résultat aussi du coup! ;-)

Merci beaucoup!
Je relis encore pour comprendre le détail, j'ai l'impression que vous avez traité le problème de la valeur non nulle d'une autre façon...

Et je cherche comment indiquer la résolution...
0
Vaucluse Messages postés 26496 Date d'inscription lundi 23 juillet 2007 Statut Contributeur Dernière intervention 1 avril 2022 6 395
25 juin 2018 à 10:49
pour info, à toutes fins utiles, les conditions:
  • le mois considéré est plus petit que les titres en ligne 2 (qui sont les dates du 1° jour de chaque mois)
  • les valeurs cherchées sont simplement celles qui sont >0
  • l'ensemble du code MIN ressort le N° de colonne de la feuille (pas du champ)
  • c'est pour cela que cette valeur est corrigée par -1 pour ressortir INDEX à partir de B (2° colonne de la feuille = 1° colonne du champ Bx:Mx)

espérant avoir été clair
crdlmnt
0
J'ai bien relu la formule et j'ai fait des petits tests pour comprendre...
Pour la fonction INDEX matricielle (matrice;noLigne;[noColonne]):
l'utilisation INDEX(maMatriceSurUneLigne; MesconditionsColonnesEtValeurs) est équivalente à INDEX(maMatriceSurUneLigne; 0;MesconditionsColonnesEtValeurs) car ma matrice n'a qu'une ligne, donc le noLigne devient facultatif et est automatiquement interprété comme un noColonne?

Vaucluse, votre réponse montre que vous maîtrisez très bien la fonction là où ma première partie de solution était trop complexe pour le besoin. Vous avez pointé qu'un argument valant toujours 1 en numéro de ligne était signe qu'on pouvait faire mieux.
Merci donc aussi pour la pédagogie de votre réponse qui montre en plus en quoi la première formule était perfectible.
0
Vaucluse Messages postés 26496 Date d'inscription lundi 23 juillet 2007 Statut Contributeur Dernière intervention 1 avril 2022 6 395 > Nat
25 juin 2018 à 11:18
pour la 1° question, c'est oui_, INDEX lorsque le champ ne possède qu'une ligne ou colonne, prend par défaut l'adresse ligne / colonne manquante

mais vous pouvez toujours l'écrire:
=INDEX(champ;0;colonne)

pour la 2° question: vous pouvez éviter le -1 en commençant le champ de INDEX systématiquement en colonne A, mais, là, par défaut dans ce cas, la formule renvoie la valeur de A sur les lignes vides (donc le nom)

bonne route. au plaisir
0