Renvoyer plusieurs valeurs d'un coup avec la fonction vlookup

  • Initiateur de la discussion Initiateur de la discussion Isaros
  • Date de début Date de début

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 !

Isaros

XLDnaute Nouveau
Bonjour tout le monde,

Pour simplifier, je reformulerais ma question comme suit:

La fonction vlookup (recherchev) ne renvoyant qu'une seule valeur, existe-t-il un moyen pour renvoyer une plage de valeurs?

Ou éventuellement, est-il possible déterminer la position (numéro de ligne) de la cellule dans laquelle la fonction vlookup est allé chercher le résultat?
Cette info me permettrait d'aller chercher les 11 autres valeurs d'un coup.

Mon problème est le suivant:
J'ai 2 fichiers excel, l'un contenant plusieurs champs dont "code article"
Le deuxième fichier contient aussi le champs "code article" mais il contient en plus 12 champs correspondant aux 12 dernières consomations mensuelles réalisées "CMR-12", "CMR-11", ..., "CMR-1".

Tout cela n'étant pas dans le même ordre et les données n'étant pas forcément disponibles, j'utilise actuellement le code suivant pour tout rassembler dans un seul et même tableau:


Code:
      [COLOR="Green"]'lig est la taille  du premier tableau et lig2 celle du deuxième[/COLOR]
      For i = 1 To 12
        Cells(4, 22 + i).Select
        ActiveCell.FormulaR1C1 = _
            "=VLOOKUP(RC3,'consumption'!R4C3:R" & lig2 & "C16,2+" & i & ",FALSE)"
        Selection.Copy
        ActiveCell.Resize(lig - 3, 1).Select
        ActiveSheet.Paste
      Next i

Mais le nombre d'article étant très grand, je me demande si il n'y a pas moyen de faire plus rapide. En effet, la recherche est effectuée 12 fois pour chaque article alors que les 12 valeurs dont j'ai besoin se trouvent bien évidemment sur la même ligne du tableau dans lequel je fais la recherche. Est il possible de récupérer les 12 valeurs en une seule opération?

Si vous connaissez une astuce qui permetrait de faire cela plus efficacement je suis preneur car cela prend plus de 15 minutes actuellement...

Ci-joint un petit fichier pour mieux visualiser

Merci beaucoup
 

Pièces jointes

Dernière édition:
Re : Renvoyer plusieurs valeurs d'un coup avec la fonction vlookup

Bonjour Isaros et le forum,

Je te suggère de mettre une seconde boucle afin de sélectionner les cellules successives.

Cela est du style :

For i = 1 To 12
For j = 4 to X
Cells(j, 22 + i).Select
ActiveCell.FormulaR1C1 = _
"=VLOOKUP(RC3,'consumption'!R4C3:R" & lig2 & "C16,2+" & i & ",FALSE)"
Selection.Copy
ActiveCell.Resize(lig - 3, 1).Select
ActiveSheet.Paste
Next j
Next i

Cordialement

Bernard
 
Re : Renvoyer plusieurs valeurs d'un coup avec la fonction vlookup

Bonjour CBernardT et skoobi

Est ce que cela ne revient-il pas au même d'ecrire la formule dans la première case de la colonne et d'ensuite copier coller sur toute la colonne? C'est à ça que sert:

Selection.Copy
ActiveCell.Resize(lig - 3, 1).Select
ActiveSheet.Paste

mais si je peux gagner du temps en insérant une nouvelle boucle pourquoi pas.

Cela dit, ma question n'est pas exactement sur ce point. Je me demande si il n'y a pas un autre moyen que de faire un vlookup pour chaque cellule. Car une fois la première valeur trouvée, il suffirait de copier les 11 suivantes se trouvant sur la même ligne. Au lieu de ça, pour un article donné, l'opération vlookup s'effectue 12 fois.

Ci-joint un exemple (mes tableaux comportent parfois plusieurs dizaines de miller d'articles, d'ou la recherche de gain de temps...)

Merci de votre aide

Isaros
 

Pièces jointes

Re : Renvoyer plusieurs valeurs d'un coup avec la fonction vlookup

Je me permet un petit UP avant de tomber définitivement aux oubliettes😀

Pour simplifier, je reformulerais ma question comme suit:

La fonction vlookup (recherchev) ne renvoyant qu'une seule valeur, existe-t-il un moyen pour renvoyer une plage de valeurs?

Ou éventuellement, est-il possible déterminer la position (numéro de ligne) de la cellule dans laquelle la fonction vlookup est allé chercher le résultat?
Cette info me permettrait d'aller chercher les 11 autres valeurs d'un coup.

Merci
 
Re : Renvoyer plusieurs valeurs d'un coup avec la fonction vlookup

Re,

Si vous connaissez une astuce qui permetrait de faire cela plus efficacement je suis preneur car cela prend plus de 15 minutes actuellement...
Revoilà ce fameux "Select" qui empoisonne tout code VBA.
Un exemple parfait qui montre son inefficacité.
Je te propose un autre code ci-joint sans l'utilisation du "Select" et "Copy" + "Paste" ("merci" l'enregistreur de macro, sic 😱).
Tu devrais voir une différence de temps d'exécution......😎
 

Pièces jointes

Re : Renvoyer plusieurs valeurs d'un coup avec la fonction vlookup

bonjour,
voici une proposition avec l'instruction FIND (jusqu'à ligne 65536 : je ne peux pas faire mieux avec ma version Excel 2000)
à tester sur fichier d'essai
cela m'intéresse de connaître si le temps de traitement est supportable sur grosses quantités.
bye
 

Pièces jointes

- 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

Retour