Filtre sans doublons dans un TextList d'une userform

julien4d

XLDnaute Nouveau
Bonjour à tous !

Je suis face à un dilemme.

J’essaye d’effectuer des filtres sur Excel, ni à la main, ni en macro enregistrée, mais en userform !
J’aimerais que dans une TextList, quand on clique sur un « Bâtiment », on puisse voir les machines qui sont à l’intérieur (sans doublons). Puis quand on clique sur une « machine » on voit un texte et une image que j’associe...etc

J’ai tout entré dans un tableau Excel, je suis donc face à deux possibilités :

- Soit je code tout à la main « If (bâtiment sélectionné) THEN voir si il n’ait pas répété, ECRIRE le nom de machine ICI et pas de doublons etc…
J’ai peur de ça devienne une usine à gaz, de plus il me reste deux semaines de stage, j’ai peur de ne pas assurer…J’aime bien le VBA mais je trouve ça un peu capricieux…Il ne dit pas où se trouve l’erreur comme en java, je ne le sens pas…

- Soit j’utilise les filtres élaborés d’Excel…mais j’attends vos conseils avant de me lancer…car je ne les maitrise pas et j’ai peur d’être limité, je me dis quand même qu’ils ne sont pas là pour rien…
La seule chose que je sais :

“Worksheets("Exploitation").Range("$A$1:$DJ$500000").AutoFilter Field:=1, Criteria1:=tableau, Operator:=xlFilterValues”

Sachant que je n’arrive pas à le faire marcher avec un critère lu dans une scrollbar ou autre (juste si je code <123, là ca marche, mais ce n’est pas dynamique!)



En fait, j’ai fait l’inventaire des machines de mon entreprise, ainsi que les altitudes de leurcs composants (des pompes, des groupes hydrauliques, etc…), l’idée est de savoir ce qui est concerné par une inondation. J’aimerais que mon appli soit ergonomique pour voir ce qui est concerné ou non. (Plus de 500 équipements !)
Je joins mon fichier, ça sera plus parlant, pour des raisons de confidentialité évidentes, j’ai mis quelques fausses valeurs et noms, mais ça ne change pas la logique).


Voilà, en gros, comment en cliquant sur « Bâtiment B54 », je peux récupérer les postes de travail 1 2 3 4 dans lesquels se trouvent les installations ab c d …etc et que tout ça soit en dessous de xxx mNGF d’altitude…
Seules les colonnes B, D et G importent donc ici


Je pense qu’une maitrise des méthodes des filtres élaborés va simplifier la vie à plus d’un internautes, moi je n’ai rien trouvé là-dessus.

Merci d’avance et beaucoup de votre aide !


PS : Aller voir dans Private Sub ScrollBar_NiveauCrue_Change()
 

Pièces jointes

  • TriUserformtestList.xlsm
    223.3 KB · Affichages: 53

Dranreb

XLDnaute Barbatruc
Re : Filtre sans doublons dans un TextList d'une userform

Bonsoir.

En mettant des ComboBox à la place des ListBox vous pourriez utiliser mon module de classe ComboBoxLiées (cherchez ce mot).
Il y aurait moyen de limiter les choix proposés selon la valeur d'une ScrollBar grâce à sa méthode FiltrerLignes.
Le code pourrait être celui ci :
VB:
Private Sub ScrollBar_NiveauCrue_Change()
'Mise à jour du réglage d'altitude dans la textbox (string)
Dim NiveauCrue As Double, TNiv(), Le&, Ls&, TLgn() As Long
NiveauCrue = ScrollBar_NiveauCrue.Value / 100
TextBox_NiveauCrue.Text = NiveauCrue
TNiv = CL.PlgTablo.Columns(1).Value
ReDim TLgn(1 To UBound(TNiv))
For Le = 1 To UBound(TNiv)
   If TNiv(Le, 1) <= NiveauCrue Then Ls = Ls + 1: TLgn(Ls) = Le
   Next Le
ReDim Preserve TLgn(1 To Ls)
CL.FiltrerLignes TLgn
End Sub
CL étant supposé avoir été déclaré WithEvents As ComboBoxLiées en tête de l'UserForm.
 
Dernière édition:

julien4d

XLDnaute Nouveau
Re : Filtre sans doublons dans un TextList d'une userform

Bonjour, merci beaucoup pour la réponse!

Impossible ne textList alors ? :(

Je n'ai pas bien compris, le module de classe je le trouve où ? et concretement: "CL étant supposé avoir été déclaré WithEvents As ComboBoxLiées en tête de l'UserForm." cela signifie ?
Désolé je ne manipule pas pas encore tout avec aisance je ne sais faire que les choses basiques,

merci !
 

Dranreb

XLDnaute Barbatruc
Re : Filtre sans doublons dans un TextList d'une userform

Vous trouverez les modules de service nécessaires au dispositif dans un de mes nombreux classeurs joints nommés de la forme CBxLiéesDemandeur.xls dans les discussions dont vous trouverez la liste en tapant ComboBoxLiées dans le champs de recherche tout en haut à droite de cette page Web.
Je pourrais aussi en équiper votre classeur re-joint au format xls, à défaut xlsm mais alors sans CommandButton dans les feuilles Excel. Le convertisseur en xls que je suis obligé d'utiliser pour ma version d'Excel les supporte très mal et fabrique un fichier inutilisable. Les remplacer alors par des boutons de formulaire.

Remarque: le VBA vous paraîtra sans doute un peu moins capricieux si vous débutez vos modules par Option Explicit.
En effet il ne tentera plus d'exécution tant que la compilation ne sera pas partout nickel.
 
Dernière édition:

Discussions similaires

Statistiques des forums

Discussions
312 211
Messages
2 086 299
Membres
103 172
dernier inscrit
Aurelyan