XL 2016 Mettre en application INDEX et SOMMEPROD en BVA

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

candido57

XLDnaute Occasionnel
Bonjour,

J'ai une formule qui est très longue .
Je voudrais m'en servir en BVA, mais je connais pas le code. Pouvez vous me mettre le code
La formule ci-dessous elle va chercher le dernier résultat de la liste > Date saisi en C2.
J'ai dû mettre esterreur car sans ça j'ai une #VALEUR!
J'ai dû faire cette formule car sur le PC au boulot , je n'ai pas RECHERCHEX version Excel trop ancienne
Est ce qu'il y a une formule plus courte ?

Merci beaucoup pour votre aide

=@SI(ESTERREUR(@SI($H$1>=24;"Pas de couche";INDEX(t_Base[Date];SOMMEPROD((t_Base[N° de carte + Prénom]=$C$2)*("T4"=t_Base[Taille])*LIGNE(t_Base[N° de carte + Prénom]))-6)));"";SI($H$1>=24;"Pas de couche";INDEX(t_Base[Date];SOMMEPROD((t_Base[N° de carte + Prénom]=$C$2)*("T4"=t_Base[Taille])*LIGNE(t_Base[N° de carte + Prénom]))-6)))
 

Pièces jointes

Solution
Bonjour
REgarde ceci
Une nouvelle fonction autrederdate() avec trois arguments

regarde "i2 à i6" en bleue pour voir si c'est ca
à developer sur les autres cellules
Bonjour Sousou,
Oui c'est exactement ça, je trouve avec ta macro , il renvoie la bonne date.
Par contre lorsque j'ouvre mon fichier d'origine, il faut 5 secondes pour que les formules fonctionne, Excel lent, même lorsque je cherche une semaine dans le menu déroulant, le résultat s'affiche 5 secondes plus tard. Est ce que j'ai trop de formule? Trop de feuille ?
Que faire pour le booster?

Merci beaucoup pour ton aide

Bonne journée
Donc pas semaine?
Dans ce cas tu ne peux pas utiliser le format, tu dois en colonne o mettre une formule qui te renvois du texte du genre
=No.semaine() & "/" & année()
Avec du texte tu pourras compter
Ok Je regarderai et je reviens vers toi. Je t'avais poser une question. Tu m'avais fait une macro derdate, je voulais savoir s'il y a une possibilité de l'adapter pour trouver les dernières dates dans le tableau car sur le fichier original, il ne trouvent pas la dernière date.
 
RE
Voici un essai pour compter .
ici j'ai modifiier les formule colonne o, j'ai conservé mois? bien que la colonne soit marqué semaine
si tu souhaites voir pour les semaines, remlace mois("n2") par no.semeina(ne)
pour derdate pour moi ca fonctionne,
regarde dans la feuille article semaine en G23
 

Pièces jointes

RE
Voici un essai pour compter .
ici j'ai modifiier les formule colonne o, j'ai conservé mois? bien que la colonne soit marqué semaine
si tu souhaites voir pour les semaines, remlace mois("n2") par no.semeina(ne)
pour derdate pour moi ca fonctionne,
regarde dans la feuille article semaine en G23
Bonjour,
Pour la macro derdate , elle est faite pour la feuille "Articles" pour cette feuille , je ne veux rien toucher, ça fonctionne, mais je souhaiterais l'adapter pour le tableau qui se trouve en feuille "Commande", je trouve que ta macro donne la date juste ( La dernière date).
Actuellement, la macro derdate, il va chercher toujours une cellule E2 'Articles" nommé Carte et un autre critère qui est T2 ou un autre article.
Mais sur mon tableau feuille "Commande", j'ai une liste de noms et en entête un article , c'est différent. non !

En tout cas merci beaucoup pour ton aide
 
oui
mais je n'ai toujours pas compris comment tu veux l'utiliser dans la feuille commande et quel resultat dans quelle colonne😉
Re,
Voir le tableau feuille "Commande" la première ligne > exemple: cellule I2 > 2 critères en I1 (T2) et H2 (15 L), trouver la dernière date dans feuille "Base" colonne B. La même chose H2 et J1, la même chose en H2 et K1, la même H2 et L1.
Puis toutes les lignes jusqu'à ligne 59 de la colonne H à L . encadrée en rouge
Si j'ai 2 dates sur la même ligne , prendre en compte la date la plus à droite, les autres mettre vide.
 

Pièces jointes

Bonjour
REgarde ceci
Une nouvelle fonction autrederdate() avec trois arguments

regarde "i2 à i6" en bleue pour voir si c'est ca
à developer sur les autres cellules
Bonjour Sousou,
Oui c'est exactement ça, je trouve avec ta macro , il renvoie la bonne date.
Par contre lorsque j'ouvre mon fichier d'origine, il faut 5 secondes pour que les formules fonctionne, Excel lent, même lorsque je cherche une semaine dans le menu déroulant, le résultat s'affiche 5 secondes plus tard. Est ce que j'ai trop de formule? Trop de feuille ?
Que faire pour le booster?

Merci beaucoup pour ton aide

Bonne journée
 
Re je sais que tu n'as pas de problème, c'est normal car le fichier original à plus de données.
Je pensais qu'il y avait une astuce pour le booster.
En tout cas tu m'as bien aidé, Merci beaucoup.
Bonne journée
Bonjour Sousou,
J'ai essayé d'utiliser ta macro pour un autre fichier , mais ça bloque au niveau tableau. J'ai mis en gras où ça bloque.
Pourtant t_Base3, c'est juste, le nom de la feuille "Base" c'est juste aussi, le nom du tableau aussi.
Serait-il possible me dire où ça pourrait bloqué ?
Merci

Function autrederdate1(valeur, article, carte)

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_Base3") 'Définit le tableau
coldate = tableau.ListColumns("Date").DataBodyRange.Column 'Numéro de la colonne 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)) = UCase(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

autrederdate1 = madate
If autrederdate1 = 0 Then autrederdate1 = ""
End Function
 

Pièces jointes

  • Capture d'écran 2025-02-14 164943.png
    Capture d'écran 2025-02-14 164943.png
    75.2 KB · Affichages: 5
Dernière édition:
- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD

Discussions similaires

Réponses
3
Affichages
452
Réponses
12
Affichages
479
Réponses
11
Affichages
478
Réponses
10
Affichages
605
Retour