Problème VLOOKUP

Bonjour,

Je travaille actuellement sur un fichier excel devant regrouper des informations provenant d'autres tableaux grâce à des VLOOKUP.

Jusqu'ici, je n'avais pas de problèmes pour utiliser cette formule, mais je rencontre un problème pour l'une des colonnes (colonne P).

La formule me renvoit toujours la même valeur, sur toute la colonne, mais qui ne correspond pas à ma valeur de recherche...

Voici le code :

Workbooks("tableau de suivi des modifs supply chain.xlsx").Activate
'Worksheets("Suivi des Créations").Activate

CompteurLigne = range("AK169").Value

Workbooks("ADV.xlsm").Activate

'Récupération des Mail création GDP (Colonne P - ADV / Colonne J - tableau des modifs supply chain)
range("P2:P" & CompteurLigne).Select

'Selection.FormulaR1C1 = "=IF(VLOOKUP(RC[-12],'[tableau de suivi des modifs supply chain.xlsx]Suivi des Créations'!R1C1:R" & CompteurLigne & "C10,1,TRUE)=RC[-12],VLOOKUP(RC[-12],'[tableau de suivi des modifs supply chain.xlsx]Suivi des Créations'!R1C1:R" & CompteurLigne & "C30,10,TRUE),NA())"
Selection.FormulaR1C1 = "=VLOOKUP(RC[-12],'[tableau de suivi des modifs supply chain.xlsx]Suivi des Créations'!R1C1:R" & CompteurLigne & "C10,1,TRUE)"

Merci de votre aide,

Bonjour TLAsker,

Le mieux est d'éviter d'utiliser des "Select" qui ralentissent le code

Sinon le problème de ton RechercheV() c'est que tu utilises "Vrai" comme dernier argument, valeur approchante

Perso, je préfère utiliser "FormulaLocal"

Voici la ligne à corriger

'Récupération des Mail création GDP (Colonne P - ADV / Colonne J - tableau des modifs supply chain)
Range("P2:P" & compteurligne).FormulaLocal = _
  "=RECHERCHEV(D3;'[tableau de suivi des modifs supply chain.xlsx]Suivi des Créations'!$A$1:$J$" & compteurligne & ";1;FAUX)"

@+

Bonjour BrunoM45 et merci pour ta réponse.

Merci pour l'astuce du select, je tâcherai de les retirer du code

En ce qui concerne, le dernier argument, avec "Faux", j'obtiens #N/A alors que la valeur se trouve bien dans le second tableau.

De plus, je compte utiliser un Double VLOOKUP (question de rapidité) qui nécessite l'utilisation de la valeur approchante (j'ai laissé en exemple la ligne en commentaire avec le double VLOOKUP)

Enfin, j'ai trié les numéros d'article par ordre croissant dans les deux tableaux mais ça ne règle pas non plus le problème.

Je vais essayer avec FormulaLocal et j'éditerai mon post si cela fonctionne.

Merci!

Voici la formule que je souhaite utiliser :

=SI(RECHERCHEV(D2;'[tableau de suivi des modifs supply chain.xlsx]Suivi des Créations'!$A$1:$J$6968;1;VRAI)=D2;RECHERCHEV(D2;'[tableau de suivi des modifs supply chain.xlsx]Suivi des Créations'!$A$1:$J$6968;10;VRAI);NA())

Cependant, j'obtiens toujours #N/A. J'ai bien vérifié, et j'ai bien mes numéros d'article dans la colonne D sur le premier tableau et dans la colonne A sur le deuxième et les numéros d'articles existent bien dans les deux tableaux. Je ne vois pas pourquoi ça fait comme si ils n'existaient pas.

Je tiens à préciser que cette formule fonctionne bien avec les colonnes précédentes mais avec une feuille du même classeur.

Re,

Sans les fichiers anonymisés, cela va être compliqué de t'aider

@+

Je sais que c'est problématique, mais ce sont les fichiers de mon entreprise avec des numéros de clients ainsi que les commandes, c'est donc confidentiel...

Mais j'ai trouvé une solution avec la formule INDEX/EQUIV qui je pense fonctionnera mieux. Je ne m'y étais jamais intéressé avant mais elle me semble plus pratique.

Merci de ton aide !

Bonjour,

Si vraiment le problème persiste sans raison, essaie de voir si dans un fichier les données ne seraient pas stockées sous forme de nombre et dans l'autre sous forme de texte. Auquel cas, le #N/A s'expliquerait.

Bonjour,

Les formats sont les mêmes.

Je pense que le problème vient du fait que la colonne de référence (numéros d'article) provient déjà d'une rechercheV et lorsque j'utilise cette colonne comme référence pour ma rechercheV dans la colonne P, celle-ci récupère la formule de la cellule et non sa valeur.

À quoi servirait Excel si on ne pouvait pas récupérer le résultat d'une formule ??

Je ne sais pas mais quand je passe par une variable dans laquelle je stocke range("D2"), cela fonctionne.

Exemple :

Dim searchValue As range
Set searchValue = range("D2")
range("P2:P" & CompteurLigne).FormulaR1C1 = "=VLOOKUP(" & searchValue & ",'[tableau de suivi des modifs supply chain.xlsx]Suivi des Créations'!R1C1:R" & CompteurLigne & "C10,10,FALSE)"

Fonctionne

alors que :

range("P2:P" & CompteurLigne).FormulaR1C1 = "=VLOOKUP(D2,'[tableau de suivi des modifs supply chain.xlsx]Suivi des Créations'!R1C1:R" & CompteurLigne & "C10,10,FALSE)"

Ne fonctionne pas

Re,

FormulaR1C1 demande une référence du même style, donc D2 n'est pas correcte, il faut utiliser "R2C4" je pense

@+

Non, il faut que j'utilise RC[-12] car ma colonne active est la colonne P, il faut donc que j'aille 12 colonnes vers la gauche pour atteindre la colonne D. Cependant, pour cette formule en particulier (avec celles que j'avais fait auparavant pour d'autres colonnes, cela fonctionnait), écrire RC[-12] ne fonctionne pas.

Il faudrait donc que je mette cette valeur (RC[-12]) dans une variable, mais je ne sais pas comment faire...

Re,

Désolé, je ne pourrais pas t'aider, je n'utilise jamais "FormulaR1C1"

Pas de soucis, merci pour tes réponses

Rechercher des sujets similaires à "probleme vlookup"