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ération valeur selection lisbox VBA par défaut [XL-2013]


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Candidat au Club
    Homme Profil pro
    Autre
    Inscrit en
    Mars 2014
    Messages
    2
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Autre

    Informations forums :
    Inscription : Mars 2014
    Messages : 2
    Par défaut Récupération valeur selection lisbox VBA par défaut
    Bonjour à toutes et tous,

    J'utilise la méthode suivante pour sélectionner automatiquement un item choisi d'une listbox :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    ListBox.Selected() = True
    Au moment de récupérer les valeurs, certaines sont bien présentes alors que les autres listbox n'en renvoient aucune!
    Ci-joint un exemple...

    Je précise que la commande remplit bien son rôle en terme de sélection puisque les items de la liste sont bien en surbrillance. D'autre part, lorsque l'on sélectionne manuellement une valeur, là aussi aucun problème.
    Cela ne se produit donc que lorsque l'on souhaite récupérer les valeurs sélectionnées par défaut.

    Avez-vous une idée de la raison pour laquelle ça ne fonctionne pas ?

    Merci à tous
    Fichiers attachés Fichiers attachés

  2. #2
    Expert confirmé
    Avatar de kiki29
    Homme Profil pro
    ex Observeur CGG / Analyste prog.
    Inscrit en
    Juin 2006
    Messages
    6 132
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Finistère (Bretagne)

    Informations professionnelles :
    Activité : ex Observeur CGG / Analyste prog.

    Informations forums :
    Inscription : Juin 2006
    Messages : 6 132
    Par défaut
    Salut, voir ici : Utiliser les contrôles dans un UserForm, en VBA Excel ainsi que la FAQ

  3. #3
    Expert confirmé

    Homme Profil pro
    Curieux
    Inscrit en
    Juillet 2012
    Messages
    5 169
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Curieux
    Secteur : Arts - Culture

    Informations forums :
    Inscription : Juillet 2012
    Messages : 5 169
    Billets dans le blog
    5
    Par défaut
    Bonjour,

    le remplissage de tes listbox n'était pas optimisé, ça tient en moins de 10 lignes au vu de ton souhait
    à contrario, la récupération des éléments sélectionnés était trop basique ... il fallait la complexifier un peu

    voici
    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
    Private Sub UserForm_Initialize()
        With Me
            For i = 1 To 7
                With .Controls("ListBox" & i)
                    .List = Range("TB_TEST[" & i & "]").Value
                    .Selected(i) = True
                End With
            Next i
        End With
    End Sub
     
    Private Sub CommandButton1_Click()
    With Me
        For i = 1 To 7
            With .Controls("ListBox" & i)
                For j = 1 To .ListCount
                    If .Selected(j) = True Then
                        chaine = chaine & .List(j) & vbCrLf
                        Exit For
                    End If
                Next j
            End With
        Next i
    End With
     
    MsgBox chaine
    End Sub
    si tu as du mal à comprendre la mécanique, même après avoir compris l'excellent tutoriel proposé par kiki, dis-moi ce que tu ne comprends pas


    EDIT : du coup, j'en ai oublié la partie "comment faire pour que ma méthode fonctionne?", si tu souhaites rester sur ta méthode

    Alors, tu vas aller dans l'aide pour la propriété BoundColumn et tu regardes à quoi ça correspond
    ensuite tu mets cette propriété à 0 pour chaque listbox et tu lances ta procédure
    tu remarqueras que le message n'indique plus des valeurs (en en oubliant certaines), mais qu'il renvoi la position de l'élément sélectionné, sans en oublier
    et au final, tu ajustes un peu ta procédure :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    Private Sub CommandButton1_Click()
        MsgBox ListBox1.List(ListBox1.Value) & Chr(10) & _
               ListBox2.List(ListBox2.Value) & Chr(10) & _
               ListBox3.List(ListBox3.Value) & Chr(10) & _
               ListBox4.List(ListBox4.Value) & Chr(10) & _
               ListBox5.List(ListBox5.Value) & Chr(10) & _
               ListBox6.List(ListBox6.Value) & Chr(10) & _
               ListBox7.List(ListBox7.Value)
    End Sub
    Et là, tu auras sans doute compris que le code juste au dessus peut tout à fait remplacer celui que j'ai proposé plus haut
    On aurait même pu faire une boucle dans ce dernier code ... sur la même méthode que le précédent.
    Bref, fais tes courses, mais surtout n'oublie pas d'apprendre comment fonctionnent les recettes !!

  4. #4
    Candidat au Club
    Homme Profil pro
    Autre
    Inscrit en
    Mars 2014
    Messages
    2
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Autre

    Informations forums :
    Inscription : Mars 2014
    Messages : 2
    Par défaut
    Kiki, merci à toi pour le tuto.
    Joe merci pour tes suggestions (il va sans dire que ton code est plus élégant !)
    Pour la petite histoire je n'ai pas bien saisi pourquoi la propriété .value renvoit parfois un vide au lieu de la valeur sélectionnée.
    Ça n'a pas l'air d'être une première: lien

    Quoi qu'il en soit, le problème est résolu en utilisant la propriété .list ou .BoundColumn à zéro avec la ligne que tu suggères relative à ma "méthode" de départ.

    Donc ... question résolue

    Merci pour vos réponses

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

Discussions similaires

  1. [AC-2007] avoir procédure vba par défaut
    Par alassanediakite dans le forum VBA Access
    Réponses: 2
    Dernier message: 07/12/2009, 22h35
  2. Réponses: 2
    Dernier message: 05/12/2008, 12h06
  3. ProblemView selection de categorie par défaut(Eclipse 3.2)
    Par gama2ee dans le forum Eclipse Platform
    Réponses: 0
    Dernier message: 05/09/2007, 10h40
  4. Réponses: 1
    Dernier message: 02/04/2007, 12h37
  5. dernière valeur d'une liste par défaut
    Par faulk dans le forum Access
    Réponses: 2
    Dernier message: 11/07/2006, 12h34

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