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
Bonjoiur
Pas compris tes problème, il faut dire que je me souviens pas tout à fait du contexte, peux -tu être plus explicite
et me préciser ce que chaque fonction doit renvoyer
pourquoi derligne2 et 3?
Et pour la macro derdate, j'ai essayé de changer la formule =derligne=(B33;"Article") au lieu de "Taille", mais ça fonctione pas??
 
Bonjoiur
Pas compris tes problème, il faut dire que je me souviens pas tout à fait du contexte, peux -tu être plus explicite
et me préciser ce que chaque fonction doit renvoyer
pourquoi derligne2 et 3?
Et pour la macro derdate, j'ai essayé de changer la formule =derligne=(B33;"Article") au lieu de "Taille", mais ça fonctione pas??
Bonsoir,

Déjà merci de ton aide.

On va prendre le problème le plus important.

La macro derdate.
Actuellement, dans une cellule j'ai la formule =derdate(I11;"Taille") qui fonctionne. Elle va chercher la dernière date du tableau t-Base avec le critère N° de carte et la colonne "Taille" dans feuille Base.

Je veut utiliser la même macro derdate en tapant la formule =derdate(B48;"Articles") qui ne fonctionne pas.
Je veux aller chercher la dernière date du tableau t-Base avec le critère N° de carte et la colonne "Articles" dans la feuille Base. B48 = BÉBÉ 0 - 36 MOIS 1 Paquet Lingettes Bébé

Je pensais que ça pourrait fonctionner avec la même macro , seulement en changeant la formule en changeant "Taille" par "Articles"


La macro derligne.

Derligne va chercher la dernière valeur 2 dans la colonne "Quantité prise" feuille Base. Mais si je saisi une nouvelle ligne avec la même articles avec la quantité 1 , la macro va chercher comme même 2. Moi, ce que je veux c'est la dernière quantité.
Donc j'ai rajouter dans ta macro >>

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

et à la fin j'ai aussi rajouter
If derligne = 1 Then derligne = ""

Car je ne veux pas voir 1 dans la colonne N et O
Je voulais seulement savoir si ma motif était juste.

Derligne2 et 3

Derligne2 et 3 > car je voulais faire renvoyer 1 , mais je pense avec uniquement avec derligne 2 ça suffisait pour les 2 colonnes L et M , mais je n'étais pas sûr.

Bonne soirée
 

Pièces jointes

Bonjour
à la vue de ta demande, j'ai modifié la fonction.
D'abord je l'ai appelé derx(valeur, colcherche, Optional retour), pour plus de lisibilité
cette fonction recherche la dernière 'valeur' dans la colonne 'colcherche' et renvoi la date si retour est omis ou la colonne donnée dans l'argument optionel 'retour'

Tu n 'as donc plus qu'une fonction avec deux ou trois arguments
dans le fichier joint, je n'ai conservé que les formules de la ligne 11 pour mieux testé et j'ai ajouté colonne p et q deux formules derx pour te montrer comment cela fonctionne.
Fait signe pour me dire si ca te convient
 

Pièces jointes

Bonjour
à la vue de ta demande, j'ai modifié la fonction.
D'abord je l'ai appelé derx(valeur, colcherche, Optional retour), pour plus de lisibilité
cette fonction recherche la dernière 'valeur' dans la colonne 'colcherche' et renvoi la date si retour est omis ou la colonne donnée dans l'argument optionel 'retour'

Tu n 'as donc plus qu'une fonction avec deux ou trois arguments
dans le fichier joint, je n'ai conservé que les formules de la ligne 11 pour mieux testé et j'ai ajouté colonne p et q deux formules derx pour te montrer comment cela fonctionne.
Fait signe pour me dire si ca te convient
Bonjour,

Ca fonctionne , je vais essayer en réel la semaine prochaine.
J'ai fait quelques test et ça marche.

Encore merci pour ton aide

Bon Week end
 
Bonjour
à la vue de ta demande, j'ai modifié la fonction.
D'abord je l'ai appelé derx(valeur, colcherche, Optional retour), pour plus de lisibilité
cette fonction recherche la dernière 'valeur' dans la colonne 'colcherche' et renvoi la date si retour est omis ou la colonne donnée dans l'argument optionel 'retour'

Tu n 'as donc plus qu'une fonction avec deux ou trois arguments
dans le fichier joint, je n'ai conservé que les formules de la ligne 11 pour mieux testé et j'ai ajouté colonne p et q deux formules derx pour te montrer comment cela fonctionne.
Fait signe pour me dire si ca te convient
Bonjour,

Comme convenu , je reviens vers toi .
J'ai essayer sur le fichier original, ça fonctionne .

Merci beaucoup
Bonne journée
 
Bonjour à tous
Regarde ceci fonction derdate(valeur;carte)
Avec le sourire
😌
Bonjour Sousou,
Je suis entrain de rechercher la dernière date, mais dans mon fichier il me renvoie une date , mais pas la dernière.
Tu m'avais fait une macro derdate et je voulais savoir si on peut l'adapter sur ma feuille "Commande"
Je te contacte par ce biais car je n'arrive pas joindre un fichier lorsque j'utilise la messagerie.
J'ai essayer avec le N°+ prénom et ensuite j'ai séparer n° et prénom (2 colonnes différente) Sur le fichier original, j'ai le N°+ prénom Exemple: 43 C

