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 dans VBA [XL-2003]


Sujet :

Macros et VBA Excel

  1. #1
    Membre éclairé
    Homme Profil pro
    Inscrit en
    Novembre 2009
    Messages
    322
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations forums :
    Inscription : Novembre 2009
    Messages : 322
    Par défaut Vlookup dans VBA
    Bonjour à tous. J'ai à nouveau besoin d'aide pour un petit bout de code...

    J'ai une feuille "Transactions" et lors du déplacement dans cette feuille si le focus tombe sur la colonne "D", j'ai un userform qui apparait automatiquement.

    Dans ce userfom, j'ai un combox1 qui est lié a une liste d'item dans la feuille "Codifications".

    Si je clique dans "D4", le UF s'ouvre et je peux inscrire par exemple "Table". J'aimerais qu'une fois que l'utilisateur clique sur le bouton de commande "Accepter", que la valeur qui s'inscrira dans "D4" soit le résultat d'un Vlookup dans une plage de données.

    Code:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    Private Sub CommandButton1_Click()
     
    ActiveCell.Value = Application.WorksheetFunction.VLookup(ComboBox1, NomDuTitreVendu, 2, False)
    ComboBox1 = ""
     
    UserForm4.Hide
     
    End Sub
    Bien entendu, si je suis dans D25, la réponse devra être dans D25.

    Actuellement, j'ai l'erreur 1004...

    Merci à l'avance

  2. #2
    Expert confirmé
    Avatar de MarcelG
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Juillet 2009
    Messages
    3 449
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 67
    Localisation : France, Maine et Loire (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Finance

    Informations forums :
    Inscription : Juillet 2009
    Messages : 3 449
    Billets dans le blog
    7
    Par défaut Vlookup
    Bonsoir.

    Tu peux essayer d'écrire dans ta fonction Vlookup D'autre part, j'ai l'imression, fausse peut-être, que ton 2ème argument de Vloookup ne soit pas une matrice. Ta valeur de Combobox doit se trouver, sauf si erreur, dans la colonne de gauche de ta matrice.

  3. #3
    Expert éminent Avatar de mercatog
    Homme Profil pro
    Inscrit en
    Juillet 2008
    Messages
    9 435
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Autre

    Informations forums :
    Inscription : Juillet 2008
    Messages : 9 435
    Par défaut
    C'est quoi NomDuTitreVendu?
    si c'est une plage nommée, essaies ceci
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    Private Sub CommandButton1_Click()
     
    ActiveCell.Value = Application.WorksheetFunction.VLookup(ComboBox1.Value, Range("NomDuTitreVendu"), 2, False)
    ComboBox1.ListIndex = -1
    UserForm4.Hide
    End Sub

  4. #4
    Membre éclairé
    Homme Profil pro
    Inscrit en
    Novembre 2009
    Messages
    322
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations forums :
    Inscription : Novembre 2009
    Messages : 322
    Par défaut Vlookup
    Merci à vous MarcelG.

    Vous avez bien raison de mettre en garde avec la possibilité que la valeur du combobox1 ne se retrouve pas dans la liste mais c'est bien le cas, la valeur est bien présente.
    J'ai fait le test directement dans une feuille excel afin d'être sûr que ce n'était pas le problème.

    J'ai ajouté votre code mais j'ai toujours le code d'erreur 1004 avec la description
    Impossible de lire la propriété VLookup de la classe WorksheetFunction
    Merci à l'avance pour une future réponses...


    dlight

  5. #5
    Membre éclairé
    Homme Profil pro
    Inscrit en
    Novembre 2009
    Messages
    322
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations forums :
    Inscription : Novembre 2009
    Messages : 322
    Par défaut Vlookup
    Merci à vous mercatog.

    C'est bien une plage nommé et comme je le disais dans mon dernier message, j'ai testé dans une feuille excel afin d'être sûr que j'avais la bonne plage et le résultat du RechercheV soit conforme à mes attentes.

    J'ai collé votre code et l'erreur 1004 est toujours présente à la ligne
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    ActiveCell.Value = Application.WorksheetFunction.VLookup(ComboBox1.Value, Range("NomDuTitreVendu"), 2, False)
    Merci encore une fois pour l'aide...

    dlight

  6. #6
    Expert éminent Avatar de mercatog
    Homme Profil pro
    Inscrit en
    Juillet 2008
    Messages
    9 435
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Autre

    Informations forums :
    Inscription : Juillet 2008
    Messages : 9 435
    Par défaut
    Refais ton test et regarde le nom exact de ta plage de recherche

    sinon, j'ai simulé l'erreur quand ComboBox1.value=""
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    If ComboBox1.Value <> "" Then ActiveCell.Value = Application.WorksheetFunction.VLookup(ComboBox1.Value, Range("NomDuTitreVendu"), 2, False)
    ComboBox1.ListIndex = -1
    UserForm4.Hide

  7. #7
    Membre éclairé
    Homme Profil pro
    Inscrit en
    Novembre 2009
    Messages
    322
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations forums :
    Inscription : Novembre 2009
    Messages : 322
    Par défaut
    J'ai trouvé mon problème et c'est mon erreur

    Votre code mercatog est bon.

    Lors du test dans la feuille excel, j'ai pris l'information j'ai copié le texte de ma base de données et collé dans une cellule pour faire un test.Ce que je n'avais pas remarqué est qu'il y avait une espace à droite de "table " dans ma base de donnée.
    Lors de la saisie dans mon combobox, table n'avait pas l'espace ce qui confirme le premier commentaire de MarcelG à savoir si l'item est dans ma plage de données.

    Merci à vous deux encore une fois

    dossier résolu !

    J'ai une dernière demande...

    Le code fonctionne bien...

    Une fois le code exécuté, excel n'est plus sélectionné... Je dois cliquer dans la feuille excel.
    Bien que j'ai le classeur devant moi c'est comme si j'étais entre deux applications...


    Quelqu'un peux me dire ce que je peux faire pour corriger ça... ?

    Merci encore

  8. #8
    Expert confirmé
    Avatar de MarcelG
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Juillet 2009
    Messages
    3 449
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 67
    Localisation : France, Maine et Loire (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Finance

    Informations forums :
    Inscription : Juillet 2009
    Messages : 3 449
    Billets dans le blog
    7
    Par défaut Active la feuille
    Bonjour Dlight,

    Dans le code de ton bouton de validation, si l'activation de celui-ci ferme ton userform, tu oeux coder dans la procédure lui correspondant

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    Unload Me
    Me.Hide
    Sheets("tafeuille").Activate
    Sinon, tu peux aussi coder l'évènement de ton userform

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    Private Sub UserForm_Deactivate()
    Sheets("tafeuille").Activate
    End Sub
    Essaie, et reviens si besoin.

  9. #9
    Rédacteur/Modérateur


    Homme Profil pro
    Formateur et développeur chez EXCELLEZ.net
    Inscrit en
    Novembre 2003
    Messages
    19 125
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 58
    Localisation : Belgique

    Informations professionnelles :
    Activité : Formateur et développeur chez EXCELLEZ.net
    Secteur : Enseignement

    Informations forums :
    Inscription : Novembre 2003
    Messages : 19 125
    Billets dans le blog
    131
    Par défaut
    Bonjour

    va planter puisque l'objet n'est plus chargé => on ne peut plus y faire référence...

    Normalement, la fermeture du userform rend la main à Excel. Il serait donc intéressant d'essayer de comprendre pourquoi ce n'est pas le cas (si, je dis bien si, ce n'est pas le cas...).

    Peux-tu donner l'entièreté du code du bouton, et expliquer ce qui te fait penser que Excel n'est plus actif?
    "Plus les hommes seront éclairés, plus ils seront libres" (Voltaire)
    ---------------
    Mes billets de blog sur DVP
    Mes remarques et critiques sont purement techniques. Ne les prenez jamais pour des attaques personnelles...
    Pensez à utiliser les tableaux structurés. Ils vous simplifieront la vie, tant en Excel qu'en VBA ==> mon tuto
    Le VBA ne palliera jamais une mauvaise conception de classeur ou un manque de connaissances des outils natifs d'Excel...
    Ce ne sont pas des bonnes pratiques parce que ce sont les miennes, ce sont les miennes parce que ce sont des bonnes pratiques
    VBA pour Excel? Pensez D'ABORD en EXCEL avant de penser en VBA...
    ---------------

  10. #10
    Expert confirmé
    Avatar de MarcelG
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Juillet 2009
    Messages
    3 449
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 67
    Localisation : France, Maine et Loire (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Finance

    Informations forums :
    Inscription : Juillet 2009
    Messages : 3 449
    Billets dans le blog
    7
    Par défaut userform fermé
    Bonjour Pierre.

    Au temps pour moi (salut pgz), tu as raison, il faut écrire à l'inverse, et c'est logique

    Bonne journée

  11. #11
    Membre éclairé
    Homme Profil pro
    Inscrit en
    Novembre 2009
    Messages
    322
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations forums :
    Inscription : Novembre 2009
    Messages : 322
    Par défaut vlookup
    Merci à vous tous encore une fois pour l'aide.

    Dossier résolu encore une fois !

    dlight

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Erreur avec vlookup dans VBA
    Par jasonpolakow dans le forum Macros et VBA Excel
    Réponses: 1
    Dernier message: 10/10/2012, 21h10
  2. Aide sur VLOOKUP dans vba
    Par Mag555 dans le forum Macros et VBA Excel
    Réponses: 3
    Dernier message: 25/08/2011, 14h35
  3. Utilisation d'un résultat de requete dans VBA
    Par marie10 dans le forum Access
    Réponses: 3
    Dernier message: 30/01/2006, 10h29
  4. appel module dans vba
    Par scully2501 dans le forum Access
    Réponses: 3
    Dernier message: 14/09/2005, 16h37
  5. Réponses: 3
    Dernier message: 22/10/2004, 12h04

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