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 :

Faire une multiselection à partir d'une comboBox?


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Octobre 2013
    Messages
    21
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2013
    Messages : 21
    Par défaut Faire une multiselection à partir d'une comboBox?
    Bonjour,
    Je suis nouvelle sur la programmation VBA et j'aurai besoin de votre aide svp.
    J'ai fait un programme où je fais appel à des comboBox et textBox, uniquement sur une feuille excel (pas de userform)
    Je renseigne mon département dans une comboBox, et j'associe le code correspondant grace à un textbox. Tout fonctionne.
    Je souhaite maintenant selectionner plusieurs départements dans ma comboBox, tout en gardant quasimment le même affichage.
    C'est à dire, en cliquant sur mon bouton departement, ma liste s'affiche, mes départements sont sélectionnés et mes valeurs alimentent par la suite ma comboBox. Par exemple: Hauts-de-Seine/Paris/Val-de-Marne en fonction de ce qui est sélectionné...
    Je dois associer tout cela probablement à une LISTEBOX, mais je ne sais pas à quelle étape l'intégrer? Devrais je me séparer de mes comboBox???
    Je m'embrouille entre les différents codes trouvés sur les forums. Surtout que ces codes sont faits pour des userforms :/
    Voici un bout de code fait pour mes combobox (qui marche mais sans la multiselection):

    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
    40
    Sub ComboBox1_Initialize()
    ComboBox1.Clear    'departement
    TextBox1.Value = ""    'code
     
    'pour remplir ma combobox, je stocke mes donnees filtrées et triées.
    '(Je peux renseigner la combobox en enlevant les doublons:
    'If ComboBox1.ListIndex = -1 Then ComboBox1.AddItem Sheets("Feuil2").Range("A" & j)) , c'est plus simple mais lent à l'exécution.)
    Sheets("Feuil1").Range("b1:b65356").AdvancedFilter Action:=xlFilterCopy, CopyToRange:=Sheets("Feuil2").Range( _
    "b1"), Unique:=True
    ActiveWorkbook.Worksheets("Feuil2").Sort.SortFields.Clear
    ActiveWorkbook.Worksheets("Feuil2").Sort.SortFields.Add Key:=Range("b1"), _
        SortOn:=xlSortOnValues, Order:=xlAscending, DataOption:= _
        xlSortTextAsNumbers
    With ActiveWorkbook.Worksheets("Feuil2").Sort
        .SetRange Range("b2:b65536")
        .Header = xlNo
        .MatchCase = False
        .Orientation = xlTopToBottom
        .SortMethod = xlPinYin
        .Apply
    End With
    Dim departement As String
    Dim lastdepartement As Integer
    lastdepartement = Sheets("Feuil2").Range("b65536").End(xlUp).Row
    For i = 2 To lastdepartement
    departement = Sheets("Feuil2").Cells(i, 2).Value
    ComboBox1.AddItem departement
    Next i
    End Sub
     
    'le code associé
    Sub ComboBox1_change()
        If ComboBox1.Value = "" Then
            TextBox1.Value = ""
        End If
        If ComboBox1.Value <> "" Then
            TextBox1.Value = WorksheetFunction.VLookup(ComboBox1.Value, Sheets("Feuil2").Range("AA1:AB65536"), 2, False)
        End If
    End Sub
    'fin code
    est ceque je dois refaire mon code en enlevant mes comboBox ou je peux insérer ma listBox quelque part?
    Ci joint un exemple court du pgm et son affichage.

    Je vous remercie par avance pour votre aide et votre patience.
    Fichiers attachés Fichiers attachés

  2. #2
    Expert confirmé Avatar de illight
    Homme Profil pro
    Analyste décisionnel
    Inscrit en
    Septembre 2005
    Messages
    2 344
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activité : Analyste décisionnel
    Secteur : Service public

    Informations forums :
    Inscription : Septembre 2005
    Messages : 2 344
    Par défaut
    Dans un premier temps, ton fichier n'a pas les macros

    Sinon, je n'ai pas l'impression que la multi sélection soit possible dans les combobox, la seule solution que tu auras serait alors effectivement de les remplacer par des ListBox, qui sont de toute façon plus appropriées pour des multi sélection
    1. Avant de poster, et http://www.developpez.com/sources/
    2. Lors du post, n'oubliez pas, si besoin les balises CODE => voir ici pour l'utilisation
    3. N'oubliez pas le
    4. N'oubliez pas le si la réponse vous a été utile !

  3. #3
    Membre averti
    Profil pro
    Inscrit en
    Octobre 2013
    Messages
    21
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2013
    Messages : 21
    Par défaut
    Merci illight. Je n'ai pas réussi à telecharger le bon fichier avec les macro parque le format xlsm n'est pas accepté.

    Sinon j'ai enfin inséré mes listBox et activer l'option fmMultiSelectMulti (pour avoir la multiselection).
    quelle est l'etape à suivre ?
    Quand j'ouvre mon fichier, j'appuie sur un bouton qui appelle mon userform, dans lequel apparait ma liste. Je peux selectionner plusieurs departements, mais comment charger ces valeurs svp???
    Dois je avoir encore un bouton ''valider" qui chargera ces valeurs?

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    'voici le code exécuté dans mon userform:
    Private Sub ListBox1_Initialize()
    End Sub
     
    Private Sub UserForm_Initialize()
        With Sheets("feuil2")
            ListBox1.List = .Range("B2:B" & .Range("B65536").End(xlUp).Row).Value
        End With
        ListBox1.MultiSelect = fmMultiSelectMulti
        ListBox1.ListIndex = -1
    End Sub
    Je vous remercie par avance

  4. #4
    Membre averti
    Profil pro
    Inscrit en
    Octobre 2013
    Messages
    21
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2013
    Messages : 21
    Par défaut charger une listBox
    Rebonjour,
    c'est bon j'ai trouvé. voici le code de mon userform:

    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
     
    Private Sub ListBox1_Initialize()
    End Sub
     
    Private Sub CommandButton1_Click()
    Dim E1 As Long
    Dim k As Integer
     
    If ListBox1.ListIndex = -1 Then
        MsgBox "Veuillez selectionner votre departement"
        Exit Sub
    End If
     
    For k = 0 To ListBox1.ListCount - 1 
       If ListBox1.Selected(k) = True Then
        With Sheets("feuil2")
        E1 = Range("B65536").End(xlUp).Row + 1
        Range("B" & E1).Value = ListBox1.List(k)
        ListBox1.Selected(k) = False
        End With
    End If
    Next
    ListBox1.ListIndex = -1
    UserForm1.Hide
    Unload UserForm1
     
    End Sub
     
     
    Private Sub UserForm_Initialize()
        With Sheets("feuil2")
            ListBox1.List = .Range("B2:B" & .Range("B65536").End(xlUp).Row).Value
        End With
        ListBox1.MultiSelect = fmMultiSelectMulti
        ListBox1.ListIndex = -1
    End Sub
    Merci.

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

Discussions similaires

  1. Réponses: 2
    Dernier message: 08/03/2010, 15h43
  2. [Batch] Créer une chaine à partir d'une variable et d'une autre chaine
    Par mlle lain dans le forum Scripts/Batch
    Réponses: 1
    Dernier message: 10/11/2009, 16h26
  3. Saisir une image à partir d'une photo ou d'une vidéo
    Par lohengrin56 dans le forum Flash/Flex
    Réponses: 0
    Dernier message: 07/07/2009, 16h17
  4. Réponses: 2
    Dernier message: 05/01/2009, 12h45
  5. Réponses: 5
    Dernier message: 22/05/2008, 14h42

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