Bonjour à toutes et à tous,
Je crée en ce moment un classeur Excel pour une association, qui permettra d'enregistrer les coordonnées des adhérents et de suivre les encaissements des adhésions.
Je bloque sur un problème qui me parait pourtant tout simple. Nous serons plusieurs à intervenir sur le classeur, je veux donc protéger la plupart des cellules sauf celles où on rentrera des données, pour éviter toute fausse manip.
J'ai bien pu mettre le verrouillage avec un mot de passe, mais c'est la catastrophe une fois que je veux faire intervenir mes macros. J'ai pourtant étudié le sujet via divers sites, ça parait facile: déverrouiller la feuille en début de macro, et la verrouiller à nouveau à la fin.
Voici mon code, qui s'exécute à l'activation de la feuille
A savoir que mes formules ligne 7 à 10 sont justes (même si probablement pas optimisées, mais là n'est pas le problème actuellement) et fonctionnent très bien tant qu'il n'y a pas le souci de protection de feuille. Rien dans cette macro ne fait intervenir une autre feuille qui aurait pu rester protégée.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15 Private Sub Worksheet_Activate() ActiveSheet.Unprotect Password:="ABCD" 'calcul des sommes a l'ouverture de la feuille For mois = 0 To 11 Cells(4, 2 + mois).Value = Application.Sum(Range(Cells(102 + (40 * (Cells(1, 2).Value - 2020)), 2 + 4 * mois), (Cells(132 + (40 * (Cells(1, 2).Value - 2020)), 2 + 4 * mois)))) Cells(5, 2 + mois).Value = Application.Sum(Range(Cells(102 + (40 * (Cells(1, 2).Value - 2020)), 3 + 4 * mois), (Cells(132 + (40 * (Cells(1, 2).Value - 2020)), 3 + 4 * mois)))) Cells(6, 2 + mois).Value = Application.Sum(Range(Cells(102 + (40 * (Cells(1, 2).Value - 2020)), 4 + 4 * mois), (Cells(132 + (40 * (Cells(1, 2).Value - 2020)), 4 + 4 * mois)))) Cells(7, 2 + mois).Value = Application.Sum(Range(Cells(102 + (40 * (Cells(1, 2).Value - 2020)), 5 + 4 * mois), (Cells(132 + (40 * (Cells(1, 2).Value - 2020)), 5 + 4 * mois)))) Next mois ActiveSheet.Protect Password:="ABCD" End Sub
Quand la macro s'exécute, Excel se freeze comme s'il était bloqué dans une boucle mais je ne peux même pas arrêter l'exécution avec alt+f11, je suis obligé de forcer Excel à se fermer.
Cette histoire de protection parait tellement simple, je ne vois vraiment pas ce que je fais mal.
Si quelqu'un a une idée, elle serait la bienvenue
En vous remerciant par avance
PS: j'ai testé plusieurs variantes du verrouillage/déverrouillage comme Sheets("nom").UnProtect [...], pour le même résultat.
Partager