Vba excel filtrage avec userform

Résolu/Fermé
Grandjean - 17 oct. 2011 à 18:04
 Grandjean - 18 oct. 2011 à 18:56
Bonjour à tous,

Dans le cadre d'une gestion de projet, je développe une appli vba & excel (excel 2003).

Pour assigner un prestataire fournisseur à un projet, j'ai créé un userform (SelectionFournisseur). Chaque fournisseur a une spécialité, que j'appelle "activité" dans ma base fournisseur (onglet B_Fournisseur).

Lorsque je crée un projet (onglet C_Projet), je sélectionne une activité, puis ouvre le UF pour sélectionner mon fournisseur (par saisie des premières lettres du nom). Je voudrais que, dans la liste des fournisseurs possibles ne s'affichent que les fournisseurs correspondant à l'activité sélectionnée.

Voici le code de mon UF :

Private Sub SelectionFournisseur_Initialize()
Me.ListBox1.List = [Liste_Fournisseurs].Value

End Sub

Private Sub LettresFourn_Change()
Me.ListBox1.Clear
For Each c In [Liste_Fournisseurs]
If UCase(c) Like UCase(Me.LettresFourn) & "*" Then Me.ListBox1.AddItem c
Next c
End Sub

Private Sub ListBox1_Click()

ActiveCell = Me.ListBox1
Unload Me
End Sub

Si quelqu'un pouvait m'aider, ce serait sympa.
Je tiens le fichier exemple à disposition si nécessaire.
Merci par avance pour votre aide

Jean

4 réponses

michel_m
Messages postés
16569
Date d'inscription
lundi 12 septembre 2005
Statut
Contributeur
Dernière intervention
23 mai 2022
3 280
17 oct. 2011 à 18:14
Bonjour

je tiens le fichier exemple à disposition si nécessaire.

pour joindre une pièce
mettre le classeur sans données confidentielles en pièce jointe (format XL97-2003) sur
https://www.cjoint.com/
et faire un clic droit sur le lien proposé puis "copier l'adresse du lien" et coller dans le message de réponse
0
Bonjour Michel,

Merci de ta réponse.

Voici le lien

http://cjoint.com/?0JrtAQC5woW

J'espère que mes explications sont suffisamment claires.

Jean
0
michel_m
Messages postés
16569
Date d'inscription
lundi 12 septembre 2005
Statut
Contributeur
Dernière intervention
23 mai 2022
3 280
18 oct. 2011 à 13:50
Bonjour,

très difficile de s'y retrouver dans le classeur et les macros....

comment sélectionnes tu une activité (quelle feuille, quelle macro?)
sur quelle feuille doit se faire la sélection des fournisseurs en fonction du choix de l'activité b_fournisseur ?)

actuellement un changement de fournisseur lance l'usf (feuille C_projet) et je n'ai vu aucun lien avec l'activité dans cette feuille...

donc
0
Bonjour Michel,

Désolé si ce n'est pas très clair. Ce sont des fichiers de travail sur lesquels j'apprends VB et construit mon projet. J'ai pourtant essayé de faire le ménage. Bref,

J'affecte une activité au fournisseur dans la base fournisseur (onglet B_Fournisseur).

Quand je crée mon projet (onglet C_Projet), je sélectionne une activité (D 16), puis vais sur la cellule fournisseur (D 18), qui déclenche le UF, comme tu l'as remarqué. Je voudrais que l'activité sélectionnée en D16 serve de filtre à UF pour n'afficher que les fournisseurs correspondant à cette activité tel que paramétré dans B_Fournisseur.

Comme je récupère ensuite cette donnée D16, je préfère l'avoir là plutôt que dans l'UF.

Voilà, j'espère être plus précis ainsi. Merci de ton aide et de ta patience.
Jean
0
michel_m
Messages postés
16569
Date d'inscription
lundi 12 septembre 2005
Statut
Contributeur
Dernière intervention
23 mai 2022
3 280
18 oct. 2011 à 14:55
Oui, mais

tu sélectionnes une activité en D16 par ex impression"


donc, ton userform indique les "imprimeurs" possibles et ton choix soit répercuté dans D18
le déclenchement serait alors en D16 et non D18
c'est ça ?
0
oui pour tes 2 premières affirmations.
Ensuite : déclenchement en D16 ? pas sûr de bien comprendre.
Pour moi, D16 est le filtre, qui va donc déclencher une sélection de nom de fournisseurs.
Si c'est cela que tu as compris, c'est tout bon.
0
michel_m
Messages postés
16569
Date d'inscription
lundi 12 septembre 2005
Statut
Contributeur
Dernière intervention
23 mai 2022
3 280
18 oct. 2011 à 15:18
Ok, sois patient, je repasse tout à l'heure! :o)
0
michel_m
Messages postés
16569
Date d'inscription
lundi 12 septembre 2005
Statut
Contributeur
Dernière intervention
23 mai 2022
3 280
18 oct. 2011 à 17:03
https://www.cjoint.com/?3Jsq3XmUtoJ

modifs: macro dans feuille c_projets dont notamment worksheet_change au lieu de worksheet_selectionchange; prise en compte de l'activité et de l'adresse de retour

ajout d'un module "spécialistes"
variables publiques T_pro( variable tablo), adresse (cellule donnant le fournisseur sélectionné
macro sélectionner construit une variable tableau avec les fournisseurs de l'activité

modifs dans le code userform
utilisation de T_pro et de adresse
ajouté control_tiptext

tu dis...
0
Super Michel,
Cela fonctionne parfaitement.
Je vais maintenant essayer de comprendre ce que tu as fait pour pouvoir le reproduire.

Une question en amenant une autre... Je développe sous PC, et l'utilisateur est sous MAC. On vient de s'apercevoir que les UF ne fonctionne pas sous MAC tel quel... Par hasard, aurais-tu une idée. Je viens de passer deux heures sur le net pour essayer de trouver une solution. Sans succès.

Je te souhaite une bonne soirée,
Jean
0