Problème de macro après duplication de feuilles
Bonjour à toutes et tous !
je rencontre des problèmes avec une macro avec avoir dupliqué la feuille principale (appelée "Agent 12" dans le fichier ci-joint)
Cette macro sert à verrouiller et déverrouiller des cellules (on déverrouille en cliquant sur le crayon et on verrouille en cliquant sur le cadenas)
Tout fonctionne parfaitement sur la feuille "Agent 12". A partir de cette feuille, j'ai dupliqué 11 autres feuilles.
Dès la duplication, les macros sur les autres feuilles fonctionnent et puis à un moment donné, très certainement après une manoeuvre que je n'ai pas identifié, la macro ne fonctionne plus sur les feuilles "Agent 1" à "Agent 11" et cela me donne une erreur 400.
Comme vous pourrez le constatez dans le codage de la macro de chaque feuille, je ne fais référence à aucun moment du nom de la feuille.
Merci d'avance pour votre aide :)
j'ai oublier de préciser que le mot de passe est 7601
Bonjour,
Ton code est protégé par un mot de passe donc iimpossible d'aller voir ce qui peut bloquer
A+
OK, je n'avais pas encore reçu le post précédent dans lequel tu donnes le mot de passe, je vais donc regarder
J'ai regardé ton travaiil et je le trouve un peu "lourd"
En effet tu désires travailler sur 12 feuilles différentes mais toujours faire la même chose pour chacue d'entre elles. De plus sur chaque feuille tu recommences 2 fois 12 fois la même chose
Tout ceci te conduis à construire 2*12*12 soit 288 Macros .... ouf !!
Tu pourrais tout simplement construire 2 macros, l'une pour protéger l'autre pour déprotéger tes cellules en paramétrant d'une part l'agent"x" et d'autre part le mois
il a y douze fois la même feuille car il y a 12 agents différents, je pense que tu l'avais compris :)
et chaque mois doit pouvoir être verrouillé indépendament afin d'éviter les fausses manipulations.
J'aurais pu me passer de macro mais il aurait fallu à chaque déverrouiller et verrouiller la feuille afin de protéger les cellules... je trouvais cela un peu lourd...
Ce que je comprends pas, c'est que chaque feuille a sa macro, il ne pourrait en principe ne pas avoir d'interférence entre les pages... :(
Peux tu développer un peu plus ta solution évoquée ?
Merci
et j'ajouterai que j'avais fait des macros indépendante car il se peut que le nombre d'agents augmente ou diminue... et avec la crainte que la macro dysfonctionne en cas de macro unique, si c'est de cela que tu parles...
Peux tu développer un peu plus ta solution évoquée ?
Bien sûr. Voila ce que je ferais mais ça n'est qu'une idée personnelle
1) je choisis la feuille "Agent x" sur laquelle il faut vérouiller ou dévérouiller des cellules. Sur cette feuille, comme sur les autres d'ailleurs, il n'y aura que deux boutons : "Vérouiller" et "déverouiller" auxquels sera adjoint, pour chacun, une macro
2) Pour la macro "vérouiller" par exemple, pour l'autre ce sera pareil. Je commence par demander sur quel mois on veut agir grâce avec un InPutBox ou un ListBox.
Ensuite avec "ActiveSheet" je repère le numéro des lignes qui correspondent au mois choisi pour pouvoir repérer les cellules à vérouiller, c'est à dire celles qui sont dans les lignes du mois choisi
Voila, je reste à ta disposition
Petiite question : pourquoi dans tes formulaires tu vérouilles toutes les cellules de ta page pour ensuite ne verouiller que celles qui t'intéressent ?
' Verrouillez toutes les cellules de la feuille par défaut
ActiveSheet.Cells.Locked = True
' Déverrouillez la plage de cellules
Range("D6:AH7").Locked = True
Range("D11:J11").Locked = TrueBonjour,
Les remarques de @Jacky sont très pertinentes et je les appuis. Malheureusement c'est quelque chose qui aurait dû être pensé en amont. Il faudra repartir de quasiment 0 pour créer un projet plus efficace, pour lequel 2 macros auraient amplement suffi. On peut paramétrer sans problèmes ces macros pour s'adapter aux différents MDP, c'est juste une organisation différente.
Bon dans l'état, pour moi les codes fonctionnent. Mais :
- il faut éviter de "Lock" 2x les cellules lors du verrouillage. Comme l'a remarqué @Jacky puisque vous verrouillez déjà toutes les cellules, ça ne sert à rien de reverrouiller 1 plage spécifique.
- Vous avez un autre problème du au fait que vous avez mis "ActiveSheet.Cells". Puisque vous êtes dans un module de code de feuille, écrire simplement Cells.Locked renvoie vers les cellules de ladite feuille. Par contre écrire activesheet renvoie vers la feuille active, qui si vous exécutez les macros est différente.
En effet, vos boutons pointent tous vers les macros de la feuille 12. Quand vous copiez-collez une feuille, les macros VBA ne se mettent pas à jour.
Donc pour corriger, vous allez devoir :
- Editer toutes de vos macros pour retirer les activesheet et le double lock.
- Editer 276 boutons pour pointer vers les macros de leur feuilles respectives.
A voir si la reprise à zéro n'est finalement pas une option envisageable 😁
Bonjour Saboh,
tu dis :
Il faudra repartir de quasiment 0 pour créer un projet plus efficace, pour lequel 2 macros auraient amplement suffi
je suis tout à fait d'acord avec toi, pour moi c'est la solution
Au plaisir de te retrouver sur le Foruum