Filtre automatique à l'ouverture de userform

  • Initiateur de la discussion Initiateur de la discussion Geraldine
  • 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 !

Geraldine

XLDnaute Occasionnel
Bonjour,

Est-il possible de faire un filtre automatique à l'initialize d'une userform et aussi à la selection d'un optionbutton

J'ai un classeur1 comprenant une feuille nommé "ARTICLE", en colonne A je stipule le code famille de l'article soit "SOL" ou "PLAFOND' ou "MUR" etc ...

Dans le classeur2, j'ai plusieurs userform [UserformSOL / UserformPLAFOND / UserformMUR]+ combobox.
A l'ouverture de la UserformSOL, je veux que ma liste d'articles selectionne uniquement les articles de la famille SOL.
A l'ouverture de la UserformPLAFOND, je veux que ma liste d'articles selectionne uniquement les articles de la famille PLAFOND.
etc ...

merci à tous, Géraldine

Option Explicit
Dim WbkC As Workbook, ShtC As Worksheet

Private Sub userform_initialize()
Dim DerLig As Integer, NumPx As Integer, VArt As String
Set WbkC = Workbooks("DEVIS.xls")
Set ShtC = WbkC.Worksheets("ARTICLE")
DerLig = ShtC.Range("A65536").End(xlUp).Row
For NumPx = 4 To DerLig
VArt = ShtC.Range("A" & NumPx).Value
Me.ComboBox1.AddItem VArt
Next NumPx
Me.TextBox1 = ActiveSheet.Range("c11").Value
End Sub

Private Sub ComboBox1_Change()
Dim Lig As Integer
Lig = Me.ComboBox1.ListIndex
Me.TextBox1.Value = ShtC.Range("b" & 3 + Lig + 1).Value
End Sub
 
Re : Filtre automatique à l'ouverture de userform

sol = à une famille d'article
plafond = à une famille d'article

doncpar exemple
a1 ! b1 !c1
sol ! carrelage ! 1.5euros
sol ! moquette ! 1.8 euros
plafond ! bois ! 4.2euros
sol ! carrelega 2 ! 4.20euros

et à l'ouverture de ma userformSOL, je veux que lacombobox selectionne la famille sol

et .Range("a4").AutoFilter 1, sol fonctionne pas mais .Range("a4").AutoFilter 1, "=sol" fonctionne

et donc je met
.Range("a4").AutoFilter 1, "=sol" 'dans la userformsol
.Range("a4").AutoFilter 1, "=plafond" 'dans la userformplafond
.Range("a4").AutoFilter 1, "=mur" 'dans la userformmur
 
Dernière édition:
Re : Filtre automatique à l'ouverture de userform

Salut à tous et aux autres,

Pour avoir "les bons prix", j'ai trié la liste "classifications".
J'ai déclaré "Public", dans un module, les variables communes.
J'ai des procédures identiques pour les 3 cas.

J'ai renommé les fichiers (pour mes archives).

Vois si cela t'inspire
 

Pièces jointes

Dernière édition:
Re : Filtre automatique à l'ouverture de userform

c'est super merci à excel-lent et à pierrot93,

je voudrais juste comprendre pourquoi :

.Range("C" & Lig + 4) 'dans userformsol
.Range("c" & Lig + 9) 'dans userformplafond
.Range("c" & Lig + 13) 'dans userformmur

merci et bonne journée, Géraldine
 
Re : Filtre automatique à l'ouverture de userform

Bien le bonjour à tous et aux autres,

Une image valant, certaines fois, mieux qu'un discours ...

Je pense que ta maîtrise d'Excel (comme celle de bien d'autres) Pierrot93 est supérieure à la mienne. S'il m'arrive d'intervenir c'est plutôt pour proposer des idées auxquelles souvent on ne pense pas, absorbé par notre interprétation du problème.
Je l'ai dit dans un post précédent : Comprendre ce que l'on fait est déjà un grand pas ! Je ne peux que t'encourager à continuer dans cette voie Géraldine.
Je te promets, s'il y a une prochaine fois, d'être encore plus explicite.
 

Pièces jointes

Re : Filtre automatique à l'ouverture de userform

bon et bien merci excel-lent, mais est ce que ça sert a quelque chose ?

Puisque en mélangeant les articles, le filtre fonctionne correctement ... bizarre

Au lieu d'editer un nouveau post, et d'être a nouveau ridicule, j'ai un problème tout bête
dans ce code je veux rajouter une seconde liste, meme feuille et en colonne F à additem en combobox2 .... et je bug

Private Sub UserForm_Initialize()
Dim Plage As Range
Dim Tab1() As String
With Sheets("INFOS")
Set Plage = .Range("H7:H" & .Range("H65536").End(xlUp).Row)
End With
ReDim Tab1(1 To Plage.Count)
For Each Cell In Plage
i = i + 1
Tab1(i) = Cell
Next
ComboBoxCF.List = Tab1
End Sub




Merci encore, Géraldine
 
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

Discussions similaires

Retour