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

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...

CGU2022.

XLDnaute Junior


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
 

CGU2022.

XLDnaute Junior

Bonjour dans ton code il manque:
Dim f As Worksheet
Merci problème résolu..
 

sylvanu

XLDnaute Barbatruc
Supporter XLD
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
 

Discussions similaires

Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…