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
à 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 le dit sousou, avec un fichier c'est mieux en général 🙄

Mais sinon à la "one again" voici une possibilité.
VB:
Sub Test()
  Dim sForm As String
  sForm = "=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)))"
  Range("A1").FormulaLocal = sForm
End Sub

A+
 
Un peu plus d'information.

Feuille "Articles" je choisie En D2 un numéro
En G5 , je voudrais qu'une macro me note en G5 le résultat de:
en voyant le n° en D2, il cherche dans feuille "Base", la dernière date de la colonne B mais avec critère N° de carte et articles = "LAIT N° 2".
Idem en G6 pour LAIT N°3
Idem en G9 pour Couche n°1 , G10 pour couche N°2 etc...

En K9 feuille "Articles", je souhaite avoir le dernier résultat de la colonne H si trouve 2 , mais avec les critères n° de carte colonne C et Taille colonne K dans feuille "Base"

Le but , je saisie en D2 et tout s'affiche, s'il n'y a rien alors je laisse la cellule vide
 
A priori, oui... vous ne comprenez rien de rien 🙄

Je vous ai donné la réponse ici https://excel-downloads.com/threads...ex-et-sommeprod-en-bva.20085529/post-20671148

restée sans retour de votre part... What else
Je suis là pour qu'on m'aide, je ne suis pas là pour être humilié ou à la limite insulté.
Tout le monde ne connais pas Excel et VBA sur les bout des doigts , c'est mon cas.
J'ai mis en place votre macro et ça ne fonctionne pas.
J'ai mis plus de précision et un fichier .
Si vous voulez encore m'aider c'est bien , sinon tant pis.
Bonne journée
 
Je suis là pour qu'on m'aide, je ne suis pas là pour être humilié ou à la limite insulté.
Oh la.. mon pauvre si vous voyez les choses comme ça... c'est bien dommage pour vous
Encore un traumatisé de la vie... j'en suis navré 🤭

Ne pas connaitre VBA est une chose, ne pas suivre les conversations et ne pas répondre en est une autre...

Sur ce bonne continuation... dans ce monde injuste
 
Oh la.. mon pauvre si vous voyez les choses comme ça... c'est bien dommage pour vous
Encore un traumatisé de la vie... j'en suis navré 🤭

Ne pas connaitre VBA est une chose, ne pas suivre les conversations et ne pas répondre en est une autre...

Sur ce bonne continuation... dans ce monde injuste
1) je ne suis pas ton pauvre
2) j'ai répondu , mais pas au bon endroit , ça ne justifie pas que je comprends rien de rien
3) respecte les gens
 
Dernière édition:
3) respecte les gens
Bonjour,
Holà !!! On se calme !
D'abord, le respect, ça marche dans les deux sens.
Ici, les contributeurs sont bénévoles et leur seule "récompense" est une réponse avec, si possible, de temps en temps, un "merci" lorsque leur proposition a permis de résoudre la question posée.
wDog66 vous a donné une solution (vite fait, comme il l'a dit) et vous dites qu'elle ne marche pas.
Ça semble logique vu qu'il n'a pas vérifié votre formule et qu'il s'est contenté (toujours comme il l'a dit) de la traduire en VBA.
Mais c'est votre formule qui ne marche pas ... pas la proposition de wDog66 !
Voici ce que donne votre formule :
1733926891268.png

La traduction en VBA ne fera rien d'autre !
Corrigez votre formule (ou votre fichier ?), ou bien demandez de l'aide pour cela en précisant bien l'attendu et vous pourrez alors juger de la qualité de la proposition de wDog66.
Bien cordialement,
 
Bonjour,
Holà !!! On se calme !
D'abord, le respect, ça marche dans les deux sens.
Ici, les contributeurs sont bénévoles et leur seule "récompense" est une réponse avec, si possible, de temps en temps, un "merci" lorsque leur proposition a permis de résoudre la question posée.
wDog66 vous a donné une solution (vite fait, comme il l'a dit) et vous dites qu'elle ne marche pas.
Ça semble logique vu qu'il n'a pas vérifié votre formule et qu'il s'est contenté (toujours comme il l'a dit) de la traduire en VBA.
Mais c'est votre formule qui ne marche pas ... pas la proposition de wDog66 !
Voici ce que donne votre formule :
Regarde la pièce jointe 1208866
La traduction en VBA ne fera rien d'autre !
Corrigez votre formule (ou votre fichier ?), ou bien demandez de l'aide pour cela en précisant bien l'attendu et vous pourrez alors juger de la qualité de la proposition de wDog66.
Bien cordialement,
Bonjour,
Vous avez raison, on n'est pas là pour se voler dans les plumes. J'ai toujours été polie, respectueux et remercier les personnes qui m'aident. C'est vrai que je n'ai pas répondu au bon endroit, mais ça arrive de se tromper. Mais simple > Répond moi dans #3 ça aurait suffit.
Pour ma formule , je n'arrive pas à trouvé où est l'erreur.
 
Bonjour,
Vous avez raison, on n'est pas là pour se voler dans les plumes. J'ai toujours été polie, respectueux et remercier les personnes qui m'aident. C'est vrai que je n'ai pas répondu au bon endroit, mais ça arrive de se tromper. Mais simple > Répond moi dans #3 ça aurait suffit.
Pour ma formule , je n'arrive pas à trouvé où est l'erreur.
Re bonjour,
Déjà, après un coup d'œil rapide à votre fichier, il recèle des "choses" pas "saines".
Exemple : "COUCHE T3 " ou "COUCHE T4 " (avec un espace à la fin), c'est source d'erreurs à l'infini.
La première chose à faire est de supprimer ces espaces inutiles (soit à la main, soit à l'aide de la fonction SUPPRESPACE bien utilisée) puis de regarder l'impact que ça aura sur les formules existantes.
Ensuite, il faudra corriger les formules existantes (genre "DROITE(macellule;3)" en "DROITE(macellule,2)).
Il faudra ensuite reposter le fichier corrigé.
Alors seulement il conviendra de voir comment corriger la formule objet de ce post (à première vue, elle renvoie un tableau et non une valeur mais je ne l'ai pas analysée en détail).
Cordialement,
 
Re bonjour,
Déjà, après un coup d'œil rapide à votre fichier, il recèle des "choses" pas "saines".
Exemple : "COUCHE T3 " ou "COUCHE T4 " (avec un espace à la fin), c'est source d'erreurs à l'infini.
La première chose à faire est de supprimer ces espaces inutiles (soit à la main, soit à l'aide de la fonction SUPPRESPACE bien utilisée) puis de regarder l'impact que ça aura sur les formules existantes.
Ensuite, il faudra corriger les formules existantes (genre "DROITE(macellule;3)" en "DROITE(macellule,2)).
Il faudra ensuite reposter le fichier corrigé.
Alors seulement il conviendra de voir comment corriger la formule objet de ce post (à première vue, elle renvoie un tableau et non une valeur mais je ne l'ai pas analysée en détail).
Cordialement,
Bonjour,

Merci pour votre aide , voici le fichier corrigé
 

Pièces jointes

Notre forum d’entraide est 100 % gratuit et le restera.
Aucune formation payante, aucun fichier à acheter, rien à vendre. Mais comme tout site, nous devons couvrir nos frais pour continuer à vous accompagner.
Soutenez-nous en souscrivant à un compte membre : c’est rapide, vous choisissez simplement votre niveau de soutien et le tour est joué.

Je soutiens la communauté et j’accède à mon compte membre

Discussions similaires

Réponses
3
Affichages
436
Réponses
12
Affichages
462
Réponses
11
Affichages
456
Réponses
10
Affichages
573
Retour