Appliquer une formule VLOOKUP par nom de colonne
Bonjour à tous,
Je suis en train de changer une macro qui jusqu'ici se basait sur les numéros des colonnes pour qu'elle se base sur les noms des colonnes, car l'ordre et le nombre de colonnes sont amenées à évoluer souvent, et renuméroter toute la macro à chaque changement n'est pas viable.
Pour ce faire, j'ai fait en sorte que la macro commence par convertir les données en un tableau dynamique.
Le problème auquel je me heurte est le suivant : il y a dans cette macro des formules VLOOKUP, qui se basent sur le numéro des colonnes, comme celle-ci : Range("Table1[Check Doc Items]").FormulaR1C1 = "=IFERROR(VLOOKUP(RC[-3],'Docs Items-EN'!C[-9],1,FALSE),0)".
La partie en italique concerne une autre feuille, qui elle peut se baser sur le numéro des colonnes, mais le "RC[-3]" se base du coup sur la place de la colonne et je souhaiterai le corriger.
Des idées ?
Merci d'avance et très bonne journée à vous,
Cordialement,
Aelyth
Bonjour,
Quand tu dis ''Entête de colonne'' tu évoques une ligne d'entête ?
Si oui, pour moi, le plus simple est de passer par une collection, mais il ne faut aucun doublon dans la ligne d'entête. C'est très efficace.
Admettons que la ligne 1 comporte les entêtes de colonnes A à D "Code Client, Nom, Adresse, Ville"
Dim Entete As New Collection, c As Long
With ActiveSheet
For c = 1 To .UsedRange.Columns.Count
If Trim(.Cells(1, c)) <> Empty Then Entete.Add c, Trim(.Cells(1, c))
Next c
End WithEntete("Nom") retournera 2 (colonne B)
Entete("Ville") retournera 4 (Colonne D)
Donc il faudra que tu remplaces le numéro par :
Range("Table1[Check Doc Items]").FormulaR1C1 = "=IFERROR(VLOOKUP(RC[-3],'Docs Items-EN'!C[-9],Entete("Ville"),FALSE),0)".
Ou plus propre, ce qui te permettras de faire des tests avant de mettre la formule dans la cellule pour éviter des erreurs de formules :
MaColonne = Entete("Ville"))
Range("Table1[Check Doc Items]").FormulaR1C1 = "=IFERROR(VLOOKUP(RC[-3],'Docs Items-EN'!C[-9],MaColonne,FALSE),0)".
Bonjour,
Quand je parle de nom de colonne, je parle du nom donné à une colonne, et qui permet de l'identifier, en écrivant par exemple [Table1[Nomdecolonne]].
Je ne cherchais pas à compléter cette partie de la formule VLOOKUP, mais plutôt la première, le "RC[-3]" présent en gras ici : "=IFERROR(VLOOKUP(RC[-3],'Docs Items-EN'!C[-9],1,FALSE),0)".
L'autre partie n'a en effet pas besoin d'être adaptée, car elle se réfère à un autre tableau, dans une autre feuille du classeur, qui n'est pas amené à bouger.
Ce que je cherche à faire, c'est remplacer le RC[-3] par la colonne correspondante, un peu comme ça : =IFERROR(VLOOKUP([Nomdecolonne][Premièrecelluledelacolonne],'Docs Items-EN'!C[-9],1,FALSE),0)".
Merci de ton aide,
Cordialement,
Aelyth
J'ai trouvé, il suffit simple de remplacer le RC-3 par le nom de la colonne en question entre crochets [ ], puis de continuer la formule.