Vba excel filtrage avec userform
Résolu
Grandjean
-
Grandjean -
Grandjean -
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
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
A voir également:
- Vba excel filtrage avec userform
- Liste déroulante excel - Guide
- Word et excel gratuit - Guide
- Déplacer colonne excel - Guide
- Si ou excel - Guide
- Excel compter cellule couleur sans vba - Guide
4 réponses
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
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
Bonjour Michel,
Merci de ta réponse.
Voici le lien
http://cjoint.com/?0JrtAQC5woW
J'espère que mes explications sont suffisamment claires.
Jean
Merci de ta réponse.
Voici le lien
http://cjoint.com/?0JrtAQC5woW
J'espère que mes explications sont suffisamment claires.
Jean
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
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
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
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
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 ?
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 ?
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...
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...
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
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