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