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 :

Récupérer index d'un élément de Listbox à partir de son nom mais sans le sélectionner [XL-2019]


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Homme Profil pro
    Retraité
    Inscrit en
    Mars 2022
    Messages
    60
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Retraité
    Secteur : Finance

    Informations forums :
    Inscription : Mars 2022
    Messages : 60
    Par défaut Récupérer index d'un élément de Listbox à partir de son nom mais sans le sélectionner
    Bonjour,

    J'ai créé une listbox (noms) dans un formulaire pour permettre la mises à jour des éléments personnels repris dans des txtbox (prénom, adresse, tel etc...)
    Si cela fonctionne en sélectionnant le nom dans la listbox, je voudrais aussi "déclencher" automatiquement l'affichage d'un nom et donc des éléments correspondants dans chaque textbox sans avoir à sélectionner le nom.
    Cette demande peut surprendre (en principe on sélectionne toujours avec la souris l'élément de la listbox) mais elle est justifiée lorsque un évènement tiers suggère une mise à jour obligatoire d'un des éléments repris en txtbox.

    L'évènement tiers est déclenché par un changement de contenu d'une cellule (sub worksheet_Change)
    A partir de cette procédure évènement je récupère dans une variable (déclarée Public dans le module1) le nom recherchée et appelle le formulaire.
    Comment réaliser la sélection de ce nom avant affichage et donc sans pouvoir le sélectionner (pas d'index à récupérer!) ....???

    [CODE]FrmInfoAdherent.LstBoxMembres = nomCherche

    FrmInfoAdherent.Show/CODE]

    la première ligne déclenche l'événement LstBoxMembres_Change dans lequel je confirme "Me.LstBoxMembres = nomCherche" mais sans succès (LstBoxMembres reste vide !

    J'espère avoir pu être clair pour espérer obtenir une aide salvatrice
    Merci d'avance Cordialement

  2. #2
    Membre Expert
    Inscrit en
    Décembre 2002
    Messages
    993
    Détails du profil
    Informations forums :
    Inscription : Décembre 2002
    Messages : 993
    Par défaut
    Bonjour, voici une solution, adapte les noms à ton cas:

    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
    Private Sub UserForm_Activate()
        Dim i As Integer
        Dim nomTrouve As Boolean
        nomTrouve = False
     
        For i = 0 To Me.LstBoxMembres.ListCount - 1
            If Me.LstBoxMembres.List(i) = nomCherche Then
                Me.LstBoxMembres.ListIndex = i ' Sélectionner l'index correspondant au nom
                nomTrouve = True
                Exit For
            End If
        Next i
     
        ' Si le nom est trouvé, déclencher l'affichage dans les TextBox
        If nomTrouve Then
            Call AfficherInfos ' Une sub qui affiche les infos dans les TextBox
        Else
            MsgBox "Nom non trouvé dans la liste."
        End If
    End Sub
    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
    Private Sub AfficherInfos()
        Dim ligne As Integer
     
        ' Récupérer l'index de la ligne sélectionnée
        ligne = Me.LstBoxMembres.ListIndex
     
        ' Vérifier qu'une ligne est bien sélectionnée
        If ligne <> -1 Then
            ' Assigner les valeurs des colonnes aux TextBox
            Me.TxtBoxPrenom.Value = Me.LstBoxMembres.List(ligne, 1)
            Me.TxtBoxAdresse.Value = Me.LstBoxMembres.List(ligne, 2) 
            Me.TxtBoxTel.Value = Me.LstBoxMembres.List(ligne, 3) 
        Else
            MsgBox "Aucun membre sélectionné."
        End If
    End Sub

  3. #3
    Membre confirmé
    Homme Profil pro
    Retraité
    Inscrit en
    Mars 2022
    Messages
    60
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Retraité
    Secteur : Finance

    Informations forums :
    Inscription : Mars 2022
    Messages : 60
    Par défaut
    Citation Envoyé par Franc Voir le message
    Bonjour, voici une solution, adapte les noms à ton cas:

    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
    Private Sub UserForm_Activate()
        Dim i As Integer
        Dim nomTrouve As Boolean
        nomTrouve = False
     
        For i = 0 To Me.LstBoxMembres.ListCount - 1
            If Me.LstBoxMembres.List(i) = nomCherche Then
                Me.LstBoxMembres.ListIndex = i ' Sélectionner l'index correspondant au nom
                nomTrouve = True
                Exit For
            End If
        Next i
     
        ' Si le nom est trouvé, déclencher l'affichage dans les TextBox
        If nomTrouve Then
            Call AfficherInfos ' Une sub qui affiche les infos dans les TextBox
        Else
            MsgBox "Nom non trouvé dans la liste."
        End If
    End Sub
    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
    Private Sub AfficherInfos()
        Dim ligne As Integer
     
        ' Récupérer l'index de la ligne sélectionnée
        ligne = Me.LstBoxMembres.ListIndex
     
        ' Vérifier qu'une ligne est bien sélectionnée
        If ligne <> -1 Then
            ' Assigner les valeurs des colonnes aux TextBox
            Me.TxtBoxPrenom.Value = Me.LstBoxMembres.List(ligne, 1)
            Me.TxtBoxAdresse.Value = Me.LstBoxMembres.List(ligne, 2) 
            Me.TxtBoxTel.Value = Me.LstBoxMembres.List(ligne, 3) 
        Else
            MsgBox "Aucun membre sélectionné."
        End If
    End Sub
    Bonsoir Franc,

    Très bonne idée de boucler sur la liste ... et cela fonctionne parfaitement
    Merci pour ton aide
    Cordialement

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

Discussions similaires

  1. Recupérer l'index d'un noeud à partir de son nom
    Par Invité dans le forum AWT/Swing
    Réponses: 4
    Dernier message: 12/09/2012, 21h04
  2. Réponses: 7
    Dernier message: 10/11/2005, 10h09
  3. connaitre les propriétés d'un champ à partir de son nom
    Par toome dans le forum Général JavaScript
    Réponses: 8
    Dernier message: 24/10/2005, 11h16
  4. Récupérer une variable à partir de son nom ...
    Par CynO dans le forum Général JavaScript
    Réponses: 3
    Dernier message: 13/10/2005, 16h59
  5. Réponses: 3
    Dernier message: 24/09/2004, 21h21

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