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.
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.
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
-
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+-
-
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é :) -
-
-
-