cases cochées dans userform = masquage colonne

  • Initiateur de la discussion Initiateur de la discussion Phil39
  • Date de début Date de début

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

Phil39

XLDnaute Occasionnel
Bonjour,

Je souhaites faire un petit "panneau de contrôle" dans un userform me permettant de masquer/demasquer des colonnes via des checkboxs

Chaque checkbox (17 en tout) correspond à une colonne :
Quand c'est coché, la colonne n'est pas masquée
quand c'est décoché, la colonne se masque automatiquement

Comme je suppose qu'il n'est pas facile de faire le mascage/démascage "en direct" sur une simple coche, l'idéal serait d'avoir un bouton OK permettant de voir le masquage/démasquage s'effectuer tout en laissant le userform à l'écran (Userform.show 0) et un bouton OK pour fermer le userform.

J'ai fouiné mais je n'ai pas trouvé.

Merci d'avance de votre aide
 
Re : cases cochées dans userform = masquage colonne

Bonjour Phil, Gerard

regarde ce code, s'applique à la colonne A, à utiliser dans le module de l'usf :

Code:
Private Sub CheckBox1_Click()
Columns(1).Hidden = Not CheckBox1
End Sub

bonne journée
@+
 
Re : cases cochées dans userform = masquage colonne

C'est encore moi !

pour parfaire la solution de Pierrot 93, il est nécessaire de déclarer les value de chaque CheckBox en True dans les propriétés sinon on se retrouve avec des cases à cocher n'ayant pas d'action lors de la première manipulation.

Question subsidiaire :

l'idée générale est de réduire/augmenter le nombre de colonnes sur la feuil1 pour un confort de lecture tout en laissant la possibilité de consulter sur demande des colonnes dites "optionelles".

Avec la méthode actuelle, mes colonnes sont masquées si la checkbox est décochée. C'est bon.
Mais dès que j'ajoute des lignes à ma feuil1 via un formulaire, la validation de l'ajout fait "sauter" les selections en me reaffichant systématiquement toutes les colonnes.

Existe-t-il donc un moyen de "figer" les choix effectués dans les checkbox pour toute action sur la feuil1 ?
 
Re : cases cochées dans userform = masquage colonne

Re

pas de problème chez moi (excel 2003), lors de l'ajout de lignes via un USF, les colonnes masquées le reste.... sous réserve peut être, que tu n'ais pas de cellules fusionnées...

bon après midi
@+
 
Re : cases cochées dans userform = masquage colonne

Re

pas de problème chez moi (excel 2003), lors de l'ajout de lignes via un USF, les colonnes masquées le reste.... sous réserve peut être, que tu n'ais pas de cellules fusionnées...

bon après midi
@+

Re,

non, pas de fusion...

En revanche, au moment de la validation dans mon userform, j'ai un ajustement des lignes. Cela vient peut être de là ?

' Ajustement des colonnes en fonction des données
ActiveSheet.Columns.AutoFit
ActiveSheet.Rows.AutoFit

' Centrage des textes dans les cellules
ActiveSheet.Select
With Selection
.HorizontalAlignment = xlCenter
.VerticalAlignment = xlBottom
.WrapText = False
.Orientation = 0
.AddIndent = False
.IndentLevel = 0
.ShrinkToFit = False
.ReadingOrder = xlContext
.MergeCells = False
End With
With Selection
.HorizontalAlignment = xlCenter
.VerticalAlignment = xlCenter
.WrapText = False
.Orientation = 0
.AddIndent = False
.IndentLevel = 0
.ShrinkToFit = False
.ReadingOrder = xlContext
.MergeCells = False
End With
 
Re : cases cochées dans userform = masquage colonne

Re

oui, regarde le code ci-dessous, à adapter à ton fichier :

Code:
Option Explicit
Sub test()
Dim plage As Range, x() As Boolean, i As Byte
Application.ScreenUpdating = False
Set plage = Range("B2:K12").Columns
ReDim x(1 To plage.Count)
For i = 1 To plage.Count
    x(i) = plage.Columns(i).Hidden
Next i
Cells.Columns.AutoFit
For i = 1 To plage.Count
    plage.Columns(i).Hidden = x(i)
Next i
Application.ScreenUpdating = True
End Sub

@+
 
Re : cases cochées dans userform = masquage colonne

Re

oui, regarde le code ci-dessous, à adapter à ton fichier :

Code:
Option Explicit
Sub test()
Dim plage As Range, x() As Boolean, i As Byte
Application.ScreenUpdating = False
Set plage = Range("B2:K12").Columns
ReDim x(1 To plage.Count)
For i = 1 To plage.Count
    x(i) = plage.Columns(i).Hidden
Next i
Cells.Columns.AutoFit
For i = 1 To plage.Count
    plage.Columns(i).Hidden = x(i)
Next i
Application.ScreenUpdating = True
End Sub

@+

la question du jour du Boulet :
Ce code remplace le mien après adaptation ?
 
Re : cases cochées dans userform = masquage colonne

Bonjour,

après adaptation oui, en l'occurence adapter la plage concernée, tu l'insères à la place de
Code:
ActiveSheet.Columns.AutoFit
, sachant que celle ligne est dans le code donné... Par contre il y aura peut être lieu d'y ajouter également l'ajustage des lignes :
Code:
ActiveSheet.Rows.AutoFit

bonne journée
@+
 
Re : cases cochées dans userform = masquage colonne

Bonjour,

après adaptation oui, en l'occurence adapter la plage concernée, tu l'insères à la place de
Code:
ActiveSheet.Columns.AutoFit
, sachant que celle ligne est dans le code donné... Par contre il y aura peut être lieu d'y ajouter également l'ajustage des lignes :
Code:
ActiveSheet.Rows.AutoFit

bonne journée
@+

Un grand merci qui commence à devenir une habitude !
 
- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD
Retour