Ceci est une page optimisée pour les mobiles. Cliquez sur ce texte pour afficher la vraie page.

Combobox avec des sous-catégories

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

Chloulou

XLDnaute Occasionnel
Bonjour le forum,

j'ai l'impression que je pose une nouvelle question tous les matins ici... c'est une vrai mine d'or d'informations, alrs merci à tous ceux qui postent.

Bref, j'aimerais mettre en place dans un USF une combobox avec des sous-catégories, je m'explique:
j'ai déjà une combobox avec une liste d'application d'équipement hydraulique :
aviation
militaire
offshore
barrage hydraulique...

mais j'aimerais que ma combobox soit plus comme ca :
aviation
-train d'atterissage
-Passerelle d'embarquement
militaire
- levage
- ...
offshore
- pied de plate forme
-....
....

J'ai pas trouvé de postes correspondants dans les anciens, alors je pose cette question : est-ce possible avec VBA E? car avec d'autres logiciels, c'est ok (j'ai vu ca sur un site internet pour la recherche de voitures d'occasion, avec les régions en catégories principales et sous catégories = départements).

voilà
merci de votre attention a tous
 
Re : Combobox avec des sous-catégories

Bonjour,

Tu peux tout à fait avoir ce type de présentation dans une combobox si chaque sous catégorie est unique. Il t'appartient alors de lui affecter le traitement idoine.
Par contre si tu as une sous catégorie qui se retrouve dans plusieurs catégories tu ne peux pas le faire(ou plutôt ça devient beaucoup plus compliqué à gérer via des tests). Il faut alors des combo imbriquées.

Cordialement
 
Re : Combobox avec des sous-catégories

Re,
Salut et merci Hervé pour la mise en image😉,

Toutefois, on est toujours dans l'attente de savoir si les sous catégories sont uniques, comme dans l'exemple que tu as joint, ou non...
Alors que pour idoine un dictionnaire suffit...😛

Cordialement
 
Re : Combobox avec des sous-catégories

Bonjour le forum,
Bonjour Hervé, bonjour Spitnolan08

de bon matin je trouve de nouuvelles réponses à mon poste, ca me fait vraiment plaisir.
Je sui désolé pour la demande de dédinition, mais j'avoue ne jamais avoir entendu parler de ce terme. J'avais l'impression que soit c'était un terme spécifique soit une ereur de frappe. Alors mon ignorance n'a pas fait défaut cette fois ci. Néanmoins, j'ai appris un nouveau terme🙄

j'ai pas encore regardé la piece jointe, mais selon moi, il n'y aura pas de sous catégories identiques dans deux catérgories différentes car les domaines sont vraiment différents (Militaire, Barrage par exemple)
 
Re : Combobox avec des sous-catégories

je crois que c'est a peu près ce que je cherche... a moi d'adapter cela à mon application en cours de travail :
car mes listes d'applications(Barrage, militaire...) sont dans une seule colonne et ceci ne peut etre modifié sous peine de reecrir une bonne partie ddu code actuel,
et mes listes doivent s'actualiser si l'utilisateur remplit la combobox avec une application qui n'est pas dans la liste.
Je modifierai ma macro d'ajout dans mes listes pour que si l'utilisateur remplit :
CatégorieConnue - NouvelleSousCatégorie alors la liste de la catégorie connue stocke ma nouvelle valeur

Merci a vous deux dans tous les cas
 
Dernière édition:
Re : Combobox avec des sous-catégories

Bonjour le forum,
je relance le sujet car j'ai de nouveau élément la d esuus, alors j'espère que ca intéressera des gens, magré tout...

Ma liste d'pplication et de sous application se trouve dans une seule colonne, et je les note ainsi :
Application1
Application1#SousApplication1
Application1#SousApplication2
Application2
Application2#SousApplication1
Application2#SousApplication2

Avec la macro ,ci dessous, je fait un affichage du style:
Application 1
- Sous Application1
Code:
Public Sub RemplissageListeSousCat(Combo As ComboBox, Liste As Range)

'Macro réalisée par

