Problème écriture code VBA

6jc-test.xlsm (26.57 Ko)

Bonjour, je souhaite créer un bouton "maintenance" sur chaque feuille de mon classeur.

J'ai écrit , avec l'aide de l' enregistreur visual basic une macro mais qui ne fonctionne pas.

Je désire, lorsque je clique sur mon bouton, prendre en compte si la feuille est protégée ou non.

Si elle est protégée, je veux que ma macro, pour l'ensemble des feuilles, -déprotège chaque feuille

-affiche barres de défilement vertical et horizontal

- affiche quadrillage

- affiche onglets

- affiche barre de formules et le ruban

- permette l'utilisation de la poignée d'incrémentation

Si elle est non protégée, l'inverse en protégeant chaque feuille a la fin

En revenant sur la feuille active a l'origine.

Je vous joint un fichier test.

Merci

Bonsoir,

suite à votre test pour savoir si la feuille "en cours" était protégée, la réponse était toujours "True" car après les modifications vous protégiez les feuilles !
Du coup une partie du code ne fonctionnait jamais et vous retombiez sur la même présentation. Après j'ai un doute sur l'ActiveWindow, ne faut-il pas activer la feuille pour faire ce genre de chose ? Ou est-ce pour le reste ? Dans le doute, je fiche l'affichage de l'écran, et je sélectionne les feuilles et j'applique les modifications. Reste à voir si c'est utile ou inutile... Le code "corrigé"

Sub MAINTENANCE()
'
' MAINTENANCE Macro
'
    Dim LaFeuilleEnCours As String
    Application.ScreenUpdating = False
    LaFeuilleEnCours = ActiveSheet.Name
    If ActiveSheet.ProtectContents = True Then
        For n = 1 To Sheets.Count
            Sheets(n).Unprotect
            Sheets(n).Activate
            With ActiveWindow
                .DisplayHorizontalScrollBar = True
                .DisplayVerticalScrollBar = True
                .DisplayWorkbookTabs = True
                .DisplayGridlines = True
                .GridlineColorIndex = 1
                .DisplayHeadings = True
            End With
            Application.CellDragAndDrop = True
            Application.DisplayFormulaBar = True
            Range("D4").Select
        Next n
    Else
        For n = 1 To Sheets.Count
            With ActiveWindow
                .DisplayHorizontalScrollBar = False
                .DisplayVerticalScrollBar = False
                .DisplayWorkbookTabs = False
                .DisplayGridlines = False
                .GridlineColorIndex = 1
                .DisplayHeadings = False
            End With
            Application.CellDragAndDrop = False
            Application.DisplayFormulaBar = False
            Range("D4").Select
            Sheets(n).Protect
        Next n
    End If
    Sheets(LaFeuilleEnCours).Activate
End Sub

@ bientôt

LouReeD

Merci à toi LOUReeD, cela me convient tout à fait, j'ai bien compris mon erreur et je te remercie

Bonne soirée à toi.

Merci @ vous pour vos remerciements !

@ bientôt

LouReeD

Rechercher des sujets similaires à "probleme ecriture code vba"