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
Bonsoir CGU,
Sand fichier test, alors un peu au hasard :
VB:
Sub Masquer()
    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
End Sub
On parcout toutes les feuilles à l'exception de celles listées dans le If F.Name<>....


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
Bonsoir CGU,
Sand fichier test, alors un peu au hasard :
VB:
Sub Masquer()
    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
End Sub
On parcout toutes les feuilles à l'exception de celles listées dans le If F.Name<>....


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
Bonsoir CGU,
Sand fichier test, alors un peu au hasard :
VB:
Sub Masquer()
    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
End Sub
On parcout toutes les feuilles à l'exception de celles listées dans le If F.Name<>....

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

Statistiques des forums

Discussions
312 193
Messages
2 086 058
Membres
103 110
dernier inscrit
Privé