Je souhaite trouver un Code VBA permettant de Masquer des colonnes si elles ne contiennent pas des mots au choix en utilisant les cases à cocher .
Serait-il possible de m'aider svp ?
je peux cocher plusieurs case à la fois
Case à cocher A
Case à cocher B
Case à cocher C
Par exemple si je coche A ; dans le tableau ne s affiche que les colonnes qui contiennent le mot A , si je coche A et B dans le tableau ne s'affiche que les colonnes qui contiennent A et B...
Notez que j'ai retiré les cases à cocher pour les remplacer par des cases ou cellules Excel beaucoup plus faciles à gérer.
Les codes se situent :
dans le module associé à la feuille nommée "Feuil5"
dans le module associé à ThisWorkbook
Module de Feuil5:
Remarquez l'emploi du mot clef Public à la place de ce que propose par défaut VBA qui est Private
VB:
Public Sub Worksheet_SelectionChange(ByVal Target As Range)
Dim x
If Target.Count = 1 Then
If Target.Column = 3 Then
If Target.Row >= 7 And Target.Row <= 11 Then
Application.ScreenUpdating = False
If Target = "" Then Target = "x" Else Target = ""
For Each x In Range("e7:s7")
If x.Value = Target.Offset(, -1) Then x.EntireColumn.Hidden = Target <> "x"
Next x
Target.Offset(, -1).Select
End If
End If
End If
End Sub
Module de ThisWorkbook:
VB:
Private Sub Workbook_Open()
Dim x
Application.ScreenUpdating = False
Sheets("Feuil5").Select
For Each x In Range("c7:c11"): Worksheets("Feuil5").Worksheet_SelectionChange x: Next x
End Sub
Notez que j'ai retiré les cases à cocher pour les remplacer par des cases ou cellules Excel beaucoup plus faciles à gérer.
Les codes se situent :
dans le module associé à la feuille nommée "Feuil5"
dans le module associé à ThisWorkbook
Module de Feuil5:
Remarquez l'emploi du mot clef Public à la place de ce que propose par défaut VBA qui est Private
VB:
Public Sub Worksheet_SelectionChange(ByVal Target As Range)
Dim x
If Target.Count = 1 Then
If Target.Column = 3 Then
If Target.Row >= 7 And Target.Row <= 11 Then
Application.ScreenUpdating = False
If Target = "" Then Target = "x" Else Target = ""
For Each x In Range("e7:s7")
If x.Value = Target.Offset(, -1) Then x.EntireColumn.Hidden = Target <> "x"
Next x
Target.Offset(, -1).Select
End If
End If
End If
End Sub
Module de ThisWorkbook:
VB:
Private Sub Workbook_Open()
Dim x
Application.ScreenUpdating = False
Sheets("Feuil5").Select
For Each x In Range("c7:c11"): Worksheets("Feuil5").Worksheet_SelectionChange x: Next x
End Sub