Affichage lignes sous condition dans une feuille protégée

jcn

XLDnaute Nouveau
Bonjour à tous !

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 :(

Merci de votre aide :)
 

Pièces jointes

  • test ligne masquée sous condition.xlsm
    18.2 KB · Affichages: 40

jcn

XLDnaute Nouveau
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.
 

jcn

XLDnaute Nouveau
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

Enfin si c'est possible bien sûr :confused:
 

M12

XLDnaute Accro
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
 

Marc L

XLDnaute Occasionnel
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.
Ce n'est pas du tout ce que j'ai préconisé dans ma réponse, à relire donc !

L'exemple de M12 (pouvant être simplifié) correspondant bien à ma réponse …

 

jcn

XLDnaute Nouveau
Re : Affichage lignes sous condition dans une feuille protégée

Je comprends mieux. J'aurais dû te préciser que je n'y connais rien en langage VBA, et de fait des lignes de code nécessaires pour faire la manip :D
 

Marc L

XLDnaute Occasionnel
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
f1.gif

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
 
Dernière édition:

Discussions similaires

Statistiques des forums

Discussions
312 488
Messages
2 088 864
Membres
103 979
dernier inscrit
imed