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
Vidéos High-Tech et Jeu Vidéo
Téléchargements
Vos réponses
Gagnez chaque mois un abonnement Premium avec GNT : Inscrivez-vous !
Trier par : date / pertinence
JP
Le #26103302
un fichier exemple du problème.

http://cjoint.com/?DDAwacMvlEf

JP
JP
Le #26103452
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
Publicité
Poster une réponse
Anonyme