Pbm de Variables dans Recherchev

La braise

XLDnaute Occasionnel
Bonjour à tous,

Je vous soumet un pbm qui m'embête bien car il m'oblige à écrire beaucoup de lignes identiques à quelques chiffres près... les variables que je souhaite intégrer.

Je fais du mapping de fichier. A partir de la valeur d'une colonne donnée je rajoute plusieurs colonnes d'autres informations en provenance d'un fichier de mapping.

J'utilise cette routine pour chaque colonne.
En rouge les données que je souhaite remplacer par des variables :


Range("I" & C_NBLignesClients).Select

ActiveCell.FormulaR1C1 = _
"=IF(VLOOKUP(RC[-5],'" & C_FileMappClients & "'!C_PlageClients,1,1)=RC[-5],VLOOKUP(RC[-5],'" & C_FileMappClients & "'!C_PlageClients,5,1),""_SUPP_"")"

Selection.AutoFill Destination:=Range("I" & C_NBLignesClients & ":I" & C_NBLignes)

Range("I" & C_NBLignesClients & ":I" & C_NBLignes).Select

Selection.Copy
Selection.PasteSpecial Paste:=xlPasteValues
Application.CutCopyMode = False

Je dois ajouter plusieurs colonnes à partir de la colonne de base.
Par chance mes colonnes sont dans le même ordre dans le ficheir de mapping que le fichier de destination.

Mon idée : créer une boucle qui va remplir chaque colonne


1) Remplacer le I des range de destination apr une variable que j'utiliserais pour le For Next de la boucle, de =10 to 15 si 6 colonnes.

Transformer : Range("I" & C_NBLignesClients).Select
en
Range(Cells(C_NBLignesClients, Variable_1)).Select


2) Remplacer le 5 du nb de colonnes de la recherchev pour cela j'ai créé une variable_2 = Variable_1 - 5


3) remplacer le RC[-5] par une variable qui augmente de 1 à chaque passage pour tenir compte du décalage de la colonne de destination.
Par chance (ou pas... niveau confusion...) ma colonne de référence est placé à -5 colonnes de celle de destination du Recherchev et également dans le fichier de mapping l'info cherché est situé dans la 5ème colonne.
Pour la colonne suivante, on cherche donc la valeur situé -6 colonnes qui sera situé à l'index 6 du fichier de mapping.

J'ai essayé d'utiliser la même variable Variable_2
RC[-" & Variable_2 & "] pour remplacer RC[-5]

Mais voilà... ça marche pas.

Mon code ci-dessous :


For Variable_1 = 10 To 10 'to 13 PROD

Variable_2 = Variable_1 - 5

Range(Cells(C_NBLignesClients, Variable_1)).Select

ActiveCell.FormulaR1C1 = _
"=IF(VLOOKUP(RC[-" & Variable_2 & "],'[Mapping clients.xls]Hiérarchie'!C_PlageClients,1,1)=RC[-" & Variable_2 & "],VLOOKUP(RC[-" & Variable_2 & "],'[Mapping clients.xls]Hiérarchie'!C_PlageClients,variable_2,1),""_SUPP_"")"

Selection.AutoFill Destination:=Range(Cells(C_NBLignesClients, Variable_1), Cells(C_NBLignes, Variable_1))

Range(Cells(C_NBLignesClients, Variable_1), Cells(C_NBLignes, Variable_1)).Select

Selection.Copy
Selection.PasteSpecial Paste:=xlPasteValues
Application.CutCopyMode = False
Next Variable_1


Si une bonne âme a une idée pour m'aider... :D

D'avance merci pour votre aide toujours aussi précieuse.
 
Dernière édition:

homepyrof53

XLDnaute Occasionnel
Re : Pbm de Variables dans Recherchev

Bonsoir,

Je n'ai pas approfondi ta macro, mais voilà

Dans ce forum, beaucoup utilise Range("A1"), moi j'utilise jamais cette façon d'écrire l'adresse d'une cellule.
J'utilise cells(ligne,colonne) ou ligne et colonne sont des numériques, donc plus facile à manipuler.
pour une grande plage : range(cells(l1,c1),cells(l2,c2))

Range("I" & C_NBLignesClients).Select

devient
l1=9
c1=C_NBLignesClients
cells(l1,c1).Select

RC[-5]
devient cells(l,c1-5)

si tu englobes tout par

for l1=9 to x ' toutes tes colonnes

.........................
next


voila

cells
 

Discussions similaires

Réponses
7
Affichages
338
  • Question
Microsoft 365 Formules
Réponses
2
Affichages
417

Statistiques des forums

Discussions
312 163
Messages
2 085 862
Membres
103 006
dernier inscrit
blkevin