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
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
Dernière édition: