Excel VBA 2016 VLookup

Anonyme
2017-09-25T17:59:41+00:00

Bonjour,

J'ai aucun problème à utiliser Recherche V dans Excel. Mais quand j'écrit un code avec VLookup il ne se passe rien. C'est-à-dire le formulaire apparaît mais aucun résultat ne s'affiche quand je sélectionne un nom d'employé dans la liste déroulante.

Voici ce que je désir faire

Obtenir le nombre d'année d'ancienneté de l'employé (À partir du nom de l'employé dans le cboNomEmployé, Rechercher cxe nom dans la feuille Comparatio et me donner le nombre d'années d'ancienneté à la 17e colonne du TablaeuComparatio)

Voici mon code

Private Sub cboAnciennetéReconnue_Change()

       txtAnciennetéReconnue.Text = Application.WorksheetFunction.VLookup(cboNomEmployé.Text, Sheets("Comparatio").Range("TableauComparatio"), 17, faux)

End Sub

Deuxièmement

Dans mon formulaire j'aimerais que la fonction vLookup tienne compte du nom et prénom (deux listes déroulante) afin de me donner la valeur recherchée.

Merci

Denis

Microsoft 365 et Office | Excel | Pour la maison | Windows

Question verrouillée. Cette question a été migrée à partir de la Communauté Support Microsoft. Vous pouvez voter pour indiquer si elle est utile, mais vous ne pouvez pas ajouter de commentaires ou de réponses ni suivre la question.

0 commentaires Aucun commentaire

28 réponses

  1. Anonyme
    2017-09-26T12:28:57+00:00

    Merci

    J'ai 1 code qui fonctionne.

    Cependant je dois mettre On error resume next, sinon j'ai un code d'erreur 1004, Qu'elle est le problème selon toi?

    '************************************************************

    ' Déterminer l'ancienneté et la classe à partir cboNomEmployé

    '************************************************************

    Private Sub cboNomEmployé_Change()

    Fonctionne

    On Error Resume Next

        txtAnciennetéReconnue.Text = Application.WorksheetFunction.VLookup(cboNomEmployé.Text, Sheets("Comparatio").Range("TableauComparatio"), 19, False)

        txtClasse.Text = Application.WorksheetFunction.VLookup(cboNomEmployé.Text, Sheets("Comparatio").Range("TableauComparatio"), 9, False)

    Si j'ajoute ce code ça ne fonctionne plus

    Ici je veut prendre la données classe produit par le 2e code qui est produit dans mon formulaire et établir le taux ex: 80% dans un autre tableau nommé Matrice taux

    txtTaux.Text = Application.WorksheetFunction.VLookup(txtClasse.Text, Sheets("Matrice taux").Range("Taux"), 2, False)

    End Sub

    Cette réponse a-t-elle été utile ?

    1 personne a trouvé cette réponse utile.
    0 commentaires Aucun commentaire
  2. DanielCo 107.1K Points de réputation
    2017-09-26T08:34:04+00:00

    Oui, mais si ne le convertit pas, tu auras le résultat au format string et non pas "il ne se passe rien".

    Y aurais-t-il une autre façon d'écrire ce code?

    Tout dépend si tu as mis les valeurs du combobox d'après le tableau TableauComparatio. Si oui, "cboNomEmployé.Text" a un numéro d'index :

    cboNomEmployé.ListIndex tel que 0 correspond au premier nom, 1 au second etc. Ainsi la propriété ListIndex renvoie le numéro de ligne du tableau (avec un décalage de 1, voire 2 si le tableau comporte des entêtes. 

    Le taux d'ancienneté sera donné par :

    Application.Index(Sheets("Comparatio").Range("TableauComparatio"), cboNomEmployé.ListIndex + 1, 17)

    Daniel

    Cette réponse a-t-elle été utile ?

    0 commentaires Aucun commentaire
  3. Anonyme
    2017-09-25T20:57:36+00:00

    J'oublias. L'ancienneté de type numérique est de type 11,11.

    Cette réponse a-t-elle été utile ?

    0 commentaires Aucun commentaire
  4. Anonyme
    2017-09-25T20:21:40+00:00

    Merci

    Je crois que j'ai peut-être trouvé une partie de la réponse

    txtAnciennetéReconnue.Text = Application.WorksheetFunction.VLookup(cboNomEmployé.Text, Sheets("Comparatio").Range("TableauComparatio"), 17, faux)

    txtAnciennetéReconnue.Text est une valeur numérique dans un text box. Faut-il remplacer text par String ou long?

    Y aurais-t-il une autre façon d'écrire ce code?

    Si ce n'est pas mieux, comment (prcédure) et où puis-je déposer mon classeur?

    Cette réponse a-t-elle été utile ?

    0 commentaires Aucun commentaire
  5. DanielCo 107.1K Points de réputation
    2017-09-25T19:19:06+00:00

    Bonjour,

    Remplace "faux" par "False". Si ça ne corrige pas le problème, est-ce que tu peux mettre ton classeur, sans données confidentielles, sur OneDrive ou sur un autre site de partage et poster le lien correspondant ?

    Pour le second point, il faut faire une boucle sur les noms et les prénoms pour déterminer la ligne.

    Cordialement.

    Daniel

    Cette réponse a-t-elle été utile ?

    0 commentaires Aucun commentaire