Ceci est une page optimisée pour les mobiles. Cliquez sur ce texte pour afficher la vraie page.

XL 2016 compilation macro on/off

  • Initiateur de la discussion Initiateur de la discussion eastwick
  • 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 !

eastwick

XLDnaute Accro
Bonjour à toutes et tous,
J'ai 2 macros, une pour masquer la colonne B de plusieurs onglets, l'autre pour l'afficher. Si je veux compiler mes 2 macros sur un ToggleButton, ça ne fonctionne plus.
Voici mon code :
Private Sub ToggleButton1_Click()
If ActiveSheet.ToggleButton1 Then
ActiveSheet.ToggleButton1.Caption = "afficher"
Sheets(Array("H", "H_bis", "J", "E", "B", "P", "Q", "C", "A")).Select
Sheets("H").Activate
Columns("B:B").Select
Range("C1").Activate
Selection.EntireColumn.Hidden = False
Range("A1").Select
Sheets("table").Select
Range("G2").Select
Else
ActiveSheet.ToggleButton1.Caption = "masquer"
Sheets(Array("H", "H_bis", "J", "E", "B", "P", "Q", "C", "A")).Select
Sheets("H").Activate
Columns("A:C").Select
Selection.EntireColumn.Hidden = True
Range("A1").Select
Sheets("table").Select
Range("G2").Select
End If
End Sub


J'ai mis en rouge où le code coince.

Je vous remercie.
 

Pièces jointes

  • Projet1.jpg
    85.5 KB · Affichages: 5
Bonjour eatswick,

C'est pourtant classique, VBA comprend que Columns("B:B") est une colonne de la feuille où se trouve la macro.

Or vous changez de feuille juste avant avec Sheets("H").Activate donc on ne peut pas sélectionner la colonne.

En VBA il faut autant que possible éviter les Select ou les Activate.

Revoyez le code en précisant bien les feuilles des objets Range.

A+
 
Merci job75 mais pouvez- vous m'aiguiller svp ?
 
bonjour,
sachant que le ToggleButton a 3 état {True, False, Null} qu'est-ce qui justifie l'utilisation de ce contrôle ?

pour les select, selection et autres Activate tu fusionner les institutions.
Code:
'Sheets("H").Activate
'Columns("B:B").Select
'Range("C1").Activate
'Selection.EntireColumn.Hidden = False

Sheets("H").Range("C1").EntireColumn.Hidden = False
 
Dernière édition:
Euh, j'ai rien pigé ! le VBA et moi ça ne le fait pas, pourtant je l'adore !
 
Bonjour Eastwick, dysorthographie, Job,
En PJ un essai avec :
VB:
Private Sub ToggleButton1_Click()
    Dim Tablo, i%, Texte$, Etat As Boolean
    Tablo = Array("H", "H_bis", "J", "E", "B", "P", "Q", "C", "A")
    If ActiveSheet.ToggleButton1 Then
        Texte = "Afficher": Etat = False
    Else
        Texte = "Masquer": Etat = True
    End If
    ActiveSheet.ToggleButton1.Caption = Texte
    For i = LBound(Tablo) To UBound(Tablo)
        Sheets(Tablo(i)).[B:B].EntireColumn.Hidden = Etat
    Next i
End Sub
Le Tablo réfère toutes les feuilles concernées.
Suivant l'état du Toogle on met à jour deux variables : le texte à afficher et l'état de la colonne B.
Sur toutes les pages on masque/démasque la colonne B et on met à jour le texte du toogle.
 

Pièces jointes

Impeccable, merci beaucoup
 
- 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

Discussions similaires

Réponses
2
Affichages
573
Réponses
7
Affichages
799
J
Réponses
22
Affichages
3 K
jui42
J
D
Réponses
4
Affichages
1 K
G
  • Question Question
Réponses
1
Affichages
776
Grouchet
G
Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…