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 !
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).
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.
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...😛
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)
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
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
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