'Objectif : remplir les combobox ou doivent apparaitre des sous catégories

    Dim NbLigne, Position#, LongueurChaine As Long
    Dim i As Byte
    Dim SsCat As String
    NbLigne = Application.WorksheetFunction.CountA(Liste)
    
    For i = 1 To NbLigne
    
        Position# = InStr(Liste.Rows(i), "#")
        LongueurChaine = Len(Liste.Rows(i).Text)
        
        Select Case Position#
            
            Case 0: Combo.AddItem Liste.Rows(i)


            Case Else:  SsCat = "   - " & Liste.Rows(i).Characters(Position# + 1, LongueurChaine).Text
                        
                        Combo.AddItem SsCat
        
        End Select
        
    Next i
    
    
End Sub
Pour cela pas de problème...

Par contre pour le stockage de l'informations, ca se gate, car mon tableau a une colonne Application dans laquelle je souhaiterai faire apparaitre Application#SousApplication, alors que l'information de la combobox n'est plus que - SousApplication.

Comment faire pour récupérer l'info initial duremplissage de la combobox. Est-il possible de faire enh sorte que la valeur renvoyé par la combobox ne soit pas celle de l'affichage de la combobox, par exemple directement récupérer les coordonnées de la cellule qi a servi au remplissage de la ligne de la combobox?

Je sais que ma phrase est longue et le problème peut etre pas clair, alors n'hésitez pas à me demander plus de prcécisions...

Ps: j'ai aussi une macro pour l'ajout de valeur non présente dans la liste de ma combobox, je donne le code, ca peut servir à certains:
Code:
Public Sub AjoutListe(Entree As String, NomFeuille As String, Liste As Range)
' Macro enregistrée le 18/06/2007
'Objectif : ajouter une entree non presente dans les lidtes de remplissage des combobox

    Dim i As Integer
    Dim NbLigneListe As Long
    Dim ColonneListe As Long
    Dim Insertion As Integer
    Dim MaPlage As Range
    Dim NomPlage As String
    
    NomPlage = Liste.Name.Name
    
    Insertion = 0
    
    'récupérer le nombre de colonnes et de ligne de la liste nommée, sachant qu'elle est en colonne et commenance ligne 2
    NbLigneListe = Liste.Rows.Count
    ColonneListe = Liste.Column
    
    If Entree = "" Then
    
    Else
    
        For i = 1 To NbLigneListe + 1
        
            If Entree Like Cells(i, ColonneListe).Value Then
        
                Insertion = Insertion + 0
            
            Else
        
                Insertion = Insertion + 1
            
            End If
        
         Next i
    
            If Insertion > 0 Then
                Worksheets(NomFeuille).Activate
                Cells(NbLigneListe + 2, ColonneListe).Value = Entree
           
                Set MaPlage = Range(Cells(2, ColonneListe), Cells(NbLigneListe + 1, ColonneListe))
                MaPlage.Name = NomPlage
                MaPlage.Resize(MaPlage.Rows.Count + 1).Name = NomPlage
                
            End If
    End If
    
        Call TriTableau(Worksheets(NomFeuille).Range(NomPlage), Worksheets(NomFeuille).Range(NomPlage))
        Worksheets("Feuil1").Activate
        
    End Sub
avec la macroTriTableau
Code:
Public Sub TriTableau(Tableau As Range, ClefTri As Range)
'
' TriTableau Macro
' Macro enregistrée le 15/06/2007 

    Tableau.Sort Key1:=ClefTri, Order1:=xlDescending, Header:=xlGuess, _
        OrderCustom:=1, MatchCase:=False, Orientation:=xlTopToBottom, _
        DataOption1:=xlSortNormal
        
End Sub
 
Re : Combobox avec des sous-catégories

Bonjour Choulou, Hervé, le fil,

Une solution en pièce jointe à adapter.

Si tu nous transmettais un fichier exemple fonctionnel ce serait quand même mieux : cela nous éviterait d'essayer devoir reconstituer ton puzzle😎

Cordialement
 

Pièces jointes

[RESOLU]: Combobox avec des sous-catégories

Mille merci!

c'est vraiment ce dont j'avais besoin.
Je suis désolé de ne pas avoir mis de pj, la prochaine fois j'essaierai de tenir compte de cette remarque.

Franchement, c'est nickel. 🙂
 
Re : Combobox avec des sous-catégories

Je modifie le code d'ajout de valeur non présente dans les combobox car ma macro ajoutait aussi les valeurs déjà présentes :

Code:
Public Sub AjoutListe(Entree As String, NomFeuille As String, Liste As Range)

' Macro enregistrée le 18/06/2007 par chloulou et modifiée le 1/08/2007 par chloulou

'Objectif : ajouter une entree non presente dans les listes(liste nommé!!) de remplissage des combobox 

    Dim i As Integer
    Dim NbLigneListe As Long
    Dim ColonneListe As Long
    Dim Insertion As Boolean
    Dim MaPlage As Range
    Dim NomPlage As String
    Dim EntreeI As String
    Worksheets(NomFeuille).Activate
    
    NomPlage = Liste.Name.Name
    
    Insertion = False
    
    'récupérer le nombre de colonnes et de ligne de la liste nommée, sachant qu'elle est en colonne et commenance ligne 2
    NbLigneListe = Liste.Rows.Count
    ColonneListe = Liste.Column
    
    If Entree = "" Then
    
    Else
    
        For i = 1 To NbLigneListe
            
            EntreeI = Worksheets(NomFeuille).Cells(i, ColonneListe).Value
            
            If Entree <> EntreeI Then
                
                Insertion = True
                
            ElseIf Entree = EntreeI Then
                
                Insertion = False
                Exit For
                
            End If

         Next i

           Worksheets(NomFeuille).Activate
            
            If Insertion = True Then
            
                
                Cells(NbLigneListe + 2, ColonneListe).Value = Entree
           
                Set MaPlage = Range(Cells(2, ColonneListe), Cells(NbLigneListe + 1, ColonneListe))
                MaPlage.Name = NomPlage
                MaPlage.Resize(MaPlage.Rows.Count + 1).Name = NomPlage
                
            End If
            
    End If
    
        Worksheets("Feuil1").Activate
        
    End Sub
 
- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD

Discussions similaires

Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…