Filtrer selon des checbox cochés
Le
JP

Bonjour,
En ligne des compétences en colonnes des noms.
Je voudrais filtrer les noms ayant toutes les compétences cochées (chec=
kbox).
Voici ce que j'ai fait, mais seule le dernier checkbox coché est pris en =
considération dans le filtrage.
Private Sub Filtre_Click()
Application.EnableEvents = False
Application.ScreenUpdating = False
Range("F3:F1000").Select
Selection.AutoFilter
For i = 1 To Nb_Comp
If Controls("checkbox" & i) = True Then
ActiveSheet.Range("$F$3:$F$1000").AutoFilter Field:=1, Criter=
ia1:=Me.Controls("CheckBox" & i).Caption
End If
Next i
' masque les colonnes où il n'y a pas les compétences
For masque = 10 To 190
If Cells(1, masque).Value = 0 Then
Columns(masque).Select
Selection.EntireColumn.Hidden = True
End If
Next masque
Unload Me
Application.EnableEvents = True
Application.ScreenUpdating = True
End Sub
Comment puis faire ?
Merci
JP
En ligne des compétences en colonnes des noms.
Je voudrais filtrer les noms ayant toutes les compétences cochées (chec=
kbox).
Voici ce que j'ai fait, mais seule le dernier checkbox coché est pris en =
considération dans le filtrage.
Private Sub Filtre_Click()
Application.EnableEvents = False
Application.ScreenUpdating = False
Range("F3:F1000").Select
Selection.AutoFilter
For i = 1 To Nb_Comp
If Controls("checkbox" & i) = True Then
ActiveSheet.Range("$F$3:$F$1000").AutoFilter Field:=1, Criter=
ia1:=Me.Controls("CheckBox" & i).Caption
End If
Next i
' masque les colonnes où il n'y a pas les compétences
For masque = 10 To 190
If Cells(1, masque).Value = 0 Then
Columns(masque).Select
Selection.EntireColumn.Hidden = True
End If
Next masque
Unload Me
Application.EnableEvents = True
Application.ScreenUpdating = True
End Sub
Comment puis faire ?
Merci
JP
http://cjoint.com/?DDAwacMvlEf
JP
J'avais bien essayé en mettant dans un tableau dynamique les compétence s cochées mais mon erreur était de faire une boucle avec indice pour le filtrage.
Voici la solution pour ceux qui pourraient être intéressés.
JP
Private Sub Filtre_Click()
Dim coche()
Application.EnableEvents = False
Application.ScreenUpdating = False
Range("F3:F1000").Select
Selection.AutoFilter
n = 0
'compte le nb de checkbox cochés
For i = 1 To Nb_Comp
If Controls("checkbox" & i) = True Then
n = n + 1
End If
Next i
ReDim coche(n)
k = 0
' complète le tableau
For i = 1 To Nb_Comp
If Controls("checkbox" & i) = True Then
coche(k) = Me.Controls("checkbox" & i).Caption
k = k + 1
End If
Next i
ActiveSheet.Range("$F$3:$F$1000").AutoFilter Field:=1, Criteria1: =coche, Operator:=xlFilterValues
' masque les colonnes où il n'y a pas les compétences
For masque = 10 To 190
If Cells(1, masque).Value = 0 Then
Columns(masque).Select
Selection.EntireColumn.Hidden = True
End If
Next masque
Unload Me
Application.EnableEvents = True
Application.ScreenUpdating = True
End Sub