RechercheV dans macro avec case variable

Bonjour,

J'ai un soucis lors que je veux intégrer une focntion dans ma macro.
J'aimerais faire une recherchev dans une case variable.
Voici ce que j'ai commencé à écrire.
For i = 2 To 5000
        Cells(y + 1, 8) = "=Vlookup(" & Cells(y + 1, 3) & ";Base_de_donnees!K1:L29;2;FALSE)"
y = y + 1
Next


Je n'ai encore jamais intégré de formule dans une macro, donc je ne sais pas trop si c'est comme cela qu'il faut que je l'écrive.
En gros ma recherchev est la suivante :
- dans la colonne C de la même ligne
- cherche cette même valeur dans la matrice de l'onglet "Base_de_donnees
- inscrire la valeur correspondante de la 2ème colonne de la matrice

Merci d'avance pour votre aide.

2 réponses

  1. Bonjour,

    Si c'est le résultat qui importe, tu peux utiliser la solution de Kuartz.
    Si tu veux une formule dans la cellule :
        Cells(y + 1, 8).Formula = "=VLOOKUP(C" & (y+1) & ",Base_de_donnees!K1:L29,2,FALSE)"


    J'espère que tu ne t'emmêles pas les pinceaux entre i et y.

    L'enregistreur de macro peut être utile pour obtenir une syntaxe, même s'il y a quelques écueils dans ce cas (R1C1,...)

    A+
    0
    1. J'allais le dire, te plante pas sur x et y. Si tu te plante de variable, alors ton code n'a aucune chance de fonctionner.
      0
    2. Je vois vos conseil me disant de ne pas me planter de variable.
      J'ai super attention à ça, normalement, je dis bien normalement je ne me suis pas trompé.
      Surtout que je ne vous ai pas tout avoué sur mon code et surtout sur mon nombre de variable. Il est "bien plus complexe" (dans le sens où mon nb de variable est assez important).

      Voici un bref aperçu :

      '
      ''Partie 4
      For i = 2 To 5000
          
          '
          '
          '
          'Renseignement de l'inventaire Partie 4
          If Nr_entrepot = Worksheets("Inventaire").Cells(i, 2) And (Worksheets("Inventaire").Cells(i, 5) = Worksheets("Base_de_donnees").Range("H5").Value) Then
      
              Cells(y + 8 + x + w, 1) = "Meuble frigorifique"         'Nom Partie Partie 4
              'Mise en forme titre Partie 4
              Range(Cells(y + 8 + x + w, 1), Cells(y + 8 + x + w, 8)).Select
              Call mise_en_forme_ligne_titre
              
              Cells(y + 9 + x + w + v, 1) = Worksheets("Inventaire").Cells(i, 1) 'Nom de l'entrepôt
              Cells(y + 9 + x + w + v, 2) = Worksheets("Inventaire").Cells(i, 5) 'Type d'installation
              Cells(y + 9 + x + w + v, 3) = Worksheets("Inventaire").Cells(i, 3) 'CODE
              Cells(y + 9 + x + w + v, 4) = Worksheets("Inventaire").Cells(i, 7) 'Désignation
              Cells(y + 9 + x + w + v, 5) = Worksheets("Inventaire").Cells(i, 8) 'Fabricant
              Cells(y + 9 + x + w + v, 6) = Worksheets("Inventaire").Cells(i, 9) 'Désignation type
              Cells(y + 9 + x + w + v, 7) = Worksheets("Inventaire").Cells(i, 13) 'Numéro de série
              Cells(y + 9 + x + w + v, 8).Value = Application.WorksheetFunction.VLookup(Cells(y + 9 + x + w + v, 8), Sheets(Base_de_donnees).Range("K1, L29"), 2, False)   'Unité
              Cells(y + 9 + x + w + v, 9) = ""                                    ' Tarif
              Cells(y + 9 + x + w + v, 10) = ""                                   'Plus-value
              v = v + 1
      
          End If
       
      Next
              'Mise en place de ligne Total Partie 4
              Cells(y + 9 + x + w + v, 1) = "Total Maintenance Partie 4" 'Ligne total maintenance Partie 4
                  'Mise en forme total Partie 4
                  Range(Cells(y + 9 + x + w + v, 1), Cells(y + 9 + x + w + v, 8)).Select
                  Call mise_en_forme_ligne_totale
      


      En fait si j'ai mis autant de variable, ce n'est pas forcément que je n'avais pas le choix, mais c'est surtout que je n'ai pas su faire autrement.
      Pour vous expliquer un peu le but de cette macro, je dois aller chercher un inventaire dans l'onglet inventaire. Sauf qu'il est constitué de 6 parties. Mon problème est que le nombre de ligne d'une partie de l'inventaire varie à chaque fois. Et je veux que chaque partie se succède lorsque je vais les chercher avec ma macro. D'où ce nombre important de variable.

      Pour information, cette macro fonctionne très bien, si je ne mets pas la formule "VLookUp", donc le problème ne vient pas des variables (sauf peut-être sur cette ligne, mais je ne vois pas pourquoi cela devrait être différent).

      P.S. : J'espère ne pas vous avoir découragé :)
      0
    3. VLOOKUP de la valeur se trouvant en colonne 3, et pas 8.
      0
    4. Exact, je n'avais pas fait attention à ça. Mais j'ai toujours le bug :(
      0
    5. Sans ton fichier, on ne peut pas aller plus loin, je crois.
      Tu as essayé la syntaxe que j'ai donnée ?
      Ou encore essayé d'enregistrer une macro en mettant la formule à la main ?
      0