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

Recherche multicriteres dans userform VBA

  • Initiateur de la discussion Initiateur de la discussion FGITA
  • Date de début Date de début

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 !

F

FGITA

Guest
Bonjour a tous,
Je suis arrive au bout de mes competances et je demmande donc un peu d'aide.
Malgré de multiples recherches sur le net je n arrive pas a programmer un userform.
Ce que je veux faire:
-effectuer une recherche multicriteres a partir d'un userform accessible depuis la page "acceuil"
-en fonction des criteres selectionnes dans le userform la liste des personels (noms, prenoms, numeros de passport et numeros de telephone) doit également apparaitre dans le bas du userform.

Je pense que c'est possible, mais je suis au niveau zero de la programmation VBA.
Si l'un d'entre vous peut y jeter un oeuil!!!

Par avance merci
 

Pièces jointes

Re : Recherche multicriteres dans userform VBA

Re,

je ne comprends pas bien ton userform par rapport à la structuration de tes données.
Exemple dans ton Frame Airbus :
Tu mets des combobox pour chaque appareil (un combobox permet une sélection dans une liste), on met quoi dans le combobox A330 (par exemple)

Tu as une entête de colonne APRS et on retrouve cette information également dans les cellules (ex : K4)

Run Up : c'est quoi (pas de présence dans le fichier)

a+
 
Re : Recherche multicriteres dans userform VBA

Effectivement je peux comprendre que cela ne soit pas clair,
Donc la colonne SPE avec selection B1 ou B2 dans le userform, sachant que BX peut les deux B1et B2
Ensuite par avion, trois categories APRS, QT ou TS (a mettre dans les combobox pour chaque type avion afin de choisir le "niveau" du technicien)
La collonne APRS est necessaire pour savoir de quel type d APRS (Approbation pour remise en service) est titulaire le technicien
Effectivement un technicien de SPE d'origine B2 peut avoir une APRS de type B1..
(Je reconnais que c'est un sacre sac de noeuds)
Et "run up" correspond a POINT FIXE dans le tableau..

Merci de ton aide

J'ai actualise le fichier
 

Pièces jointes

Re : Recherche multicriteres dans userform VBA

Peux-tu donner un exemple de saisie dans ton userform (si possible un cas assez complexe) et dire ce que tu veux en résultat lorsque l'on valide par ok

A suivre
 
Re : Recherche multicriteres dans userform VBA

Bonjour.
Je pense que vous pourriez tirer grand avantage de OutIdx, soit en mettant son projet VBA en référence dans le vôtre, soit en repompant les modules nécessaires.
 
Re : Recherche multicriteres dans userform VBA

Dans le userform je selectionne un SPE B1
Boeing 747 = vide
Boeing 777 = APRS
Freighter = oui
Les cases Airbus vides
Run up = 777

Et donc dans la listbox apparait le nom de CARAMAL DIDIER SON MATRICULE SON NUMERO DE PASSEPORT SA VALIDITE SES TELEPHONE
 
Re : Recherche multicriteres dans userform VBA

C'est ce que permettrait aisément les modules de classes ComboBoxLiés, ComboBoxMembre et TableIndex ainsi que les modules ordinaires spécialisée MDictionnArbo et Utilit. Aussi, cochez "Microsoft Scripting Runtime" dans la liste Références disponibles, menu Outils, Références…
Ou bien cochez y simplement "OutIdx", s'il y est. Je ne comprends pas bien pourquoi les usagers me semblent avoir tendance à ne pas le retenir en tant que programme complémentaire, ce qui est beaucoup plus simple.
Je vous ferais bien le truc mais faites au moins les CBL.Add ChacunDeVosComboBox, "X", X étant la lettre de la colonne d'où doivent être tirées les valeurs de la liste à y proposer.

Ou bien mettez moi simplement dans l'Userform_Initialize un série d'affectations de la forme Me.ComboBox1 = "A" avec chaque fois la lettre de la colonne, je me débrouillerai avec ça. Et ça vous permettra de vérifier par un coup de F5 qu'il y a la bonne lettre écrite dans chacun. N'oubliez pas le "Me.", c'est importent: ça me permettra de faire des substitutions dessus pour bâtir le code définitif.
 
Dernière édition:
Re : Recherche multicriteres dans userform VBA

Merci bien Dranreb, j essaye d avancer la dessus grâce a vos conseils......des que mes enfants me laissent une minute
 
Re : Recherche multicriteres dans userform VBA

Bonjour dranreb, et aux autres..

J'ai bien essayé ce que tu m'a dit, il doit me manquer un code pour lier ma userform au tableau "DPN"..
Du coup j'ai entré les lignes qui affectent les combobox aux colonnes de la base de donnees , mais en faisant F5 , les combobox sont toujours "vierges"

voici le fichier
 

Pièces jointes

Re : Recherche multicriteres dans userform VBA

Comme ça je le voulais :
VB:
Private Sub UserForm_Initialize()
Me.a320 = "Q"
Me.a330 = "N"
Me.a340 = "O"
Me.a380 = "P"
Me.engsel = "L"
Me.freignter = "J"
Me.F228 = "M"
Me.fievre = "V"
Me.runup = "S"
Me.sel747 = "I"
Me.boe777 = "K"
Me.Specialite = "G"
End Sub
Et, ça se confirme en voyant le truc, je sais très bien pourquoi je vous le demandais !
boe777 est un Frame et on ne peut y affecter "K"
En mettant cette instruction en commentaire ça passe, mais "J" et "L" se retrouvent en dehors de ComboBox, ce sont probablement des Label.
Voudriez vous corriger cela ? Et si vous vouliez bien de mon conseil, mais je pourrai me débrouiller sans cela, renommez tous vos contrôles en y accolant devant chaque mnémonique commençant par une majuscule "Cbx" pour un ComboBox, "Tbx" pour un TextBox, "Btn" pour un bouton.

P.S. en mettant dans l'ordre et en corrigeant J, K L comme suit ça à l'air plus cohérent :
VB:
Private Sub UserForm_Initialize()
Me.Specialite = "G"
Me.sel747 = "I"
Me.erf = "J"
Me.sel777 = "K"
Me.eng = "L"
Me.F228 = "M"
Me.a330 = "N"
Me.a340 = "O"
Me.a380 = "P"
Me.a320 = "Q"
Me.runup = "S"
Me.fievre = "V"
End Sub
Et si vous le souhaitez je pars là dessus. Mais je vous laisse réfléchir à ma proposition de refaire quelque chose de globalement plus cohérent au niveau des noms.

P.S.2 Bon, ben en fin de compte je l'ai fait sur cette base, en quelques minutes.
 

Pièces jointes

Dernière édition:
Re : Recherche multicriteres dans userform VBA

Bon me voila revenu,
Effectivement le résultat est juste ce que je voulais.
Bravo et merci.

Quelques petites choses.... le bouton "recherche tech" de la page d’accueil est devenu inactif, il ne fait plus apparaître le userform.
Et est il possible de restreindre les données affichées dans la listbox (seules les colonnes A,C,D,E,F,T,U,V,W,X,Y suffiraient )ou tout du moins changer la présentation et la mise en page.

Je vous remercie pour le travail fourni.....
 
Re : Recherche multicriteres dans userform VBA

Bonsoir.
Corrigez comme suit :
VB:
Private Sub CL_Résultat(Lignes() As Long)
Dim Te() As Variant, Le As Long, Ts() As String, Ls As Long, C As Long
Te = CL.PlgTablo.Resize(, 25).Value
ReDim Ts(1 To UBound(Lignes), 0 To 10)
For Ls = 1 To UBound(Lignes)
   Le = Lignes(Ls): For C = 0 To 10: Ts(Ls, C) = Te(Le, Array(1, _
      3, 4, 5, 6, 20, 21, 22, 23, 24, 25)(C)): Next C, Ls
Me.ListBox1.List = Ts
End Sub
Dans la fenêtre de propriété, pour la ListBox1, remettez à 11 la propriété ColumnCount et faites des essais de valeurs séparées par des ";" dans la ColumnWidths. Remarque : il ajoute " pt" derrière chacune.

Pour le bouton, il était déjà inactif chez moi. Il faut dire que je n'ai pas votre version d'Excel et je dois utiliser un convertisseur en .xls pour pouvoir lire des .xlsm or celui ci implante systématiquement de façon incomplète les contrôles sur des feuilles Excel. Supprimez et recréez le.
 
Dernière édition:
- 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
Assurez vous de marquer un message comme solution pour une meilleure transparence.

Discussions similaires

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