Macro non activeX pour masquer/afficher des colonnes

Bonjour à tous,

J'avais créé ce bouton, il me semble activeX à l'époque avec cette ligne de commande

Private Sub CommandButton1_Click()
ActiveCell.Select 'enleve le focus au bouton
Select Case Me.CommandButton1.Caption 'agit en fonction du texte du bouton
Case "Masquer" 'cas "Masquer"
Me.CommandButton1.Caption = "Afficher" 'modifie le texte du bouton
Range("Q1,R1,S1,T1,U1,V1,W1,X1,Y1,Z1,AA1").EntireColumn.Hidden = True 'masque les colonne t aa
Case "Afficher" 'cas "Afficher"
Me.CommandButton1.Caption = "Masquer" 'modifie le texte du bouton
Range("Q1,R1,S1,T1,U1,V1,W1,X1,Y1,Z1,AA1").EntireColumn.Hidden = False 'masque les colonne t aa
End Select 'fin de l'action en fonction du texte du bouton
End Sub

Problème, c'est un fichier collaboratif, et certains l'ouvrent sous Mac.

Du coup, ma formule ne fonctionne plus .....

est ce que c'est possible d'affecter ce genre de macro à un Bouton de Controle de formulaire ? Parce que si je la copie colle, cela ne focntionne pas (je change bien le nom du bouton dans la formule)

Bonjour,

Insérez une forme standard de type rectangle à bout arrondi, initialisez le en y rentrant le texte "Afficher" ou "Masquer" et insérer ce code dans un module standard et liez le à la forme :

image
Sub MEF()
Dim FORME As Shape
With Worksheets("Feuil1") 'A adapter
    Set FORME = .Shapes("Rounded Rectangle 1") 'A adapter
    Debug.Print FORME.TextFrame.Characters.Text
    Select Case FORME.TextFrame.Characters.Text 'agit en fonction du texte du bouton
        Case "Masquer" 'cas "Masquer"
        FORME.TextFrame.Characters.Text = "Afficher" 'modifie le texte du bouton
        .Range("Q:AA").EntireColumn.Hidden = True 'masque les colonne t aa
        Case "Afficher" 'cas "Afficher"
        FORME.TextFrame.Characters.Text = "Masquer" 'modifie le texte du bouton
        .Range("Q:AA").EntireColumn.Hidden = False 'masque les colonne t aa
    End Select 'fin de l'action en fonction du texte du bouton
End With
End Sub

Les deux lignes en commentaires sont a adapter, nom de feuille où se trouve les colonnes à masquer, et nom de la forme. Attention le nom est en anglais sous l'éditeur VBA, dans mon code le nom est équivalent au contenu du champs 5.

Cdlt,

Merci, la solution est fantastique, à un détail prêt que je n'avais pas évoqué dans mon post initial.

La feuille de base est amenée à être dupliquée à de nombreuses reprises.

Or, pour le coup, la macro ne fonctionne que pour une feuille donnée (With Worksheets("Feuil1")), sauf à renommer cette ligne à chaque fois, et donc à créer autant de macros qu'il y a de feuilles. Ce peut devenir assez rapidement lourd à gérer.

Y a t il un moyen pour régler cela ?

Facile, j'ai remplacé par activesheet.

Rechercher des sujets similaires à "macro activex masquer afficher colonnes"