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'avance merci pour votre aide toujours aussi précieuse.
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'avance merci pour votre aide toujours aussi précieuse.
Dernière édition: