Obtenir données uniques dans combobox

océanne

XLDnaute Junior
Bonjour le forum,

J'ai intégré plusieurs combobox liées entre elles dans un USF, et je souhaiterais que les valeurs affichées dans chaque combobox soient uniques...ce qui n'est pas le cas.
Je joins un fichier pour l'exemple avec les explications et captures d'écran pour illustrer mon propos.
De plus si je parvenais à filtrer les données traitées par CheckBox en haut de mon USF (explications également dans le classeur) ça serait le top.

Merci à celui ou celle qui pourra me faire avancer dans ma démarche.

Bonne journée à tous

Océanne.
 

Fichiers joints

Dernière édition:

Dranreb

XLDnaute Barbatruc
Re : Obtenir données uniques dans combobox

Bonjour.
Je vous ai déjà fourni les modules nécessaires.
C'est la même chose dans celui-ci, en ajoutant un ComboBox0 devant :
VB:
Option Explicit
Dim WithEvents CC As ComboBoxCasc
Dim Laligne As Long ' Numéro de la ligne sélectionnée dans CC.PlgTablo
Dim f, ACTION, SEQUENCE, OPG, OPS
'

Private Sub UserForm_Initialize()
Dim N As Long
Set CC = New ComboBoxCasc
CC.Plage PlgUti(Feuil4.[A2])
For N = 0 To 4: CC.Add Me.Controls("ComboBox" & N), N + 7: Next N
CC.Actualiser
Me.ComboBox0.SetFocus: SendKeys "{F4}"
End Sub
Private Sub ComboBox0_Change()
If Me.ComboBox0.ListIndex > -1 Then Me.ComboBox1.SetFocus: SendKeys "{F4}"
End Sub
Private Sub ComboBox1_Change()
If Me.ComboBox1.ListIndex > -1 Then Me.ComboBox2.SetFocus: SendKeys "{F4}"
End Sub
Private Sub ComboBox2_Change()
If Me.ComboBox2.ListIndex > -1 Then Me.ComboBox3.SetFocus: SendKeys "{F4}"
End Sub
Private Sub ComboBox3_Change()
If Me.ComboBox3.ListIndex > -1 Then Me.ComboBox4.SetFocus: SendKeys "{F4}"
End Sub
Private Sub CC_BingoUn(ByVal Ligne As Long)
Laligne = Ligne
End Sub
'
Private Sub CC_Défait()
Laligne = 0: ActiveSheet.[A1].Select
End Sub
Et :
VB:
Private Sub CommandButton2_Click()
Application.EnableEvents = False
CC.PlgTablo.Rows(Laligne).Copy
etc…
P.S. Remarque: je l'ai découvert en essayant d'enregistrer le classeur sous le nom "CbxCascOcéane.xls" qui existait déjà.
Je l'ai donc fait et je le joins.

P.S.2 Je n'avais pas tout lu concernant le premier critère. Je ne sais pas faire avec des CheckBox mais si ça vous intéresse j'ai aussi un module de classe ComboBoxLiés, compatible avec les autre modules de service, à peine moins performant, s'utilisant dans les userform de façon très proche du ComboBoxCasc, permettant de renseigner les ComboBox dans n'importe quel ordre. Ainsi on pourrait ne pas commencer par choisir ce 1er critère.
 

Fichiers joints

Dernière édition:

océanne

XLDnaute Junior
Re : Obtenir données uniques dans combobox

Bonjour DranReb et merci beaucoup pour vos explications très complètes ainsi que pour ce nouveau script, très riche peut être trop pour mon très faible niveau.
Avant que j'essaye de transposer mon beau programme, avec ce nouveau code, auriez vous la gentillesse de me dire simplement le bout de code qui manque sur le script contenu dans le classeur plus haut à l'éxécution des 4 Combobox afin que le contenu de ces fameuses combobox soit expurgé des doublons y compris des doublons vides.
Merci encore pour votre compréhension, ceci me ferait gagner un temps précieux.
Bien cordialement
O.
P.S. laissez tomber les checkbox et 5eme combobox comme proposé.
 

Dranreb

XLDnaute Barbatruc
Re : Obtenir données uniques dans combobox

Non je ne sais pas ce qui manque vu que j'ai définitivement pris le parti de ne plus jamais m'en occuper dans les userform parce que c'est trop compliqué. Ça ne m'intéresse donc vraiment pas d'étudier un code qui essaye de s'en occuper, au lieu de confier cela à des modules de services spécialisés simples à commander pour n'importe quoi, et qui ne fonctionne pas !
 
Dernière édition:

océanne

XLDnaute Junior
Re : Obtenir données uniques dans combobox

Merci encore Dranreb, trois dernières petites choses puisque je me suis lancée à la transposition de mes données avec votre code et j'en bave :
1) Dans votre production dans la premiere combobox apparaissent les formations initiales, maintien de capacité et perfectionnement, une 4eme selection regroupant les 3 autres que l'on appellerait "toutes" est-elle concevable ?
2) pouvez-vous m'expliquer en 2 mots où se font les liens entre votre code et les combos ?
3) je suis preneuse de votre module de classe ComboBoxLiés, comme proposé.
Encore merci pour votre patience.
Océanne
 

Dranreb

XLDnaute Barbatruc
Re : Obtenir données uniques dans combobox

1) Oui, ça devrait être concevable et réalisable en sortant un peu du cadre d'utilisation simple. Sinon ce qui entrerait dans son cadre simple à lui c'est le ComboBoxLiés au lieu de ComboBoxCasc. Dans ce cas ne rien y sélectionner reviendrait à "toutes"

2) La méthode Plage permet de spécifier la plage contenant le tableau, commune à tous les ComboBox. La méthode Add permet de spécifier chaque ComboBox impliqué, ainsi la colonne d'où doit être tiré ce qui devra garnir sa liste. Les changements intéressants pour l'userform donnent lieu à des évènements dont les modèles de procédures qui les gèrent peuvent tout à fait s'implanter dans l'userform à l'aide des listes qui surmontent la fenêtre de code, exactement au même titre qu'une ComboBox1_Change par exemple. Regarder la liste de gauche: l'objet CC de type ComboBoxCasc s'y trouve, et dans la liste de droite les procédures qui peuvent être implantées. Espérant avoir répondu… Remarquez, tout est expliqué en tête de chaque méthode dans le module de classe ComboBoxCasc. Sinon si c'est par curiosité que vous souhaitez savoir comment il procède, ma fois je ne vais pas vous noyer d'explications ardues, ça passe par des objets de type ComboBoxMembre (voir ce module de classe).

3) Je verrai dans la journée à vous équiper le classeur de ComboBoxLiés

À +


P.S. Il y a une chose importante que j'ai oubliée de vous dire: il se sert d'un dictionnaire arborescent (voir explications module MDictionnArbo)
Or il possède une méthode DicArbo qui permet de lui en préciser un et j'y avais dit qu'elle pouvait remplacer Actualiser ! Voyons si ça marche …

Eh oui ! Ça a bien l'air de marcher. Ça vous n'auriez pas pu le trouver avant d'avoir compris qu'un dictionnaire arborescent est une imbrication de dictionnaires arborescents. Comme promis j'ai équipé votre classeur de ComboBoxLiés, mais je ne m'en suis pas servi.
 

Fichiers joints

Dernière édition:

Discussions similaires


Haut Bas