Merci
Bonjour à tous
Regarde ceci fonction derdate(valeur;carte)
Avec le sourire
😌
 

Pièces jointes

Dernière édition:
Bonjour
J'avoue ne pas bien comprendre ce que tu souhaites sur la feuille commande.
peux-tu préciser, et me rappeler le contexte
Bonjour Sousou,

Je vais essayer d’être clair pour ma demande.

  • Dans la feuille « Base », j’ai des données saisies via mon UserForm.
  • Dans la feuille « Commande », j’ai un tableau qui reprend toutes les personnes et en entête j’ai des produitsT2-T3-T4-T5 et L1-L2-L3 qui se trouve sur feuille « Base « colle « Taille »
  • Je voudrais avoir la dernière date de ces produits par au nom ( concatener n°+Prénom).
  • Je voudrais me servir de ce tableau pour faire mes commandes par semaine.
  • Au niveau T2-T3-T4-T5, il faut savoir si âge
  • 0 à 18 mois, c’est 1X par semaine
  • 18 à 24 mois 1X Par mois
  • Au-dessus de 24 mois pas droit
  • Au niveau L1-L2-L3 âge :
  • 0 à 6 mois droit L1 1x par semaine,
  • 6 à 12 mois droit L2 1x tous les 21 jours (3 semaines) ,
  • 12 à 18 mois L3 1x tous les mois,
  • Au-dessus 18 mois pas le droit.
  • Dans la feuille « Commande », je choisie avec mon menu déroulant la semaine et je peux savoir la commande que je peux faire semaine par semaine, je ne peux pas commander toutes les semaines la même chose. Mais ma formule ne fonctionne pas.
Je remets le fichier avec le tableau comme sur oiginal
Merci beaucoup
 

Pièces jointes

Oups
Pas encore très clair pour moi,
peux-tu donner un exemple concret avec les donnés de départ et le résultat attendu.
Tu parles de choisir une semaine, avec quel menu déroulant?
en attendant j'ai corrigé unee erreur signalé dans la feuille article semaine
ligne à modifier
If Trim(UCase(i)) = UCase(valeur) And i.Parent.Cells(i.Row, colCarte) = Carte Then
 
Dernière édition:
Oups
Pas encore très clair pour moi,
peux-tu donner un exemple concret avec les donnés de départ et le résultat attendu.
Tu parles de choisir une semaine, avec quel menu déroulant?
en attendant j'ai corrigé unee erreur signalé dans la feuille article semaine
ligne à modifier
If Trim(UCase(i)) = UCase(valeur) And i.Parent.Cells(i.Row, colCarte) = Carte Then
Par exemple dans la feuille en Colonne O, j'ai les semaines 2 / 2025, lorsque je cherche cette semaine avec le menu déroulant en C3, il faudrait il additionne le nombre de fois qu'il voit la semaine pour chaque critère T2, T3 T4, T5 .....
Le menu déroulant est sur le fichier ci-joint

Ou dois je modifier ta correction , sur quel macro ?
 

Pièces jointes

Le fichier pour la correction
Problème avec tes format de cellule?
quant tu mets 2/2025 que veux -tu vraiament avoir comme donnée,
ici tu renvoi une date sous la forme mois/année,
exemple en o5 la cellule renvoi 16/02/2025, donc tu peux compter des jours mais pas autres choses
tu veux compter quoi ? des semaine des mois des dates?
 

Pièces jointes

Le fichier pour la correction
Problème avec tes format de cellule?
quant tu mets 2/2025 que veux -tu vraiament avoir comme donnée,
ici tu renvoi une date sous la forme mois/année,
exemple en o5 la cellule renvoi 16/02/2025, donc tu peux compter des jours mais pas autres choses
tu veux compter quoi ? des semaine des mois des dates?
Je veux compter les nombres de T2 ou T3 ou T4 ou T5 qu'il y a dans la semaine. Par exemple colonne O, il y a 2 fois la semaine 1 / 2025, alors il faut compter 1x T2 et 1x T4. Faire le même comptage avec L1-L2-L3.
Pour le mois et année, j'ai mis se format pour les années à cheval. La liste déroulante va la chercher dans colonne H "Semaine". Tu peux changer le format . Quand j'ouvre le fichier en O5, j'ai 2 / 20025 et pas 16/02/2025.
Une petite précision, Exemple : Je donne un T4 a un enfant le 10/2/20025 semaine 07/20025, l'enfant a plus de 18 mois, donc il a le droit 1x par mois, c'est à dire la prochaine fois ça sera 10/03/2025 semaine 11, donc avec le comptage , je n'aurais pas besoin de commander en semaine 8. Si c'était pour tout âge 1x par semaine , il n'y aurait pas de problème, mais c'est différent .
0 à 18 mois toutes les semaines et entre de 18 mois et 24 mois , c'est 1x par mois et au-dessus de 24 mois plus d'article.
 

Pièces jointes

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
11
Affichages
538
Retour