Afficher / Masquer colonnes avec actionnement d'un seul bouton

nauj

XLDnaute Junior
Bonjour Forum,
J'ai récupéré un code vba qui permet de masquer les colonnes et un autre qui permet de les réafficher. En revanche, ces deux codes sont associés à deux boutons distincts.
Je souhaiterais pouvoir "fusionner" ces deux codes vba en un seul et pouvoir l'associer à un bouton qui en l'actionnant, ça "masque ou affiche" à chaque clic.
Je vous remercie par avance de votre aide sur ce problème.
Cdt

Voici les codes :
Sub MasquerColonne()
Application.ScreenUpdating = False
Dim i As Long
For i = 16 To 6 Step -1
If Cells(4, i) = 0 Then
Columns(i).EntireColumn.Hidden = True
End If
Next
Application.ScreenUpdating = True
End Sub

Sub AfficherColonne()
Application.ScreenUpdating = False
Dim i As Long
For i = 6 To 16 Step 1
If Cells(4, i) = 0 Then
Columns(i).EntireColumn.Hidden = False
End If
Next
Application.ScreenUpdating = True
End Sub
 

Pierrot93

XLDnaute Barbatruc
Re : Afficher / Masquer colonnes avec actionnement d'un seul bouton

Re,

remarque, tu peux peut être tout simplement le coder ainsi, à voir... :
Code:
Application.ScreenUpdating = False
Dim i As Long
For i = 6 To 16
    Columns(i).Hidden = Cells(4, i) = 0
Next
Application.ScreenUpdating = True
 

nauj

XLDnaute Junior
Re : Afficher / Masquer colonnes avec actionnement d'un seul bouton

Bonjour Pierrot93, Forum,
Je viens de tester ta proposition de code, effectivement, ça masque les colonnes en revanche ça ne les affiche pas lorsqu'on (re)clique sur le bouton.
Je vais jeter un coup d'oeil sur le fil que tu m'as proposé. La particularité de mon code est que les colonnes à masquer sont variables d'un fichier à un autre et que celui-ci sera diffusé à plusieurs dizaines de personnes.
Cdt
 

Pierrot93

XLDnaute Barbatruc
Re : Afficher / Masquer colonnes avec actionnement d'un seul bouton

Re,

remarque c'est normal puisque la valeur de la cellule n'a pas changée.... "Cells(4, i) = 0)"....

sinon le faire ainsi :
Code:
Application.ScreenUpdating = False
Dim i As Long
For i = 6 To 16
    Columns(i).Hidden = Not Columns(i).Hidden 
Next
Application.ScreenUpdating = True
 

nauj

XLDnaute Junior
Re : Afficher / Masquer colonnes avec actionnement d'un seul bouton

Pierrot93, Forum,
Ça ne fonctionne pas comme je le souhaite.
Pour être plus explicite, c'est un tableau générique composé de 10 colonnes qui sert à consolider des informations récupérées sur d'autres fichiers. Ces informations récupérées sont variables, elles peuvent être au nombre de 2 jusqu'à 10 selon le service concerné.
Pour ne pas laisser des colonnes vides lorsque le travail de récupération a été effectué, j'ai mis ce petit code qui permet de les masquer lorsque la ligne ("F4:p4") est égal à 0.
Je peux parfaitement laisser deux boutons, ça fonctionne bien mais pour une question d’esthétisme, le bouton unique serait un plus :)
Cdt
 

Robert

XLDnaute Barbatruc
Repose en paix
Re : Afficher / Masquer colonnes avec actionnement d'un seul bouton

Bonjour Nauj, Pierrot, bonjour le forum,

Peut être comme ça avec le code ci-dessous appliqué au bouton :
Code:
Private Sub CommandButton1_Click()
ActiveCell.Select 'enlève le focus au bouton
If Me.CommandButton1.Caption = "Afficher" Then 'condition si le texte du bouton est : "Afficher"
Me.CommandButton1.Caption = "Masquer" 'le texte devient "Masquer"
Me.CommandButton1.Accelerator = "M" 'le raccourci clavier devient "M"
Range("F1:P1").EntireColumn.Hidden = False 'les colonnes F à P sont affichées
Exit Sub 'sort de la procédure
End If 'fin de la condition
For x = 6 To 16 'boucle sur les colonnes 6 à 16 (F à P)
If Cells(4, x) = 0 Then 'condition : si la cellule de la ligne 4 vaut 0
Columns(x).Hidden = True 'masque la colonne
Me.CommandButton1.Caption = "Afficher" 'le texte du bouton devient "Affichier"
Me.CommandButton1.Accelerator = "A" 'le raccourci clavier du bouton devient "A"
End If 'fin de la condition
Next x 'prochaine colonne de la boucle
End Sub
 

Pièces jointes

  • nauj_v01.xls
    31 KB · Affichages: 84
  • nauj_v01.xls
    31 KB · Affichages: 95
  • nauj_v01.xls
    31 KB · Affichages: 91

nauj

XLDnaute Junior
Re : Afficher / Masquer colonnes avec actionnement d'un seul bouton

Bonjour Robert, Pierrot93, Forum,
Robert, ton code me va parfaitement !
Pierrot93, désolé de ne pas avoir été assez clair dans mon explication.
Merci à vous d'avoir consacré de votre temps au traitement de mon problème
A bientôt
 

Discussions similaires

Statistiques des forums

Discussions
312 489
Messages
2 088 848
Membres
103 972
dernier inscrit
steeter