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 :

Permettre la multisélection dans une listbox


Sujet :

Macros et VBA Excel

  1. #1
    Futur Membre du Club
    Femme Profil pro
    Étudiant
    Inscrit en
    Juin 2014
    Messages
    16
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 32
    Localisation : France, Loire (Rhône Alpes)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juin 2014
    Messages : 16
    Points : 6
    Points
    6
    Par défaut Permettre la multisélection dans une listbox
    Bonjour !

    Je suis nouvelle sur ce forum et je commence tout juste à apprendre le langage VBA sur excel.

    J'ai crée le userform suivant :

    Nom : Userform.png
Affichages : 348
Taille : 55,7 Ko

    Dans la cinquième listbox intitulée "Requête", on peut voir les requêtes des clients, puis sélectionner dans les listbox les informations correspondantes. Il suffit ensuite de cliquer sur valider pour passer à la requête suivante.

    J'aimerais pouvoir sélectionner plusieurs données dans mes listbox, par exemple pour transport : "Train" et "Avion". J'ai donc sélectionné "multiselect" dans les propriétés de mes listbox, puis tenté d'écrire un code adéquat, mais rien à faire, ça ne marche pas. Pourriez-vous m'aider ?
    Je peux vous copier mon code si besoin.

    Je vous remercie d'avance !

  2. #2
    Membre expert
    Homme Profil pro
    Retraité
    Inscrit en
    Juillet 2009
    Messages
    1 794
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 85
    Localisation : Belgique

    Informations professionnelles :
    Activité : Retraité
    Secteur : Enseignement

    Informations forums :
    Inscription : Juillet 2009
    Messages : 1 794
    Points : 3 094
    Points
    3 094
    Par défaut
    Bonjour,
    Les items d'une liste box constitue un tableau donc pour récupérer les sélections il faut relire le tableau
    Dans la FAQ il y a ça
    http://excel.developpez.com/faq/?pag...ListFormulaire

  3. #3
    Futur Membre du Club
    Femme Profil pro
    Étudiant
    Inscrit en
    Juin 2014
    Messages
    16
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 32
    Localisation : France, Loire (Rhône Alpes)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juin 2014
    Messages : 16
    Points : 6
    Points
    6
    Par défaut
    Merci de votre réponse.
    Sur la page dont vous m'avez envoyé le lien, il n'y a pas le code correspondant à mon problème. (La question qui s'en rapproche le plus est Comment identifier les lignes sélectionnées dans une Listbox formulaire ? mais ce n'est pas ce que je cherche)

  4. #4
    Membre expert
    Homme Profil pro
    Retraité
    Inscrit en
    Juillet 2009
    Messages
    1 794
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 85
    Localisation : Belgique

    Informations professionnelles :
    Activité : Retraité
    Secteur : Enseignement

    Informations forums :
    Inscription : Juillet 2009
    Messages : 1 794
    Points : 3 094
    Points
    3 094
    Par défaut
    Re,
    Ah bon! Que cherchez vous alors ?

  5. #5
    Futur Membre du Club
    Femme Profil pro
    Étudiant
    Inscrit en
    Juin 2014
    Messages
    16
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 32
    Localisation : France, Loire (Rhône Alpes)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juin 2014
    Messages : 16
    Points : 6
    Points
    6
    Par défaut
    Je n'ai peut-être pas compris le sens d'identifier les lignes sélectionnées alors ! Je croyais que cela permettait de visualiser les données présentes dans les cases (c'est-à-dire déjà rentrées précédemment)

    J'ai essayé de rentrer le code donné sur cette page à la suite de mon code ; voici mon code pour la listbox1 :


    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
    ' On programme ce qu'il se passe lorsque l'on clique sur le bouton VALIDER 
     
    Private Sub Bouton_Valider_Click()
    Dim k As Integer
    Dim i As Long
     
       'On efface les remarques et numéros de ligne précédents
        ListBox5.Clear
     
        'On se place dans la feuille Voyages
        Do While Worksheets("Voyages").Cells(iterateur, 1) = ""
        iterateur = iterateur + 1
        Loop
    ' Indique qu'on récupère les infos de la colonne 1 'Requêtes'
    ' pour les mettre dans Box correspondantes
            ListBox5.AddItem Worksheets("Voyages").Cells(iterateur, 1)
            Me.ListBox5.List = Split(Cells(iterateur, 1).Value, vbLf)
     
            '  Vérification que la feuille Voyages est active
            Sheets("Voyages").Activate
     
            ' Vérification que la saisie a été faite (présence de texte ou non entre guillemets),
            ' puis remplissage dans la BDD
     
                If ListBox1.Text = "" Then
                ElseIf ListBox1.Text <> "" Then
                Worksheets("Voyages").Cells(iterateur - 1, 2) = ListBox1.Text
                End If
    Et voici le code pour identifier la multisélection :


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     With Worksheets("Voyages")
            For i = 1 To .ListBoxes("List Box 1").ListCount
                If .ListBoxes("List Box 1").Selected(i) Then
                    MsgBox .ListBoxes("List Box 1").List(i)
                End If
            Next i
        End With
    Cela ne marche pas, car d'une part il ne reconnaît pas la propriété ListBoxes, et d'autre part il signale un problème avec le bouton Remplir sur la feuille excel . J'ai également essayé de le mettre dans la boucle mais ça ne fonctionne pas non plus. Peut-être qu'ayant déjà utilisé la variable i je dois en changer ?

  6. #6
    Inactif  

    Homme Profil pro
    cuisiniste
    Inscrit en
    Avril 2009
    Messages
    15 374
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : cuisiniste
    Secteur : Bâtiment

    Informations forums :
    Inscription : Avril 2009
    Messages : 15 374
    Points : 12 068
    Points
    12 068
    Billets dans le blog
    8
    Par défaut heu....
    Bonjour Irishlily

    il n'y a rien de plus simple
    un exemple
    cet exemple rempli une listbox de 10 item
    un bouton pour valider la commande tafiche la selection dans un msgbox
    tu peux t'en inspirer
    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
    Private Sub CommandButton1_Click()
    MsgBox TableListbox1selected
    End Sub
    Private Sub UserForm_Click()
    For i = 1 To 10
    ListBox1.AddItem "item" & i
    Next
    End Sub
    Private Function TableListbox1selected() As String
    Dim Txt As String
        For i = 1 To Me.ListBox1.ListCount - 1
            If Me.ListBox1.Selected(i) = True Then
                Txt = Txt & Me.ListBox1.List(i) & vbCrLf
            End If
        Next i
        TableListbox1selected = Txt
    End Function
    Au plaisir

  7. #7
    Futur Membre du Club
    Femme Profil pro
    Étudiant
    Inscrit en
    Juin 2014
    Messages
    16
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 32
    Localisation : France, Loire (Rhône Alpes)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juin 2014
    Messages : 16
    Points : 6
    Points
    6
    Par défaut
    Je vous remercie ! A quel endroit dois-je placer ce code ? Dans la boucle de remplissage dans la listbox1 ?

  8. #8
    Inactif  

    Homme Profil pro
    cuisiniste
    Inscrit en
    Avril 2009
    Messages
    15 374
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : cuisiniste
    Secteur : Bâtiment

    Informations forums :
    Inscription : Avril 2009
    Messages : 15 374
    Points : 12 068
    Points
    12 068
    Billets dans le blog
    8
    Par défaut
    re
    ne fait pas de copier coller sans comprendre tu va te planter

    la fonction est a mettre dans le userform ou se trouve la liste box

    mais attention ne met pas tout!!!!, seulement la fonction le remplissage était un exemple je ne sais pas comment tu remplis ta List box

    et l'évènement est déclenché par le commandbutton dans mon exemple ca ne sera peut être pas ton cas
    j'espère que je me suis fait comprendre
    Au plaisir

    Re
    Un dernier petit detail ta listebox a t elle le parametre multiselect a "fmMultiSelectextented"?? si c'est pas le cas ca ne fonctionnera pas

  9. #9
    Futur Membre du Club
    Femme Profil pro
    Étudiant
    Inscrit en
    Juin 2014
    Messages
    16
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 32
    Localisation : France, Loire (Rhône Alpes)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juin 2014
    Messages : 16
    Points : 6
    Points
    6
    Par défaut
    J'ai rentré ce code juste avant ma procédure sub :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    Private Function Listbox1selected() As String
       Dim Txt As String
       Dim i As Integer
     For i = 1 To Me.ListBox1.ListCount - 1
            If Me.ListBox1.Selected(i) = True Then
                Txt = Txt & Me.ListBox1.List(i) & vbCrLf
            End If
        Next i
        Listbox1selected = Txt
       End Function
    Mais il ne se passe rien. J'ai sélectionné fmMultiSelectMulti comme paramètre !

  10. #10
    Membre expert
    Homme Profil pro
    Retraité
    Inscrit en
    Juillet 2009
    Messages
    1 794
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 85
    Localisation : Belgique

    Informations professionnelles :
    Activité : Retraité
    Secteur : Enseignement

    Informations forums :
    Inscription : Juillet 2009
    Messages : 1 794
    Points : 3 094
    Points
    3 094
    Par défaut
    Re,
    Essayez dans la Sub BoutonValider

  11. #11
    Futur Membre du Club
    Femme Profil pro
    Étudiant
    Inscrit en
    Juin 2014
    Messages
    16
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 32
    Localisation : France, Loire (Rhône Alpes)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juin 2014
    Messages : 16
    Points : 6
    Points
    6
    Par défaut
    Cela me renvoie le message "Erreur de compilation : "EnsSub attendu" ... pourtant j'ai bien un End Sub tout à la fin

  12. #12
    Inactif  

    Homme Profil pro
    cuisiniste
    Inscrit en
    Avril 2009
    Messages
    15 374
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : cuisiniste
    Secteur : Bâtiment

    Informations forums :
    Inscription : Avril 2009
    Messages : 15 374
    Points : 12 068
    Points
    12 068
    Billets dans le blog
    8
    Par défaut re
    Bonjout irishlily

    reprend l'exemple complet que je t'ai donné met le dans un classeur vierge
    et fait divers essai pour en comprendre le fonctionnement

    la fonction doit être activée par un bouton ca ne se fait pas tout seul

    regarde bien l'exemple

Discussions similaires

  1. recherche dans une listbox
    Par micknic dans le forum Balisage (X)HTML et validation W3C
    Réponses: 4
    Dernier message: 23/02/2005, 21h39
  2. Clique droit dans une ListBox
    Par LoicH dans le forum C++Builder
    Réponses: 5
    Dernier message: 07/02/2005, 22h50
  3. [debutant] supprimer elements dans une listbox
    Par F.F. dans le forum C++Builder
    Réponses: 8
    Dernier message: 02/07/2004, 11h38
  4. [WIN32]tabulation dans une listbox
    Par stoluup dans le forum MFC
    Réponses: 2
    Dernier message: 09/06/2004, 10h11
  5. Icône a coté du texte dans une ListBox
    Par joce3000 dans le forum C++Builder
    Réponses: 6
    Dernier message: 05/12/2003, 02h25

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