XL 2016 Ajout auto de checkbox dans formulaire après événement Combobox_Change

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

MyloX

XLDnaute Nouveau
Bonjour à tous,


Je me permet de solliciter votre aide pour la réalisation d'un Userform dynamique.

L'idée de générale de ce que j'aimerais faire, c'est :
  1. On sélectionne les informations du produit ;
  2. On choisit le secteur de formation sur lequel on veut travailler dans la ComboBox 4 ;
  3. On recherche la ComboBox4.Value dans la colonne B de l'onglet Feuil2 ;
  4. Si la cellule en colonne B (=cells(i,2)) a la même valeur comprise en ComboBox4, alors on ajoute une CheckBox avec comme intitulé Cells(i,1).Value dans la frame "Formations associées" ;
  5. Si la CheckBox créée est cochée, ça renvoie "X" à l'intersection entre la ligne du produit sélectionné et la formation du secteur correspondant à l'intitulé de la CheckBox.
Je vous laisse un exemple en pièce jointe.
J'espère avoir été assez clair et dans le cas contraire, n'hésitez pas à me le faire savoir.

Merci pour votre aide.


Cordialement,
MyloX
 

Pièces jointes

Solution
Bonjour à tous,
Grillé sur le poteau .... 😉
Les données de l'onglet PROD ont été converties en table structurée de nom Prod.
Comme l'USF reprend pour la plupart de ses comboboxs les champs de la table,
une autre voie serait de lancer l'Usf directement sur une des lignes de celle-ci .
à suivre ...
Dans la sub d'enregistrement :
commenter le code encadré
VB:
Private Sub Cmd_Enregistrer_Click()
Application.ScreenUpdating = False

    With [Prod].ListObject
        .Range.AutoFilter Field:=.ListColumns("famille produit").Index, Criteria1:=ComboBox1
        .Range.AutoFilter Field:=.ListColumns("code article").Index, Criteria1:=ComboBox2
        .Range.AutoFilter Field:=.ListColumns("designation").Index, Criteria1:=ComboBox3
    End With

'+-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-+
'|   [Prod[[Form 1]:[Form 3]]].SpecialCells(xlCellTypeVisible) = ""  |
'+-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-+
  
    For I = 0 To Me.Lbx_Form.ListCount - 1
        [Prod].ListObject.ListColumns(Lbx_Form.List(I)).DataBodyRange.SpecialCells(xlCellTypeVisible) = _
            IIf(Me.Lbx_Form.Selected(I), "X", vbNullString)
    Next I
    [Prod[ADT]].SpecialCells(xlCellTypeVisible) = IIf(CheckBox1, "X", vbNullString)

    [Prod].ListObject.Range.AutoFilter
    [Prod].ListObject.Range.AutoFilter

Application.ScreenUpdating = True
End Sub
 
Dans la sub d'enregistrement :
commenter le code encadré
VB:
Private Sub Cmd_Enregistrer_Click()
Application.ScreenUpdating = False

    With [Prod].ListObject
        .Range.AutoFilter Field:=.ListColumns("famille produit").Index, Criteria1:=ComboBox1
        .Range.AutoFilter Field:=.ListColumns("code article").Index, Criteria1:=ComboBox2
        .Range.AutoFilter Field:=.ListColumns("designation").Index, Criteria1:=ComboBox3
    End With

'+-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-+
'|   [Prod[[Form 1]:[Form 3]]].SpecialCells(xlCellTypeVisible) = ""  |
'+-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-+
 
    For I = 0 To Me.Lbx_Form.ListCount - 1
        [Prod].ListObject.ListColumns(Lbx_Form.List(I)).DataBodyRange.SpecialCells(xlCellTypeVisible) = _
            IIf(Me.Lbx_Form.Selected(I), "X", vbNullString)
    Next I
    [Prod[ADT]].SpecialCells(xlCellTypeVisible) = IIf(CheckBox1, "X", vbNullString)

    [Prod].ListObject.Range.AutoFilter
    [Prod].ListObject.Range.AutoFilter

Application.ScreenUpdating = True
End Sub

Super merci beaucoup @fanch55 ! C'est parfait.
 
- 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