Microsoft 365 Trouver la dernière valeur non vide selon 2 critères

Merlin258413

XLDnaute Occasionnel
Bonjour à tous,
Je cherche une formule me permettant de trouver la dernière valeur selon 2 critères (la tâche et la date sous le format aaaamm).
Pouvez vous m'aider svp en colonne F et G les résultats attendus
Encore merci pour votre aide
Bonne journée
 

Pièces jointes

  • Classeur1.xlsx
    11.3 KB · Affichages: 12
Solution
Re,
Oui, plusieurs pb :
1) la fonction PRENDRE(t;;1), prend la première colonne du tableau, PRENDRE(t;;-1) prends la dernière, (alors que PRENDRE(t;;6) prends les 6 premières comme tu l'as modifié !)
Ta colonne BUDGET n'étant plus la dernière du tableau, il faut adapter. Le mieux est de recomposer un tableau à 3 colonnes avec ASSEMB.H et ça roule.
2) Tes noms de colonnes commencent par des espaces et ça pose pas mal de soucis, je les ai enlevés sur les colonnes concernées des deux tableaux
3) J'ai rajouté le paramètre si vide de la fonction FILTRE, pour les cas ou la tâche n'est pas trouvée
Ce qui donne :
VB:
=LET(t;TRIER(ASSEMB.H(TAB[No tache];TAB[Mois (AAAAMM)];TAB[Budget Production Cumule]);2);f;PRENDRE(FILTRE(t;(PRENDRE(t;;1)=[@[No...

Merlin258413

XLDnaute Occasionnel
Bonjour,
Une proposition Excel 365 à tester, en G5 :
VB:
=PRENDRE(FILTRE(Tableau1[budget];(Tableau1[tache]=[@tache])*(Tableau1[budget]<>""));-1)
Cordialement

Bonjour malheureusement cela ne fonctionne pas j'ai fait un test en ligne 9 en date du 202409 il aurait du me prendre 11 000
Capture.JPG
 

ALS35

XLDnaute Impliqué
Re,
Ma proposition supposait que les dates étaient classées en ordre croissant, dans ton essai cela n'est plus vrai pour la tâche c. Ce cas est-il possible ?
Edit : une autre proposition, on peut adapter selon les colonnes réelles de ton tableau final :
VB:
=LET(t;TRIER(Tableau1;2);f;PRENDRE(FILTRE(t;(PRENDRE(t;;1)=[@tache])*(PRENDRE(t;;-1)<>""));-1;-1);f)
Cordialement
 
Dernière édition:

Merlin258413

XLDnaute Occasionnel
Re,
Ma proposition supposait que les dates étaient classées en ordre croissant, dans ton essai cela n'est plus vrai pour la tâche c. Ce cas est-il possible ?
re je pense que cela nécessite une opération supplémentaire de reclassement. si nous n'avons pas d'autres solutions c'est déjà vraiment très bien. Mais il est vrai que je peux tout mettre à la chaine
Merci
 

Merlin258413

XLDnaute Occasionnel
Re,
Ma proposition supposait que les dates étaient classées en ordre croissant, dans ton essai cela n'est plus vrai pour la tâche c. Ce cas est-il possible ?
Edit : une autre proposition, on peut adapter selon les colonnes réelles de ton tableau final :
VB:
=LET(t;TRIER(Tableau1;2);f;PRENDRE(FILTRE(t;(PRENDRE(t;;1)=[@tache])*(PRENDRE(t;;-1)<>""));-1;-1);f)
Cordialement
Bravo excellent merci beaucoup
 

Merlin258413

XLDnaute Occasionnel
Bravo excellent merci beaucoup
Re votre formule est super mais lorsque j'essaie de l'adapter à mon fichier cela ne fonctionne pas je ne sais pas pourquoi déjà certainement que je ne maitrise pas la fonction Let :D pouvez vous m'aider svp
C'est le meme principe mais sur 2 onglets différents je ramène en colonne J de ma feuil1 les donnéess de mon tableuau TAB colonne 25 en fonction de ma tâche et ma date
 

Pièces jointes

  • cas test.xlsx
    32.7 KB · Affichages: 6

ALS35

XLDnaute Impliqué
Re,
Oui, plusieurs pb :
1) la fonction PRENDRE(t;;1), prend la première colonne du tableau, PRENDRE(t;;-1) prends la dernière, (alors que PRENDRE(t;;6) prends les 6 premières comme tu l'as modifié !)
Ta colonne BUDGET n'étant plus la dernière du tableau, il faut adapter. Le mieux est de recomposer un tableau à 3 colonnes avec ASSEMB.H et ça roule.
2) Tes noms de colonnes commencent par des espaces et ça pose pas mal de soucis, je les ai enlevés sur les colonnes concernées des deux tableaux
3) J'ai rajouté le paramètre si vide de la fonction FILTRE, pour les cas ou la tâche n'est pas trouvée
Ce qui donne :
VB:
=LET(t;TRIER(ASSEMB.H(TAB[No tache];TAB[Mois (AAAAMM)];TAB[Budget Production Cumule]);2);f;PRENDRE(FILTRE(t;(PRENDRE(t;;1)=[@[No Tache]])*(PRENDRE(t;;-1)<>"");"");-1;-1);f)
À tester.
Cordialement
 

Pièces jointes

  • cas test modifié.xlsx
    37.9 KB · Affichages: 3

Merlin258413

XLDnaute Occasionnel
Re,
Oui, plusieurs pb :
1) la fonction PRENDRE(t;;1), prend la première colonne du tableau, PRENDRE(t;;-1) prends la dernière, (alors que PRENDRE(t;;6) prends les 6 premières comme tu l'as modifié !)
Ta colonne BUDGET n'étant plus la dernière du tableau, il faut adapter. Le mieux est de recomposer un tableau à 3 colonnes avec ASSEMB.H et ça roule.
2) Tes noms de colonnes commencent par des espaces et ça pose pas mal de soucis, je les ai enlevés sur les colonnes concernées des deux tableaux
3) J'ai rajouté le paramètre si vide de la fonction FILTRE, pour les cas ou la tâche n'est pas trouvée
Ce qui donne :
VB:
=LET(t;TRIER(ASSEMB.H(TAB[No tache];TAB[Mois (AAAAMM)];TAB[Budget Production Cumule]);2);f;PRENDRE(FILTRE(t;(PRENDRE(t;;1)=[@[No Tache]])*(PRENDRE(t;;-1)<>"");"");-1;-1);f)
À tester.
Cordialement
Merci beaucoup je teste mais ca à l'air de fonctionner
 

job75

XLDnaute Barbatruc
Bonjour Merlin258413, ALS35,

Pas besoin des nouvelles fonctions de Microsoft 365, voyez les 3 noms définis Critere Mois Buget.

Ce sont des matrices, il suffit de les utiliser dans la formule en Feuil1!J3 :
Code:
=SIERREUR(INDEX(Budget;EQUIV(MAX(Mois);Mois;0));"")
Comme ALS35 j'ai supprimé les espaces superflus dans les titres des colonnes.

A+
 

Pièces jointes

  • cas test.xlsx
    31.8 KB · Affichages: 2

Merlin258413

XLDnaute Occasionnel
Bonjour Merlin258413, ALS35,

Pas besoin des nouvelles fonctions de Microsoft 365, voyez les 3 noms définis Critere Mois Buget.

Ce sont des matrices, il suffit de les utiliser dans la formule en Feuil1!J3 :
Code:
=SIERREUR(INDEX(Budget;EQUIV(MAX(Mois);Mois;0));"")
Comme ALS35 j'ai supprimé les espaces superflus dans les titres des colonnes.

A+
merci beaucoup ca fonctionne
 

job75

XLDnaute Barbatruc
En fait il suffit de définir le nom Mois après avoir sélectionné Feuil1!J3 :
Code:
=SI((Feuil1!$A3=TAB[No tache])*ESTNUM(TAB[Budget Production Cumule]);TAB[Mois (AAAAMM)] )
Puis d'entrer en Feuil1!J3 :
Code:
=SIERREUR(INDEX(TAB[Budget Production Cumule];EQUIV(MAX(Mois);Mois;0));"")
 

Pièces jointes

  • cas test.xlsx
    31.8 KB · Affichages: 3

Discussions similaires

Statistiques des forums

Discussions
315 088
Messages
2 116 087
Membres
112 656
dernier inscrit
VNVT