Macro, afficher/masquer, protection

Bonjour,

Je possède une macro qui fonctionne très bien sans l'ajout de la protection à la fin du code, mais quand je rajoute la ligne qui protège le classeur, j'ai l'erreur 1004 et une des lignes ordonnant de masquer une feuille se met sur fond jaune quand je clique sur débogage.

Comment faire pour réactiver la protection du classeur sans avoir ce bug ? Je vous remercie

Private Sub Worksheet_Change(ByVal Target As Range)
    Application.ScreenUpdating = False 'Supprime la mise à jour de l'affichage entre chaque opération, et diminue considérablement le temps de la macro

    ActiveWorkbook.Unprotect Password:="truc" 'Déprotége le classeur pour afficher/masquer les feuilles

If Range("D11") = "Valorisations identiques" Then
    Sheets("Valorisation").Visible = True
    Else: Sheets("Transport").Visible = False
End If

If Range("D11") = "Valorisations identiques" Then
    If MsgBox("Vous souhaitez choisir une valorisation des cendres sous foyer identique de celle des cendres volantes. Confirmez-vous ce choix ?", vbYesNo) = vbYes Then
       Sheets("Valorisation").Range("D2") = Sheets("Valorisation CSF-CV").Range("D2")
       Sheets("Valorisation").Range("H2") = Sheets("Valorisation CSF-CV").Range("H2")
       Sheets("Valorisation").Range("D4") = Sheets("Valorisation CSF-CV").Range("D4")
       Sheets("Valorisation").Range("D5") = Sheets("Valorisation CSF-CV").Range("D5")
       Sheets("Valorisation").Range("D9") = Sheets("Valorisation CSF-CV").Range("D9")
       Sheets("Valorisation").Select
       Sheets("Valorisation").Range("D11").Select
       Sheets("Valorisation CSF-CV").Range("D11") = "Faites votre choix"
       Sheets("Valorisation CSF-CV").Visible = False
       Else: Sheets("Valorisation CSF-CV").Range("D11") = "Faites votre choix"
       Sheets("Valorisation").Visible = False
    End If
End If

If Range("D26") <> "" And Range("N26") <> "" Then
    Sheets("Transport CSF-CV").Visible = True
    Else: Sheets("Transport CSF-CV").Visible = False
End If

If Range("D26") <> "" And Range("N26") <> "" Then
    If MsgBox("Voulez-vous approfondir le chiffrage en passant à l'onglet Transport CSF-CV ?", vbYesNo) = vbYes Then
       Sheets("Transport CSF-CV").Select
    End If
End If

 ActiveWorkbook.Protect Password:="truc" 'Reprotége le classeur

End Sub

Bonjour,

Probablement ceci :

Else: Sheets("Transport CSF-CV").Visible = False <<< Ici tu masques la feuille

End If

If Range("D26") <> "" And Range("N26") <> "" Then

If MsgBox("Voulez-vous approfondir le chiffrage en passant à l'onglet Transport CSF-CV ?", vbYesNo) = vbYes Then

Sheets("Transport CSF-CV").Select <<< Ici tu tentes de sélectionner une feuille masquée. Il faudrait rendre cette feuille visible avant de la sélectionner.

Gelinotte

Non aucun rapport, la macro fonctionnait très bien avant l'intégration des lignes Unprotect et Protect !

J'ai finalement trouvé la solution moi-même.

Ce n'est peut-être pas la meilleure méthode, mais elle marche : il faut ajouter une ligne Unprotect avant chaque opération d'affichage/masquage d'une feuille, et seulement, une ligne Protect en fin de macro. Voilà, si ça peut aider quelqu'un

Rechercher des sujets similaires à "macro afficher masquer protection"