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 :

Lier Combobox, Boutons d'options et ListBox [XL-2013]


Sujet :

Macros et VBA Excel

  1. #1
    Membre du Club
    Femme Profil pro
    Assistante
    Inscrit en
    Février 2016
    Messages
    166
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Indre et Loire (Centre)

    Informations professionnelles :
    Activité : Assistante

    Informations forums :
    Inscription : Février 2016
    Messages : 166
    Points : 51
    Points
    51
    Par défaut Lier Combobox, Boutons d'options et ListBox
    Bonjour le forum,

    Je suis actuellement sur la confection d'un projet que ma hiérarchie m'a confié.
    Ce projet est à réaliser sous Excel 2013, le but étant de simplifier la planification/gestion des formations.

    J'ai donc créé un UserForm avec plein de textbox, combobox, boutons de commande etc.. Tout fonctionne parfaitement. Par le biais de ce UserForm, on peut désormais planifier des formations, les modifier ou les supprimer.
    Les valeurs se déversent dans un tableau quand on clique sur le bouton "Ajouter la formation", et un numéro d'index unique est généré dans la dernière colonne du tableau.

    D'un peu plus près :

    Dans ce UserForm j'ai :
    - une Combobox (Cb) qui correspond au noms des salariés de l'entreprise. Là, pas de problème.
    - une ListBox Multi-colonne (ListBox2) qui affiche les formations planifiées et annulées selon le salarié choisi dans ma Cb. Le numéro d'index est donc récupérer automatiquement pour alimenter la ListBox2. Pas de problème non plus.

    Mon problème, que je n'arrive pas à résoudre depuis de nombreux jours, est le suivant :

    J'ai crée 3 boutons d'option intitulés : "Toutes", "Planifiées", "Annulées".
    Je souhaiterais que lorsque je choisis Monsieur DUPONT dans ma Cb et que je clique sur le bouton "Planifiées", ne s'affichent que les formations planifiées de l'agent dans la ListBox2. Pareil si je clique sur le bouton "Annulées", ne s'affichent que les formations annulées de cet agent. Enfin "Toutes" que toutes ses formations apparaissent.

    J'espère être claire dans mes explications

    Merci à tous d'avance de me venir en aide.

  2. #2
    Membre averti
    Homme Profil pro
    Inscrit en
    Octobre 2012
    Messages
    199
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Octobre 2012
    Messages : 199
    Points : 319
    Points
    319
    Par défaut
    Bonjour,

    Comment alimentez-vous la ListBox2 lorsque vous sélectionnez seulement l'agent ? Pouvez-vous mettre un bout de code ?

    Cordialement,

  3. #3
    Membre du Club
    Femme Profil pro
    Assistante
    Inscrit en
    Février 2016
    Messages
    166
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Indre et Loire (Centre)

    Informations professionnelles :
    Activité : Assistante

    Informations forums :
    Inscription : Février 2016
    Messages : 166
    Points : 51
    Points
    51
    Par défaut
    Bonjour Goldstar,

    Ma listbox2 est alimentée grâce à cette Fonction :
    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
    Function pipo()
    'alimente la listbox
        Dim col As Byte
        Dim lign As Long, drlig As Long
        If Cb = "" Then Exit Function
        ListBox2.Clear
        With Sheets("formations")
            drlig = .Range("A" & Rows.Count).End(xlUp).Row
            For lign = 1 To drlig
                If .Cells(lign, 2) = Cb Then
                ListBox2.AddItem .Cells(lign, 1)
                For col = 1 To 9
                    If col = 7 Then
                        ListBox2.List(ListBox2.ListCount - 1, col) = .Cells(lign, 23)
                    Else
                        ListBox2.List(ListBox2.ListCount - 1, col) = .Cells(lign, col + 1)
                    End If
                Next col
            End If
        Next lign
     
        End With
     
     
    End Function
    Et pour la visualisation de la ligne quand on clique :

    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 Listbox2_Click()
    'alimente les combobox et listbox avec des données existantes dans le tableau en fonction de l'item sélectionné dans la listbox :
    Dim numlign
     
    For i = 0 To ListBox2.ListCount - 1
        If ListBox2.Selected(i) = True Then
            numlign = ListBox2.List(i, 7)
        End If
    Next i
     
       Columns("w:w").Select '====== NUMERO D'INDEX UNIQUE
        numlign = Selection.Find(What:=numlign, After:=ActiveCell, LookIn:=xlFormulas, lookat _
            :=xlPart, SearchOrder:=xlByRows, SearchDirection:=xlNext, MatchCase:= _
            False, SearchFormat:=False).EntireRow.Select
    '>>>>>>>>>>>>   RECUPERE LA LIGNE SELECTIONNE DEPUIS LA LISTBOX2    <<<<<<<<<<<<<<<<< 
    End Sub
    Merci pour ton aide.

  4. #4
    Membre averti
    Homme Profil pro
    Inscrit en
    Octobre 2012
    Messages
    199
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Octobre 2012
    Messages : 199
    Points : 319
    Points
    319
    Par défaut
    Re,

    pourquoi pas ne pas ajouter sur click de chaque optionButton l'appel à la fonction pipo

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    Private Sub OptionButton1_Click()
        Call pipo
    End Sub
     
    Private Sub OptionButton2_Click()
        Call pipo
    End Sub
    Private Sub OptionButton3_Click()
        Call pipo
    End Sub
    puis de tester l'option sélectionnée pour établir un filtre

    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
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    Function pipo()
     
    'Recherche de l'option sélectionnée
    If OptionButton1.Value = True Then
        leFiltre = "Toutes"
    ElseIf OptionButton2.Value = True Then
        leFiltre = "Planifiées"
    Else
        leFiltre = "Annulées"
    End If
     
    'alimente la listbox
    Dim col As Byte
    Dim lign As Long, drlig As Long
    If Cb = "" Then Exit Function
    ListBox2.Clear
    With Sheets("formations")
        drlig = .Range("A" & Rows.Count).End(xlUp).Row
     
        If leFiltre = "Toutes" Then
            For lign = 1 To drlig
                If .Cells(lign, 2) = Cb Then
                    ListBox2.AddItem .Cells(lign, 1)
                    For col = 1 To 9
                        If col = 7 Then
                            ListBox2.List(ListBox2.ListCount - 1, col) = .Cells(lign, 23)
                        Else
                            ListBox2.List(ListBox2.ListCount - 1, col) = .Cells(lign, col + 1)
                        End If
                    Next col
                End If
            Next lign
        Else
            For lign = 1 To drlig
                If .Cells(lign, 2) = Cb And .Cells(lign, 'METTRE ICI LE N° DE LA COLONNE DANS LAQUELLE SE TROUVE LE FILTRE') = leFiltre Then
                    ListBox2.AddItem .Cells(lign, 1)
                    For col = 1 To 9
                        If col = 7 Then
                            ListBox2.List(ListBox2.ListCount - 1, col) = .Cells(lign, 23)
                        Else
                            ListBox2.List(ListBox2.ListCount - 1, col) = .Cells(lign, col + 1)
                        End If
                    Next col
                End If
            Next lign
        End If
    End With
     
     
    End Function

  5. #5
    Membre du Club
    Femme Profil pro
    Assistante
    Inscrit en
    Février 2016
    Messages
    166
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Indre et Loire (Centre)

    Informations professionnelles :
    Activité : Assistante

    Informations forums :
    Inscription : Février 2016
    Messages : 166
    Points : 51
    Points
    51
    Par défaut
    Bonjour Goldstar,

    J'ai testé à l'instant la méthode que vous m'avez proposé et ...... cela fonctionne super bien !!!!!

    Je suis trop contente, merci milles fois, vous êtes trop fort !

    A bientôt peut-être avec surement d'autres problèmes ...

    Cordialement,

  6. #6
    Membre du Club
    Femme Profil pro
    Assistante
    Inscrit en
    Février 2016
    Messages
    166
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Indre et Loire (Centre)

    Informations professionnelles :
    Activité : Assistante

    Informations forums :
    Inscription : Février 2016
    Messages : 166
    Points : 51
    Points
    51
    Par défaut Lier Combobox, Boutons d'options et ListBox + nouvelle combobox
    Bonjour le forum,


    J'aimerais faire évoluer ce projet avec l'ajout d'une autre combobox. (j'essaye désespéramment, mais en vain)....

    A ce jour, je peux filtrer ma listbox en affichant soit "toutes" les formations, soit celles "planifiées" ou soit celles "annulées", grâce à Goldstar, qui a réussi à faire évoluer mes codes.
    Maintenant, je souhaiterais ajouter une combobox pour filtrer les formations affichées dans la listbox, par les numéros de semaine.
    Cette nouvelle combobox s'appelle "FiltreSemaine".
    Donc par exemple, si je cherche les formations planifiées de la semaine 11, la listbox doit n'afficher que les formations planifiées de la semaine 11.

    Merci de me venir en aide une nouvelle fois

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

Discussions similaires

  1. [XL-2010] Lier plusieurs Combobox pour afficher dans une listbox
    Par Marc31 dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 15/10/2015, 13h49
  2. boutons d'option
    Par Djekill dans le forum Access
    Réponses: 6
    Dernier message: 15/11/2005, 16h11
  3. Modifier une requête en fonction de boutons d'option
    Par JahRastafari dans le forum Access
    Réponses: 17
    Dernier message: 15/06/2005, 13h42
  4. [C#] Lier des boutons radio dans une application mobile
    Par Loïc56 dans le forum Windows Forms
    Réponses: 2
    Dernier message: 22/04/2005, 13h00
  5. [MFC] bouton avec option "accept files"
    Par bigboomshakala dans le forum MFC
    Réponses: 4
    Dernier message: 23/06/2004, 16h15

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