VBA - VLookup sur range avec variable...

La braise

XLDnaute Occasionnel
Bonjour à tous,

Je travaille actuellement sur une macro me permettant de mapper un fichier d'export des ventes (donc avec nb de lignes variables) avec un fichier de mapping (lui aussi avec le nb de lignes variables).

Mon problème : :)

#1) j'analyse mon fichier de base pour déterminer le nb de lignes sur lesquel portera le calcul Vlookup : pour cela pas de souci :)
- Création d'une variable NB_Lignes en via Dim as Long
- NB_Lignes = ActiveSheet.UsedRange.Rows.Count


#2) le problème se pose pour coller la formule
je n'arrive pas à nommer une variable range qui correpondrait sur le fichier de mapping à la zone utile (cad : uniquement le nb de lignes contenu dans ce fichier).
- pour déterminer la zone du fichier mapping (dont le nb de colonnes est fixe) : idem que #1 : ActiveSheet.UsedRange.Rows.Count
- j'arrive à afficher le range souhaité via : Range(Cells(1, 1), Cells(Clients_NB_Lignes, 11)).Address dans un MsgBox (et la zone est parfaitemement ce que je souhaite.. genre $a$1:$K$2500)

j'arrive à ça :
ActiveCell.FormulaR1C1 ="=VLOOKUP(RC1,'[Fichier mapping.xls]Feuille1'.Range(Cells(1, 1), Cells(Clients_NB_Lignes, 11)).Address,3,0)" qui ne fonctionne pas. :mad:

L'idéal serait de nommer ma zone ... Range(Cells(1, 1), Cells(Clients_NB_Lignes, 11)).Address via add. names, set,... dans une variable que j'appelerai sur mon fichier à mapper avec une formule du genre : =vlookup("A1";Maplage;2;0)

C'est frustrant car c'est évident que c'est possible puisque j'arrive à afficher la zone que je veux dans le ficher de mapping, mais je n'arrive pas à l'utiliser (en l'état ou via variable) comme base de référence dans le vlookup du fichier à mapper!
(j'suis clair là! :))

#3) Après pour coller la formule sur uniquement le nb de lignes du fichier à mapper : pas de souci également :)
Selection.AutoFill Destination:=Range("l2:l" & NB_Lignes)

D'avance merci pour votre aide sur cette question qui doit vous paraitre anodine mais qui me tracasse sérieusement... :)

Je reste à votre dispo pour tout complément d'info!

La braise
 
Dernière édition:

Pierrot93

XLDnaute Barbatruc
Re : VBA - VLookup sur range avec variable...

Bonjour La Braise

si tu veux créer une plage nommée, tu peux essayer avec le code ci dessous :

Code:
Range(Cells(1, 1), Cells(Clients_NB_Lignes, 11)).Name = "maplage"

bonne soirée
@+
 

La braise

XLDnaute Occasionnel
Re : VBA - VLookup sur range avec variable...

Merci pour l'info je vais tester ça direct! :)

"maplage" correspondra donc à la zone souhaitée du fichier de mapping.

Dans la formule Vlookup de l'autre fichier (ficheir à mapper) est-ce je peux appeler directement "maplage" sans ref. au fichier ou indiquer toute l'arborescence : Fichier-Feuille-"maplage" ?

Bonne soirée également.
 

Pierrot93

XLDnaute Barbatruc
Re : VBA - VLookup sur range avec variable...

Re

Si "maplage" est dans un autre classeur tu dois préciser ce classeur :

Code:
   ActiveCell.FormulaR1C1 = "=VLOOKUP(RC[-1],classeurplage.xls!maplage,2,FALSE)"

sinon pas utile :

Code:
ActiveCell.FormulaR1C1 = "=VLOOKUP(RC[-1],maplage,2,0)"

@+
 

La braise

XLDnaute Occasionnel
Re : VBA - VLookup sur range avec variable...

Bonjour à tous et à MJ13,

Aucun problème :)

Le code est :

Pour la plage :
Dim Plage_Clients as Range
Set Plage_Clients = Range("A1").CurrentRegion
ActiveWorkbook.Names.Add Name:="Plage_Clients", RefersTo:=Plage_Clients

Pour la recherchev :
ActiveCell.FormulaR1C1 = _
"=VLOOKUP(RC1,'[Mapping_customer.xls]Final 2008'!Plage_Clients,2,0)"

Bonne macro à tous! :)
 

Discussions similaires

Réponses
2
Affichages
373