Verrouillage cellule après saisi VBA
Padaoine59
Messages postés
6
Date d'inscription
Statut
Membre
Dernière intervention
-
eriiic Messages postés 24603 Date d'inscription Statut Contributeur Dernière intervention -
eriiic Messages postés 24603 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
A voir également:
- Verrouillage cellule après saisi VBA
- Téléphone bloqué code verrouillage - Guide
- Excel compter cellule couleur sans vba - Guide
- Verrouillage clavier - Guide
- Verrouillage cellule excel - Guide
- Excel cellule couleur si condition texte - Guide
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.
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 ainsi
Pour pouvoir saisir dans la plage voulue sans tout chambouler, il faut écrire la sub ainsi
Private 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