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 :

VLookUp VBA avec le critere de recherche en variable


Sujet :

Macros et VBA Excel

  1. #1
    Membre confirmé
    Homme Profil pro
    Administrateur systèmes et réseaux
    Inscrit en
    Mai 2014
    Messages
    154
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Suisse

    Informations professionnelles :
    Activité : Administrateur systèmes et réseaux
    Secteur : Industrie

    Informations forums :
    Inscription : Mai 2014
    Messages : 154
    Par défaut VLookUp VBA avec le critere de recherche en variable
    Bonjours à tous,

    Voila j'ai une feuille excel avec dedans une colone pour des ID unique une autre avec des noms,

    Depuis un userform je voudrait depuis une liste déroulante choisir un nom de la liste et récupérer l' ID de cette même ligne.

    Donc actuellement j'ai mon userform, j'ai ma liste déroulante avec mes nom ( de la colonne B), mais impossible de récuprer l'ID de la colone A...

    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
    Private Sub LDClients_Change()
     
     
    With Sheets("Clients")
    Dim NomSelectioner As Variant
    Dim IDClientsSelectioner As Variant
     
    NomSelectioner = UserForm1.LDClients
    'Récuprer nom client
     
        'IDClientsSelectioner = WorksheetFunction.VLookup(.Range("A2").Value, Sheets("Clients").Range("A1:C100"), 1, False)
        IDClientsSelectioner = WorksheetFunction.VLookup(NomSelectioner, Sheets("Clients").Range("A1:B100"), 1, False)
        UserForm1.LBIDClientsSelectioner.Caption = IDClientsSelectioner
    End With
    End Sub
    si j'utilise la première commande qui est en commentaire, cela fonctionne,

    si je rentre le critère rechercher comme ceci cela ne fonctionne pas:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    IDClientsSelectioner = WorksheetFunction.VLookup("Toto", Sheets("Clients").Range("A1:B100"), 1, False)
    et si j'utilise ma variable NomSelectioner cela ne fonctionne pas non plus, si je contrôle le contenue de ma variable NomSelectioner elle contient bien "Toto"

    Pourriez vous m'éclairer a ce sujet??

    Merci d'avance

  2. #2
    Expert confirmé
    Homme Profil pro
    aucune
    Inscrit en
    Septembre 2011
    Messages
    8 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : aucune

    Informations forums :
    Inscription : Septembre 2011
    Messages : 8 208
    Par défaut
    Bonjour,

    Essaie :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    NomSelectioner = UserForm1.LDClients.Value
    Fais attention de ne pas comparer du texte avec des nombres.

  3. #3
    Membre confirmé
    Homme Profil pro
    Administrateur systèmes et réseaux
    Inscrit en
    Mai 2014
    Messages
    154
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Suisse

    Informations professionnelles :
    Activité : Administrateur systèmes et réseaux
    Secteur : Industrie

    Informations forums :
    Inscription : Mai 2014
    Messages : 154
    Par défaut
    Bonjour et merci beaucoup pour la piste,

    cependant j'ai toujours l'erreur 1004,

    en contrôlent ma variable j'ai bien "Toto" dedans

    pour ce qui est de la comparaisons j'ai mis mes variable en Variant et dans la colonne Nom il n'y a que des nom et dans la colone ID que des chiffres!

    Avez vous une autre idées? je cherche un peut partout mais je ne trouve rien de concluent!

    c'est comme si ce que je mettait dans ma variable ou meme juste le texte Brut avec :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    IDClientsSelectioner = WorksheetFunction.VLookup("Toto", Sheets("Clients").Range("A1:B100"), 2, False)
    n’étais pas bien reconnu...

    EDIT:

    Juste pour être sur ma feuille est la suivante:
    A B
    1 Toto
    2 Titi
    3 Bobo

    Est ce que c'est cela qui ne m,arche pas? j'ai vraiment du mal a comprendre, surtout que si je fair avec l'endroit de recherche du type WorksheetFunction.VLookup(.Range("A2").Value, cela fonctionne...

  4. #4
    Expert confirmé
    Homme Profil pro
    aucune
    Inscrit en
    Septembre 2011
    Messages
    8 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : aucune

    Informations forums :
    Inscription : Septembre 2011
    Messages : 8 208
    Par défaut
    Tu dois inverser tes colonnes ?

  5. #5
    Membre confirmé
    Homme Profil pro
    Administrateur systèmes et réseaux
    Inscrit en
    Mai 2014
    Messages
    154
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Suisse

    Informations professionnelles :
    Activité : Administrateur systèmes et réseaux
    Secteur : Industrie

    Informations forums :
    Inscription : Mai 2014
    Messages : 154
    Par défaut
    Mon dieu... c’était bien sa...

    je vient de perdre deux heure de ma vie ...

    Merci infiniment!

    Mais existe il la possibilité de faire une recherche sur la Gauche?

  6. #6
    Rédacteur
    Avatar de Philippe Tulliez
    Homme Profil pro
    Formateur, développeur et consultant Excel, Access, Word et VBA
    Inscrit en
    Janvier 2010
    Messages
    13 176
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Formateur, développeur et consultant Excel, Access, Word et VBA

    Informations forums :
    Inscription : Janvier 2010
    Messages : 13 176
    Billets dans le blog
    53
    Par défaut
    Bonjour,
    Donc actuellement j'ai mon userform, j'ai ma liste déroulante avec mes nom ( de la colonne B), mais impossible de récuprer l'ID de la colone A...
    D'après ta question, il est normal que cela ne fonctionne pas.
    VLookup (RechercheV), fait une recherche sur la première colonne de la plage de données et peut renvoyer la valeur se trouvant dans la colonne de recherche ou les suivantes mais pas les précédentes.
    Solution : Utiliser INDEX et MATCH (Equiv)

    Cependant si la liste déroulante affiche tous les éléments de la liste des données, il n'y a aucune raison d'utiliser une fonction de recherche puisque la propriété ListIndex du ComboBox indique la ligne sélectionnée.
    Un simple Range("A" & ComboBox1.ListIndex + 1).Value ou Cells(ComboBox1.ListIndex+1, 1).Value suffira
    Philippe Tulliez
    Ce que l'on conçoit bien s'énonce clairement, et les mots pour le dire arrivent aisément. (Nicolas Boileau)
    Lorsque vous avez la réponse à votre question, n'oubliez pas de cliquer sur et si celle-ci est pertinente pensez à voter
    Mes tutoriels : Utilisation de l'assistant « Insertion de fonction », Les filtres avancés ou élaborés dans Excel
    Mon dernier billet : Utilisation de la fonction Dir en VBA pour vérifier l'existence d'un fichier

Discussions similaires

  1. [XL-2016] Utilisation de vlookup VBA avec une plage nommée
    Par clem256 dans le forum Macros et VBA Excel
    Réponses: 5
    Dernier message: 01/12/2017, 09h09
  2. Fonction Vlookup / RechercheV avec deux criteres
    Par draynaud dans le forum Macros et VBA Excel
    Réponses: 15
    Dernier message: 09/08/2017, 22h34
  3. Réponses: 10
    Dernier message: 07/08/2014, 07h04
  4. VBA RECHERCHE V sur fichier variable avec plusieurs criteres
    Par olly34 dans le forum Macros et VBA Excel
    Réponses: 0
    Dernier message: 17/06/2014, 10h23
  5. [VBA-E]rechercher avec plusieur critère.
    Par morgan47 dans le forum Macros et VBA Excel
    Réponses: 4
    Dernier message: 08/06/2006, 19h48

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