XL 2016 Cellule protégée après application macro

matmac

XLDnaute Occasionnel
Bonjour à tous,

Sur le fichier ci-joint, il y a différentes macros afin d'automatiser certains "processus". Je l'ai modifié récemment, et une fois la macro "copie liste élèves" exécutée, toutes les feuilles se retrouvent protéger (ce qui est voulu), seulement quelques cellules restent modifiables. Le problème est que surs les feuilles "élève 1" .... à "élève 40", la cellule J2 avec liste déroulante et choix de données entre "F" ou "G" est également protégée... et donc pas de choix possible. Je pense qu'il faut la déprotéger dans la feuille "élève initialisation" puisque cette feuille est la base de toutes les feuilles suivantes, mais en ôtant la protection, puis en exécutant les macro "copie liste d'élèves" ou "copie_fiche_eleve_initialisation", les cellules J2 restent protéger et impossible de choisir dans la liste déroulante !
Je ne sais pas comment faire, cela dépasse mes compétences. Ce n'est pas moi qui ai créé le fichier, je l'ai juste adapté...

Le mot de passe pour les macro est "escalade"

Merci par avance
 

Pièces jointes

  • Suivi Escalade 1°P11.xlsm
    571.1 KB · Affichages: 12

sylvanu

XLDnaute Barbatruc
Supporter XLD
Bonjour Matmac, Dugenou,
Autre solution.
Pourquoi ne pas déprotéger la cellule J2 comme le sont les cellules B6:C60 ?
Pour déprotéger une cellule, vous cliquez droit dessus, Format de cellules. Puis Protection ( en haut à droite) et décochez Verrouillée.
Vous pouvez reprotéger votre feuille, cette cellule restera déprotéger et la liste accessible.
En PJ j'ai fait l'exercice sur elève1.
 

Pièces jointes

  • Suivi Escalade 1°P11.xlsm
    569 KB · Affichages: 4

matmac

XLDnaute Occasionnel
" Pour déprotéger une cellule, vous cliquez droit dessus, Format de cellules. Puis Protection ( en haut à droite) et décochez Verrouillée. "

Je viens d'essayer, mais lorsque j'exécute la macro "copie liste élèves", le mot de passe m'est demandé pour toutes les feuilles afin d'ôter la protection, donc 40 fois !
 

sylvanu

XLDnaute Barbatruc
Supporter XLD
Pour la cellule, je n'ai fait l'ex que sur élève1.

Vous aviez déjà une macro qui déprotège toutes les pages.
J'y ai rajouté une macro qui protège toutes les pages :
VB:
Sub déprotéger()
Application.ScreenUpdating = False
    For Each ws In Worksheets
        ws.Unprotect Password:="escalade"
    Next ws
End Sub
Sub Protéger()
Application.ScreenUpdating = False
    For Each ws In Worksheets
        ws.Protect Password:="escalade"
    Next ws
End Sub

Il vous suffit alors de faire dans votre macro:
Code:
Sub NomVotreMacro()
   Déprotéger
   ...
   Votre code
   ...
   Protéger
End Sub
 

Pièces jointes

  • Suivi Escalade 1°P11 (2).xlsm
    571.5 KB · Affichages: 3

matmac

XLDnaute Occasionnel
Merci,
entre temps, j'ai déverrouillé pour les 40 élèves "manuellement" les cellules J2. Après enregistrement, effectivement, la liste déroulante reste accessible, donc c'est bon.
Je pensais simplement qu'il était possible d'intégrer dans une des macros existantes, sans doute "copie_eleve_initilaisation", les cellules devant être vérouillées et celles devant rester modifiables.
Merci
 

matmac

XLDnaute Occasionnel
J'ai parlé trop vite !!!
J'ai effacer les données pour pouvoir utiliser le fichier avec une autre classe, en exécutant la macro "copie_eleve_initialisation", et lorsque j'exécute après la macro "copie liste élèves", le mot de passe m'est à nouveau demander pour toutes les feuilles afin d'ôter la protection, soit 40 fois !
Voir la PJ avec le fichier pour la nouvelle classe
 

Pièces jointes

  • Suivi Escalade 1°G6.xlsm
    576.4 KB · Affichages: 4

sylvanu

XLDnaute Barbatruc
Supporter XLD
Essayez cette macro,
J'ai remplacé :
VB:
Sub copie_fiche_eleve_initialisation()
    If InputBox("Saisissez le mot de passe en minuscule") <> "escalade" Then
        MsgBox ("Mot de passe erroné")
        Exit Sub
    End If
    ActiveSheet.Unprotect Password:="escalade"
    
Blablabla

        ActiveSheet.Protect Password:="escalade" ' protège la feuille (I)
        
Blablabla
End sub
par
Code:
Sub copie_fiche_eleve_initialisation()
    If InputBox("Saisissez le mot de passe en minuscule") <> "escalade" Then
        MsgBox ("Mot de passe erroné")
        Exit Sub
    End If
    ' On déprotège toutes les feuilles
    Déprotéger

Blablabla

        ' On protège toutes les feuilles
       Protéger
End Sub

J'en ai peut être oublié quleques uns, mais vous avez la méthode.
 

Pièces jointes

  • Suivi Escalade 1°G6.xlsm
    568 KB · Affichages: 5

Discussions similaires

Réponses
7
Affichages
525
Réponses
9
Affichages
753
Réponses
36
Affichages
2 K
Réponses
7
Affichages
770

Membres actuellement en ligne

Statistiques des forums

Discussions
315 087
Messages
2 116 083
Membres
112 654
dernier inscrit
SADIKA