J'ai besoin d'un petit coup de main, en cherchant sur le forum j'ai récupéré un macro qui permet d'afficher ou de masquer des lignes d'une feuille Excel en fonction d'une condition : Cf. fichier joint. Si la cellule E3 (Seule cellule non protégée) est égale à 0 les lignes 5 à 27 sont masquées, toute autre valeur faisant apparaitre les lignes.
Le problème, c'est que j'ai besoin de protéger la feuille, et que la macro ne fonctionne plus dès que je protège la feuille
Re : Affichage lignes sous condition dans une feuille protégée
Merci mais le problème soumis fait en réalité partie d'un fichier plus vaste, qui sera transmis à d'autres utilisateurs. Ces derniers n'auront pas la possibilité de déprotéger la feuille.
Re : Affichage lignes sous condition dans une feuille protégée
Petit ajout :
En fait, une solution consiste lorsque l'on protège la feuille de cocher la case "Format de ligne" dans la liste des options (Autoriser les utilisateur de cette feuille à").
Mais justement, je ne souhaite pas que les autres utilisateurs puissent modifier quoi que ce soit dans la feuille.
Quelle modification dois je apporter au code VBA de la feuille pour qu'il fonctionne même si la feuille est protégée ???
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
If Range("D3") = 2 Then
Rows("5:27").Hidden = False
Else
Rows("5:27").Hidden = True
End If
End Sub
Re : Affichage lignes sous condition dans une feuille protégée
Bonjour,
Change ton code avec celui-ci et modifie ton Mdp comme tu le désires
Code:
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
If Range("D3") = 2 Then
ActiveSheet.Unprotect Password:="toto"
Rows("5:27").Hidden = False
ActiveSheet.Protect Password:="toto"
Else
ActiveSheet.Unprotect Password:="toto"
Rows("5:27").Hidden = True
ActiveSheet.Protect Password:="toto"
End If
End Sub
Merci mais le problème soumis fait en réalité partie d'un fichier plus vaste, qui sera transmis à d'autres utilisateurs. Ces derniers n'auront pas la possibilité de déprotéger la feuille.
Astuce pour les débutants : activer l'Enregistreur de macros puis effectuer des manipulations,
une base de code est livrée sur un plateau !
Ensuite afin de se former, sélectionner une instruction dans le code puis appuyer sur la touche
et consulter l'aide ainsi affichée ! +90% de mes connaissances provenant de cette aide …
Edit :
Code:
Private Sub Worksheet_Change(ByVal Target As Range)
Const PSW = "toto"
If Target.Address <> "$E$3" Then Exit Sub
B% = Me.ProtectContents
If B Then Me.Unprotect PSW
Rows("5:27").Hidden = Target.Value = 0
If B Then Me.Protect PSW
End Sub
Astuce pour les débutants : activer l'Enregistreur de macros puis effectuer des manipulations,
une base de code est livrée sur un plateau !
Ensuite afin de se former, sélectionner une instruction dans le code puis appuyer sur la touche
et consulter l'aide ainsi affichée ! +90% de mes connaissances provenant de cette aide …
Edit :
Code:
Private Sub Worksheet_Change(ByVal Target As Range)
Const PSW = "toto"
If Target.Address <> "$E$3" Then Exit Sub
B% = Me.ProtectContents
If B Then Me.Unprotect PSW
Rows("5:27").Hidden = Target.Value = 0
If B Then Me.Protect PSW
End Sub
Bonjour,
Comment faire si j'ai 2 zones à masquer sous conditions de 2 cellules différentes (tout en protégeant le formulaire comme dans l'exemple précédent) ?