Case à cocher avec sélection multiple pour masquer colonnes

Bonjour,

J'ai un tableau avec plein de colonnes classer par des sous-titre (OPC_généralité / OPC_sous_traitance / OPC_co_traitance).

J'aimerai avec un userform et des cases à cocher, sélectionner les sous-titres que je souhaite faire apparaitre (donc masquer les inutiles).

pour le moment je stagne car j'arrive pas a réaliser des multi critères.

Quelqu'un peux m'aider?

Merci

Option Explicit

Private Sub CommandButton1_Click()
Application.ScreenUpdating = False

If CheckBox1 Then opc_generalite
DoEvents
If CheckBox2 Then opc_sous_traitance
DoEvents
If CheckBox3 Then opc_co_traitance
DoEvents

Unload selection_vue
Application.Visible = True
End Sub

Sub opc_generalite()
    Range("AC4:CF4").ClearContents
    Range("AC4:AI4").Value = 1
        Dim rng As Range
    For Each rng In [AC12:CF12]
        If rng.Value = 1 Then rng.EntireColumn.Hidden = Not rng.EntireColumn.Hidden
    Next rng
End Sub

Sub opc_sous_traitance()
    Range("AC5:CF5").ClearContents
    Range("AJ5:AP5").Value = 1
        Dim rng As Range
    For Each rng In [AC12:CF12]
        If rng.Value = 1 Then rng.EntireColumn.Hidden = Not rng.EntireColumn.Hidden
    Next rng
End Sub

Sub opc_co_traitance()
    Range("AC6:CF6").ClearContents
    Range("AQ6:AW6").Value = 1
        Dim rng As Range
    For Each rng In [AC12:CF12]
        If rng.Value = 1 Then rng.EntireColumn.Hidden = Not rng.EntireColumn.Hidden
    Next rng

End Sub

Bonjour David

A+

Bonjour David,

Voici une possibilité en direct live de l'USF

A+

Bonjour Bruno,

Merci beaucoup tout fonctionne comme je le souhaite seulement, je ne comprend pas comment je fait pour rajouter d'autre case a cocher avec d'autre colonne.

j'en est environ le double que je doit intégré.

Ou défini-tu les bonne colonnes a masquer?

Merci pour ton retour

David,

Il faut sélectionner la plage de colonnes souhaitée -> Formules -> Définir un nom
et lui donner un nom Explicite comme je l'ai fait

image

Ensuite dans le code, il suffit d'ajouter ce nom à la constante définit tout en haut

' Mettre ici la liste des plages définies dans les noms
Const PlgDef As String = "OPC_Généralité,OPC_SousTraitance,OPC_CoTraitance,OPC_RétroCommission"

A l'initialisation du formulaire un tableau des plages est créé

Private Sub UserForm_Initialize()
  Dim Ind As Integer
  ' Définir le tableau des plages qui commence à l'indice 0
  TabPlg = Split(PlgDef, ",")
  ' Pour chaque plage définie
  For Ind = 0 To UBound(TabPlg)
    Me.Controls("CheckBox" & Ind + 1).Value = (Range(TabPlg(Ind)).EntireColumn.Hidden = False)
  Next Ind
End Sub

Ce qui fait qu'on affiche ou masque la plage selon clic

Private Sub CheckBox1_Click()
  If Me.CheckBox1.Value = True Then
    Range(TabPlg(0)).EntireColumn.Hidden = False
  Else
    Range(TabPlg(0)).EntireColumn.Hidden = True
  End If
End Sub

Par contre pour les CheckBox il faudra créer autant de "Private Sub" ou utiliser un module de classe

J'espère que ce sera plus clair

A+

Bonjour,

Désolé pour ma réponse tardive, ça marche nickel merci beaucoup!!!

Rechercher des sujets similaires à "case cocher selection multiple masquer colonnes"