XL 2013 rechercher la dernière date

candido57

XLDnaute Occasionnel
Bonjour,

Merci pour votre aide

J'ai 3 formules
=INDEX(t_Base[Date];SOMMEPROD((t_Base[N° de carte + Prénom]=Carte)*(B33=t_Base[Articles])*LIGNE(t_Base[N° de carte + Prénom]))-6) >> je reçois REF

=SI($O5>0;INDEX(t_Base[Date];EQUIV($E$2&$B33;t_Base[N° de carte + Prénom]&t_Base[Articles];0));"") >> je reçois rien, la cellule est vide

=SIERREUR(INDEX(t_Base[Date];EQUIV($E$2&$B33;t_Base[N° de carte + Prénom]&t_Base[Articles];0));""), je reçois une date , mais pas le dernière

J'ai aussi une macro

Je mets celle formule dans la cellule et ça me renvoie aucune date =derdate(B33;"Articles")


Function derdate(valeur, article)

Application.Volatile

'initialisation
Carte = ThisWorkbook.Names("Carte").RefersToRange.Value 'numéro de carte trouvé dans les celule nommées
Set tableau = Sheets("base").ListObjects("T_base") 'Définit le tableau
coldate = tableau.ListColumns("Date").DataBodyRange.Column ' numéro de la colopnne ou trouver la date
colCarte = tableau.ListColumns("N° de carte + prénom").DataBodyRange.Column ' numéro de la colonne ou trouver le numéro de carte

For Each i In tableau.ListColumns(article).DataBodyRange 'pour chaque lignes de la colonne du tableau

'MsgBox i.Parent.Cells(i.Row, 3) & "/" & i & "/" & i.Parent.Cells(i.Row, 2)
'trim supprime les espaces avant et après
'ucase convertit tout en majuscule
'si i = la valeur et que le numéro de carte correspond


If Trim(UCase(i)) = valeur And i.Parent.Cells(i.Row, colCarte) = Carte Then

'alors si la date est supérieure à la précédente mémorise la date
If CDate(i.Parent.Cells(i.Row, coldate)) > madate Then madate = CDate(i.Parent.Cells(i.Row, coldate))
End If

Next
'renvoi la date
derdate = madate
If derdate = 0 Then derdate = ""


End Function
 

Pièces jointes

  • Distri bb test (21).xlsm
    201.3 KB · Affichages: 1
Dernière édition:

Discussions similaires

Réponses
1
Affichages
1 K

Statistiques des forums

Discussions
315 236
Messages
2 117 638
Membres
113 215
dernier inscrit
guillet