IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Macros et VBA Excel Discussion :

Formule Vlookup avec Classeur en variable


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Homme Profil pro
    Responsable d'un système d'information métier
    Inscrit en
    Février 2015
    Messages
    23
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 34
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Responsable d'un système d'information métier
    Secteur : Arts - Culture

    Informations forums :
    Inscription : Février 2015
    Messages : 23
    Par défaut Formule Vlookup avec Classeur en variable
    Bonjour à tous,

    Je souhaite réaliser une Macro VBA utilisant des formules de type Vlookup (ou RechercheV pour les versions françaises) en utlisant comme plages de recherche des Classeurs et feuilles variables préalablement définis dans mon code.
    J'ai un classeur A dans lequel j'écris ma formule Vlookup recherchant pour une cellule du classeur A une valeur du classeur "Mapping" (cette partie fonctionne), qui elle va renvoyer une donnée du classeur B (défini comme variable M2 dans ma macro) comprise dans la feuille B (définie comme W2 dans ma macro).

    Cependant, à chaque fois que je lance la macro, Excel lance automatiquement "ouvrir fichier" afin que je redéfinisse ma variable M2 et ma feuille W2 alors que celles-ci sont déjà définies dans le code. De plus, le Vlookup ne renvoit rien.

    Le code sera peut-être plus parlant:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    Option Explicit
    
    Dim W2 As Worksheet
    Dim M2 As Workbook
    
    Sub OpenMW()
    
    Application.Dialogs(xlDialogOpen).Show                    ---------> je définis mon fichier B et feuille B en tant que variables M2 et W2
    Set M2 = ActiveWorkbook
    Set W2 = ActiveSheet
    
    End Sub
    
    Sub Calculs
    
    Range("D2").Select
    ActiveCell.FormulaR1C1 = _
    "=IF(ISNA(VLOOKUP(VLOOKUP(RC[-1],'[Mapping.xlsx]Sheet1'!R5C2:R136C3,2,FALSE)&1,'[M2]W2'!C3:C8,4,FALSE)),"""",VLOOKUP(VLOOKUP(RC[-1],'[Mapping.xlsx]Sheet1'!R5C2:R136C3,2,FALSE)&1,'[M2]W2'!C3:C8,4,FALSE))"
    
    End Sub

    Savez-vous ce qui cloche?

    Merci

  2. #2
    Membre éprouvé
    Homme Profil pro
    Programmeur en temps libre
    Inscrit en
    Février 2015
    Messages
    68
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Ain (Rhône Alpes)

    Informations professionnelles :
    Activité : Programmeur en temps libre
    Secteur : Industrie

    Informations forums :
    Inscription : Février 2015
    Messages : 68
    Par défaut
    Bonjour à tous,

    c'est normal que tu ais une boite de dialogue qui s'ouvre puisque c'est ce que tu as ecrit...

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Application.Dialogs(xlDialogOpen).Show
    pour définir ta variable M2, tu devrai plutôt utiliser

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Set M2 = Workbooks.Open(Filename:="Chemin\nomfichier.xlsx")
    Aposto

  3. #3
    Membre averti
    Homme Profil pro
    Responsable d'un système d'information métier
    Inscrit en
    Février 2015
    Messages
    23
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 34
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Responsable d'un système d'information métier
    Secteur : Arts - Culture

    Informations forums :
    Inscription : Février 2015
    Messages : 23
    Par défaut
    Bonjour Aposto,

    Merci pour ta réponse.

    Oui effectivement la boite de dialogue s'ouvre à ce moment là et c'est voulu (puisque je veux que l'utilisateur de la Macro ait la possibilité de choisir le fichier qu'on nommera ensuite M2 pour la suite de la Macro)

    Mais le problème vient du fait que EXCEL m'ouvre cette même boite de dialogue au moment de la formule Vlookup (en bas du code) car il ne trouve pas M2 et W2 que j'ai précédemment défini...

  4. #4
    Membre éprouvé
    Homme Profil pro
    Programmeur en temps libre
    Inscrit en
    Février 2015
    Messages
    68
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Ain (Rhône Alpes)

    Informations professionnelles :
    Activité : Programmeur en temps libre
    Secteur : Industrie

    Informations forums :
    Inscription : Février 2015
    Messages : 68
    Par défaut
    Ok excuses moi j'avais pas regardé ta fonction Vloopkup d'assez près.

    au lieu de

    essaie:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    [M2.FullName]W2.Name'!C3:C8
    Aposto

  5. #5
    Membre averti
    Homme Profil pro
    Responsable d'un système d'information métier
    Inscrit en
    Février 2015
    Messages
    23
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 34
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Responsable d'un système d'information métier
    Secteur : Arts - Culture

    Informations forums :
    Inscription : Février 2015
    Messages : 23
    Par défaut
    Ca ne marche toujours pas.

    Une fois l'éxécution de la Macro et plus particulièrement du Vlookup, EXCEL me demande toujours de "update values of M2" puis de "update values of W2" en me proposant de sélectionner les fichiers grâce à la boîte de dialogue.

    Merci pour ton aide

  6. #6
    Membre éprouvé
    Homme Profil pro
    Programmeur en temps libre
    Inscrit en
    Février 2015
    Messages
    68
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Ain (Rhône Alpes)

    Informations professionnelles :
    Activité : Programmeur en temps libre
    Secteur : Industrie

    Informations forums :
    Inscription : Février 2015
    Messages : 68
    Par défaut
    en fait les deux propriétés renvoie un string,

    il faut donc la concaténer avec ta formule:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    "=IF(ISNA(VLOOKUP(VLOOKUP(RC[-1],'[Mapping.xlsx]Sheet1'!R5C2:R136C3,2,FALSE)&1,'[" & M2.FullName & "]" & W2.name & "'!C3:C8,4,FALSE)),"""",VLOOKUP(VLOOKUP(RC[-1],'[Mapping.xlsx]Sheet1'!R5C2:R136C3,2,FALSE)&1,'[" & M2.FullName & "]" & W2.name &"'!C3:C8,4,FALSE))"
    le fait de mettre m2.FullName dans les guillemets double empêche à VBA d'interpréter le code, "m2.FullName" au lieu de "Chemin complet de M2"

Discussions similaires

  1. Macro avec formule utilisant des cellules contenant des formules Vlookup
    Par Isabelle86 dans le forum Macros et VBA Excel
    Réponses: 0
    Dernier message: 14/10/2010, 15h13
  2. [Toutes versions] Problème de syntaxe dans un vlookup avec page variable
    Par guiMM dans le forum Macros et VBA Excel
    Réponses: 1
    Dernier message: 01/02/2010, 20h18
  3. [Toutes versions] formule vba avec nom de feuille variable
    Par leptitdave dans le forum Macros et VBA Excel
    Réponses: 1
    Dernier message: 28/08/2009, 11h30
  4. Réponses: 0
    Dernier message: 10/12/2008, 11h33
  5. Formule INDEX avec matrice variable
    Par psycholymp dans le forum Excel
    Réponses: 2
    Dernier message: 11/12/2007, 23h27

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo