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 :

Saisie d'une VLookup dans une userform_VBA [XL-2016]


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Nouveau membre du Club Avatar de Cheyenne95
    Femme Profil pro
    Technicien maintenance
    Inscrit en
    Janvier 2019
    Messages
    4
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Technicien maintenance
    Secteur : Industrie

    Informations forums :
    Inscription : Janvier 2019
    Messages : 4
    Par défaut Saisie d'une VLookup dans une userform_VBA
    Bonjour à Tous,

    Je débute dans VBA, et votre forum m'a beaucoup appris.

    J'ai écrit un code pour rechercher un nom suivant un identifiant.

    Je dois rechercher un identifiant, que je saisi dans ma TextBox, dans la colonne F de la ligne 39 à "Lig" je ne connais pas la fin, liste non fixe.

    Une fois que j'ai trouver l'identifiant, je dois recupérer le nom de la personne qui est sur la même ligne mais en colonne H et la recopier dans ma ListBox.
    Mais ça bloque toujours à "Nom = WorksheetFunction.VLookup(Id, Range(Cells(39, 6), Cells(Lig, 8)), 8, False)" et je ne comprend pas pourquoi.

    Pouvez-vous m'aider.

    J'espère que c'est assez clair comme explication

    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
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    Private Sub TextBoxID_Exit(ByVal Cancel As MSForms.ReturnBoolean)
    '
    ' Ecrire le Nom equivalent à l'identifiant
    '
    Dim Lig As Integer
    Dim Id As Variant
    Dim Nom As String
    '
    ' Selectionner la feuille
        Sheets("Listes").Select
    ' Activation des valeurs systeme
        On Error GoTo ErreurSaisi
    ' Determination de la derniere ligne de la liste
        Lig = 39
        Do While Cells(Lig, 6).Value <> ""
            Lig = Lig + 1
        Loop
        Lig = Lig - 1
    ' Récupérer l'ID
        Id = TextBoxID.Value
    ' Convertir en majuscule
        Id = UCase(Id)
    ' Réécrire le nom en majuscule
        TextBoxID.Value = Id
    ' Rechercher le nom équivalent
       Nom = WorksheetFunction.VLookup(Id, Range(Cells(39, 6), Cells(Lig, 8)), 8, False)
    ' Ecrire le nom
        ListBoxRU.Value = Nom
        Exit Sub
    ErreurSaisi:
        MsgBox ("Erreur dans la saisie de l'Identifiant" & vbLf & _
            "L'Identifiant " & Francais & " n'exite pas ou bien votre liste n'est pas à jour" & vbLf & _
            "Vérifier l'orthographe et la resasir." & vbLf & _
            "Contacter DPTMEnvironnement@mpsa.com si le soucis persiste.")
    End Sub

  2. #2
    Membre éclairé
    Homme Profil pro
    Administrateur de base de données
    Inscrit en
    Janvier 2017
    Messages
    556
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : Canada

    Informations professionnelles :
    Activité : Administrateur de base de données
    Secteur : Santé

    Informations forums :
    Inscription : Janvier 2017
    Messages : 556
    Par défaut
    Bonjour Cheyenne,


    Bienvenue parmi nous !!!


    Personnellement je n'aurais pas utiliser une loop pour trouver la valeur de "Lig". Également pour quoi à la fin de la loop tu enlève un au résultat ???


    au lieu de WorksheetFunction.VLookup essaie application.VLookup.

  3. #3
    Expert confirmé
    Homme Profil pro
    Inscrit en
    Août 2010
    Messages
    3 453
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Août 2010
    Messages : 3 453
    Par défaut
    Bonjour,

    De cette façon peut-être ?
    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
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
     
    Private Sub TextBoxID_Exit(ByVal Cancel As MSForms.ReturnBoolean)
        '
        ' Ecrire le Nom equivalent à l'identifiant
        '
        Dim Cel As Range
        Dim Lig As Integer
        Dim Id As Variant
     
        ' Récupérer l'ID en convertissant en majuscule
        Id = UCase(TextBoxID.Value)
     
        ' Réécrire le nom en majuscule
        TextBoxID.Value = Id
     
        With Worksheets("Listes")
     
            Lig = .Cells(.Rows.Count, 6).End(xlUp).Row 'en colonne F
     
            Set Cel = .Range(.Cells(39, 6), .Cells(Lig, 6)).Find(Id, , xlValues, xlWhole)
     
            If Not Cel Is Nothing Then
     
                ListBoxRU.Value = Cel.Offset(, 2).Value 'en colonne H
     
            Else
     
                MsgBox "Erreur dans la saisie de l'Identifiant" & vbLf & _
                       "L'Identifiant " & Francais & " n'exite pas ou bien votre liste n'est pas à jour" & vbLf & _
                       "Vérifier l'orthographe et la resasir." & vbLf & _
                       "Contacter DPTMEnvironnement@mpsa.com si le soucis persiste."
     
                Cancel = True
     
            End If
     
        End With
     
    End Sub

  4. #4
    Nouveau membre du Club Avatar de Cheyenne95
    Femme Profil pro
    Technicien maintenance
    Inscrit en
    Janvier 2019
    Messages
    4
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Technicien maintenance
    Secteur : Industrie

    Informations forums :
    Inscription : Janvier 2019
    Messages : 4
    Par défaut Super
    Merci beaucoup à Tous les Deux.
    Effectivement je faisais -1 sur la Loop pour avoir la dernière ligne pleine et pas la première ligne vide, mais cela ne change rien.
    Theze , Ton code fonctionne à merveille
    Encore Merci beaucoup pour votre aide.

  5. #5
    Expert confirmé
    Homme Profil pro
    Inscrit en
    Août 2010
    Messages
    3 453
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Août 2010
    Messages : 3 453
    Par défaut
    Bonjour,

    Merci du retour et content de t'avoir aidé

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

Discussions similaires

  1. [XL-2007] Afficher une checkbox dans une feuille si une checkbox d'une autre feuille est cochée
    Par JessieCoutas dans le forum Macros et VBA Excel
    Réponses: 3
    Dernier message: 18/08/2009, 13h35
  2. portée d'une variable dans une fonction dans une méthode
    Par laurentg2003 dans le forum Général JavaScript
    Réponses: 4
    Dernier message: 29/06/2009, 19h05
  3. [POO] dans une classe, appeler une fonction dans une méthode
    Par arnaudperfect dans le forum Langage
    Réponses: 3
    Dernier message: 26/08/2007, 23h04
  4. Envoyer une formulaire dans une page dans une Frame
    Par zooffy dans le forum Balisage (X)HTML et validation W3C
    Réponses: 5
    Dernier message: 29/06/2007, 10h13
  5. Recherche une valeur d'une cellule dans une colonne d'une autre feuille
    Par kourria dans le forum Macros et VBA Excel
    Réponses: 8
    Dernier message: 21/06/2007, 13h48

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