Verrouillage cellule après saisi VBA
Padaoine59
Messages postés
6
Statut
Membre
-
eriiic Messages postés 24581 Date d'inscription Statut Contributeur Dernière intervention -
eriiic Messages postés 24581 Date d'inscription Statut Contributeur Dernière intervention -
Bonjour,
mon tableau me permet de remlir un formulaire "sheet formulaire" en cliquant sur "enregistrer dossier" il me copie l'ensemble de mes données saisi dans 2 autres feuille.......
Bref , je souhaiterai que dans la sheet "dossier" je puisse saisir des info dans les cellules R2:X2 mais une fois les infos saisi les cellule se verrouille comme le restant du tableau pour eviter de venir modifier des infos saisis a l'avenir. Je pourrais le faire qu'en venant deverrouiller volontairement la feuille.
J'ai rajouté cette commande:
Mais lorsque je lance ma macro "enregistrement formulaire", j'ai une erreur qui apparait et je ne trouve pas à quoi elle est due.
J'ai poser le fichier sur weetransfert fichier se trouve ici:
https://wetransfer.com/downloads/a4eb7fc6afdd1fc17d8f5f8ec02932c020210410082629/c13d13
Merci d'avance pour votre retour
mon tableau me permet de remlir un formulaire "sheet formulaire" en cliquant sur "enregistrer dossier" il me copie l'ensemble de mes données saisi dans 2 autres feuille.......
Bref , je souhaiterai que dans la sheet "dossier" je puisse saisir des info dans les cellules R2:X2 mais une fois les infos saisi les cellule se verrouille comme le restant du tableau pour eviter de venir modifier des infos saisis a l'avenir. Je pourrais le faire qu'en venant deverrouiller volontairement la feuille.
J'ai rajouté cette commande:
Private Sub Worksheet_Change(ByVal Target As Range)
ActiveSheet.Unprotect "Julien67*"
Target.Locked = True
ActiveSheet.Protect "Julien67*"
End Sub
Mais lorsque je lance ma macro "enregistrement formulaire", j'ai une erreur qui apparait et je ne trouve pas à quoi elle est due.
J'ai poser le fichier sur weetransfert fichier se trouve ici:
https://wetransfer.com/downloads/a4eb7fc6afdd1fc17d8f5f8ec02932c020210410082629/c13d13
Merci d'avance pour votre retour
Configuration: Windows / Chrome 89.0.4389.114
3 réponses
-
Bonjour,
Le problème vient justement de la Sub Worksheet_Change(ByVal Target As Range) :
au lancement de l'enregistrement, la protection des feuilles est bien enlevée mais en parallèle dès qu'il y a un changement dans le classeur la protection est remise à la fin du _Change.
A priori, il suffit de laisser la macro d'enregistrement gérer les protections en entrée (ôter) puis en sortie (remettre) comme déjà fait pour que ça fonctionne.
Il faut donc supprimer Sub Worksheet_Change(ByVal Target As Range) et la remplacer par une procédure qui s'assure que les protections sont bien mises à l'ouverture du classeur par exemple. -
PS : je me rends compte que ma réponse précédente ne correspond pas à tous les besoins !
Pour pouvoir saisir dans la plage voulue sans tout chambouler, il faut écrire la sub ainsiPrivate Sub Worksheet_Change(ByVal Target As Range) If Not Intersect(Target, Range("R2:X2")) Is Nothing Then 'On teste si on est bien dans la plage "R2:X2" ActiveSheet.Unprotect "Julien67*" Target.Locked = False ActiveSheet.Protect "Julien67*" End If End Sub -
Bonjour à tous,
insère cette ligne dans "enregistrement formulaire" :Rows("2:2").Select
Application.EnableEvents = False
Selection.Insert Shift:=xlDown, CopyOrigin:=xlFormatFromLeftOrAbove
remet à True en fin de macro
eric