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

XL 2013 Masquer un shape (forme) définit dans toutes les feuilles

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 !

CGU2022.

XLDnaute Junior
Bonjour, je vous souhaite un bon vendredi et agréable weekend à tous...

Mon problème du jour

j'ai une macro qui s'exécute et masque un shape (nomé Ok) dans une feuille après l'exécution d'une macro.

je souhaite que ce shape (forme qui sert de bouton) soit caché ou bien effacé de toutes les feuilles du classeur. car j'ai copié la feuille d'origine plusieurs fois.

Ci dessous le code qui me permet de masquer dans la feuille active.

VB:
ActiveSheet.Shapes.range(Array("Ok")).Visible = False

Avez vous une idée ?

Cdt. CGU2022.
 
Solution


Bonjour Merci Sylvanu
Ci joint le code que j'ai retenu, on peut bien sur l'optimiser.
Merci ...


VB:
Option Explicit

' Déprotéger toutes les feuilles de calcul
Sub DéprotégerToutesLesFeuilles()
    Dim fc As Worksheet

    For Each fc In Worksheets
        fc.Unprotect "123"
    Next fc

End Sub
' Protéger toutes...


Bonjour Merci Sylvanu
Ci joint le code que j'ai retenu, on peut bien sur l'optimiser.
Merci ...


VB:
Option Explicit

' Déprotéger toutes les feuilles de calcul
Sub DéprotégerToutesLesFeuilles()
    Dim fc As Worksheet

    For Each fc In Worksheets
        fc.Unprotect "123"
    Next fc

End Sub
' Protéger toutes les feuilles de calcul
Sub ProtégerToutesLesFeuilles()
    Dim fc As Worksheet

    For Each fc In Worksheets
        fc.Protect "123"
    Next fc

End Sub
Sub Masquer()
Dim f As Worksheet
 Call DéprotégerToutesLesFeuilles
    
    
    For Each f In Worksheets
        If f.Name <> "Nom1" And f.Name <> "Nom2" Then  ' Mettre ici les feuilles à exclure
            On Error Resume Next
            Sheets(f.Name).Shapes.Range(Array("Ok")).Visible = False
        End If
    Next f

 Call ProtégerToutesLesFeuilles

End Sub
 

Bonjour dans ton code il manque:
Dim f As Worksheet
Merci problème résolu..
 
Bonjour CGU,
On peut effectivement optimiser, et gagner du temps en ne déprotégeant/protégeant que les feuiles concernées :
VB:
Sub Masquer()
Dim f As Worksheet
Const mdp$ = "123"
    For Each f In Worksheets
        If f.Name <> "Nom1" And f.Name <> "Nom2" Then  ' Mettre ici les feuilles à exclure
            f.Unprotect mdp
            On Error Resume Next
            Sheets(f.Name).Shapes.Range(Array("Ok")).Visible = False
            f.Protect mdp
        End If
    Next f
End Sub
 
- 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
Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…