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 :

Problèmes : 4 filtres en cascade ComboBox pour affichage dans une ListBox


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Homme Profil pro
    Chargé de projet
    Inscrit en
    Novembre 2019
    Messages
    14
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 28
    Localisation : France, Vosges (Lorraine)

    Informations professionnelles :
    Activité : Chargé de projet
    Secteur : Industrie

    Informations forums :
    Inscription : Novembre 2019
    Messages : 14
    Par défaut Problèmes : 4 filtres en cascade ComboBox pour affichage dans une ListBox
    Bonjour,

    Je ne suis pas un pro de VBA et je rencontre quelques difficultés.

    Je m'explique :

    - J'ai crée un formulaire (UserForm2) permettant de rentrer des "problèmes" dans une base de donnée.

    - Maintenant j'aimerais à partir d'un autre formulaire (UserForm3), pouvoir filtrer mes données d'entrées qui se situe dans 4 ComboBox (1,2,3,4).
    Le filtre en cascade ou le filtre sans priorité n'a pas grande importance dans mon cas, tant que les ComboBox se mettent bien à jour en fonction des autres.

    - J'aimerais retrouver la/les ligne(s) de ma base de donnée qui correspondent aux valeur dans mes ComboBox, dans une ListBox (1) sur le formulaire.

    - Cela me permettra donc de sélectionner une ligne dans la liste pour afficher toutes les autres informations relative à ce problèmes dans des TextBox (2,3,4,5,6,7,8,9,10).

    - Comme cela je pourrais modifier et ajouter des informations en complément à ma base de donnée.

    Je sait qu'il est possible de ne réaliser qu'un seul formulaire pour l'ajout et la modification de donnée, mais vu mon niveau peu élevé j'ai préférer ne pas tout mélanger.

    J'espère avoir était clair dans ma demande. J'ai fouillé un peu partout sur internet et sur des forums pour trouver une solution. J'en ai trouver plusieurs intéressante qui ressemble à ce que je souhaite faire, mais je n'arrive pas à les adapter pour mon utilisation. JE rencontre des erreurs à chaque fois que je n'arrive pas à résoudre.

    Je vous met en copie mon excel avec mon UserForm1 pour l'ajout de données qui fonctionne, la base de donnée et le USerForm2 sans "les codes déchets".

    En espérant que quelqu'un puisse m'aider ou m'aiguiller pour réaliser mon formulaire. :lole:

    Je vous remercie par avance.

    Tintin88

    Edit : avec le Excel c'est mieux :lole:
    Fichiers attachés Fichiers attachés

  2. #2
    Membre Expert Avatar de Thautheme
    Homme Profil pro
    salarié
    Inscrit en
    Août 2014
    Messages
    1 373
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 64
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : salarié

    Informations forums :
    Inscription : Août 2014
    Messages : 1 373
    Par défaut
    Bonjour Tintin, bonjour le forum,

    je ne comprends pas pourquoi la ComboBox4 se trouve après la Listbox1. Ce n'est pas logique puisque il te faut la valeurs des 4 comboboxes pour alimenter la Listbox1...

  3. #3
    Membre averti
    Homme Profil pro
    Chargé de projet
    Inscrit en
    Novembre 2019
    Messages
    14
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 28
    Localisation : France, Vosges (Lorraine)

    Informations professionnelles :
    Activité : Chargé de projet
    Secteur : Industrie

    Informations forums :
    Inscription : Novembre 2019
    Messages : 14
    Par défaut
    Bonjour Thautheme,

    Merci pour ta réponse tout d'abord.

    Je viens de remettre cela dans l'ordre et j'ai trouver la solution pour filtrer ma list via mes 4 combobox (Elles ne fonctionne pas vraiment en cascade mais ça fonctionne quand même)
    Je vais essayer de crée un filtre via une barre de recherche pour complémenter le tout.

    Cependant je n’arrive pas à sélectionner une ligne dans ma list pour afficher les valeur dans mon formulaire.

    Je ne sait pas si vous pourrez m'aider avec cela. Je remet le dernier fichier à jour en pièce jointe.

    Merci

  4. #4
    Membre Expert Avatar de Thautheme
    Homme Profil pro
    salarié
    Inscrit en
    Août 2014
    Messages
    1 373
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 64
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : salarié

    Informations forums :
    Inscription : Août 2014
    Messages : 1 373
    Par défaut
    Bonjour Tintin, bonjour le forum,

    Une proposition au double-click dans la Listbox1 pas fiable à 100 %. En effet, j'ai remarqué plusieurs fois que si je renseignais la Combobox4 puis modifiais la valeur de cette même ComboBox4, j'avais un bug... Sinon ça semble tourner.
    J'avoue que je ne comprends pas bien le code qui permet d'alimenter la ListBox1 mais il me semble qu'il serait plus judicieux de stocker dans un colonne cachée (de la Listbox1) le numéro de ligne et au double-clic de se servir du numéro de ligne caché pour atteindre la ligne sans toute l'usine a gaz que je t'ai proposée.

    Le code :

    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 ListBox1_DblClick(ByVal Cancel As MSForms.ReturnBoolean)
    Dim TV As Variant
    Dim I As Integer
     
    TV = Worksheets("Feuil11").Range("A1").CurrentRegion
    If Me.ComboBox1.Value = "" And Me.ComboBox2.Value = "" And Me.ComboBox3.Value = "" And Me.ComboBox4.Value = "" Then LI = Me.ListBox1.ListIndex + 1
    If Me.ComboBox2.Value = "" And Me.ComboBox3.Value = "" And Me.ComboBox4.Value = "" Then
        For I = 2 To UBound(TV, 1)
            If CStr(TV(I, 1)) = Me.ComboBox1.Value And CStr(TV(I, 2)) = Me.ListBox1.Column(1, Me.ListBox1.ListIndex) And CStr(TV(I, 3)) = Me.ListBox1.Column(2, Me.ListBox1.ListIndex) And CStr(TV(I, 4)) = Me.ListBox1.Column(3, Me.ListBox1.ListIndex) Then LI = I
        Next I
    End If
    If Me.ComboBox3.Value = "" And Me.ComboBox4.Value = "" Then
        For I = 2 To UBound(TV, 1)
            If CStr(TV(I, 1)) = Me.ComboBox1.Value And CStr(TV(I, 2)) = Me.ComboBox2.Value And CStr(TV(I, 3)) = Me.ListBox1.Column(2, Me.ListBox1.ListIndex) And CStr(TV(I, 4)) = Me.ListBox1.Column(3, Me.ListBox1.ListIndex) Then LI = I
        Next I
    End If
    If Me.ComboBox4.Value = "" Then
        For I = 2 To UBound(TV, 1)
            If CStr(TV(I, 1)) = Me.ComboBox1.Value And CStr(TV(I, 2)) = Me.ComboBox2.Value And CStr(TV(I, 3)) = Me.ComboBox3.Value And CStr(TV(I, 4)) = Me.ListBox1.Column(3, Me.ListBox1.ListIndex) Then LI = I
        Next I
    End If
    MsgBox "Ligne : " & LI
    With Worksheets("Feuil11")
        .Activate
        .Cells(LI, 1).Select
    End With
    End Sub

  5. #5
    Membre averti
    Homme Profil pro
    Chargé de projet
    Inscrit en
    Novembre 2019
    Messages
    14
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 28
    Localisation : France, Vosges (Lorraine)

    Informations professionnelles :
    Activité : Chargé de projet
    Secteur : Industrie

    Informations forums :
    Inscription : Novembre 2019
    Messages : 14
    Par défaut
    Re bonjour Thautheme et bonjour également au forum,

    Merci pour ta réponse et pour ton code.

    J'ai juste une petite question, je ne comprend pas d'où provient LI. Elle apparaît pour la première fois en ligne 6 de ton code :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    If Me.ComboBox1.Value = "" And Me.ComboBox2.Value = "" And Me.ComboBox3.Value = "" And Me.ComboBox4.Value = "" Then LI = Me.ListBox1.ListIndex + 1
    Peux-tu m'éclairer la-dessus?

    Je ne pourrais pas t'éclairer pour le code qui permet de remplir la ListBox1 car ce n'est moi qui l'ai réaliser, il provient d'un tuto. J'ai juste réaliser les filtres pour les ComboBox.
    La solution que tu me propose à l'air plus pertinente et plus simple à mettre en place, je vais essayer cela.

    Je te remercie.

    Quentin

  6. #6
    Membre Expert Avatar de Thautheme
    Homme Profil pro
    salarié
    Inscrit en
    Août 2014
    Messages
    1 373
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 64
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : salarié

    Informations forums :
    Inscription : Août 2014
    Messages : 1 373
    Par défaut
    Re,

    En fait j'avais déclaré la variable LI en début de code pour que tu puisses l'utiliser dans le code toute l'UserForm et j'ai oublié de l'inclure dans le copier/coller :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    Option Explicit
    Private Const nbCbxL = 4
    Private Tusf As Variant
    Private LI As Integer
    LI représente le numéro de ligne...

+ 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. [XL-2010] Fixer la valeur d'un filtre d'un TBC pour lien dans une feuille différente
    Par pedrolapercu dans le forum Macros et VBA Excel
    Réponses: 7
    Dernier message: 19/02/2013, 06h32
  3. Réponses: 6
    Dernier message: 17/03/2011, 14h12
  4. lecture d'une cellule excel pour affichage dans une page web
    Par smartbis dans le forum Balisage (X)HTML et validation W3C
    Réponses: 1
    Dernier message: 22/05/2008, 09h33
  5. Problème d'affichage dans une listbox
    Par swap_nibble dans le forum Interfaces Graphiques
    Réponses: 3
    Dernier message: 25/01/2008, 17h29

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