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
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
' 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
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
' 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
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
' 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