Bonjour tout le monde,
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:
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
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: