Macro Excel et Recherchev

Bonjour,

j'ai un soucis avec ma macro pour effectuer une recherchev, entre 2 feuilles d'un même classeur.

J'utilise la version 2003.

Je veux chercher une valeur de la colonne A de la première feuille, pour renseigner une nouvelle colonne C de cette même feuille.
Dans la deuxième feuille, les valeurs recherchées (colonne A feuille1) sont dans la colonne D, et ma valeur cible est dans la colonne B.

Voici comment j'ai écrit ma macro :

Sub Macro1()

Columns("C:C").Select
Selection.Insert Shift:=xlToRight
Range("C1").Select
ActiveCell.FormulaR1C1 = "Texte"
Range("C2").Select
ActiveCell.FormulaR1C1 = "=vlookup(RC[-2],Feuille2!C[1]:C[-1],1,0)"
Range("C2:C10").Select
Selection.FillDown

End Sub

J'obtiens une colonne de #N/A sans trouver ce qui cloche!
merci à vous de m'éclairer!

++
Fabien

2 réponses

  1. ok donc faut que je déplace ma colonne, merci!

    ma macro marchait bien en effet pour aller chcher les données dans une colonne à droite de ma cible, et je pensais que ca marchait dans l'autre sens aussi, domage ;)
    0
    1. Contributeur
      Bonjour,

      Attention car RECHERCHEV suppose que la valeur recherchée est dans la première colonne de la matrice de recherche et il retourne la valeur correspondante indiquée par le 3° paramètre qui ici vaut 1.

      Par exemple si on écrit comme dans la macro ci dessus (je traduit en notation A1) :

      RECHERCHEV(A2;Feuille2!B:D;1;0) cela signifie qu'il cherche la valeur A2 dans la colonne B et qu'il retourne la valeur de B.

      la syntaxe :

      RECHERCHEV(A2;Feuille2!B:D;3;0) signifie qu'il cherche la valeur A2 dans la colonne B et qu'il retourne la valeur correspondante en colonne D.

      Si j'ai bien compris c'est le contraire qui est souhaité. SI c'est bien cela alors il faut inverser les colonne B et D dans Feuille2 et écrire :

      ActiveCell.FormulaR1C1 = "=vlookup(RC[-2],Feuille2!C[1]:C[-1],3,0)"

      Edit : je précise que de toute façon il met toujours les colonnes dans l'ordre donc la syntaxe ci dessus ne change rien. Il ne cherche pas dans la matrice D:B mais toujours dans B:D d'ou l'obligation d'inverser les données des colonnes B et D

      A+
      Cordialement,
      0