Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

Filtrer selon des checbox cochés

2 réponses
Avatar
JP
Bonjour,

En ligne des comp=E9tences en colonnes des noms.
Je voudrais filtrer les noms ayant toutes les comp=E9tences coch=E9es (chec=
kbox).
Voici ce que j'ai fait, mais seule le dernier checkbox coch=E9 est pris en =
consid=E9ration dans le filtrage.

Private Sub Filtre_Click()
Application.EnableEvents =3D False
Application.ScreenUpdating =3D False
Range("F3:F1000").Select
Selection.AutoFilter
=20
For i =3D 1 To Nb_Comp
If Controls("checkbox" & i) =3D True Then
ActiveSheet.Range("$F$3:$F$1000").AutoFilter Field:=3D1, Criter=
ia1:=3DMe.Controls("CheckBox" & i).Caption
End If
Next i
=20
' masque les colonnes o=F9 il n'y a pas les comp=E9tences
For masque =3D 10 To 190
If Cells(1, masque).Value =3D 0 Then
Columns(masque).Select
Selection.EntireColumn.Hidden =3D True
End If
Next masque

Unload Me

Application.EnableEvents =3D True
Application.ScreenUpdating =3D True

End Sub


Comment puis faire ?

Merci

JP

2 réponses

Avatar
JP
un fichier exemple du problème.

http://cjoint.com/?DDAwacMvlEf

JP
Avatar
JP
Je viens de trouver la solution à mon problème.
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