verrouillé automatiquement cellule une fois saisie

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

LE GUERROUE

XLDnaute Nouveau
Bonjour,
Dans le cadre de mon travail je dois créer un fichier excel de type registre. Ce registre dois pouvoir etre rempli au fil de l'eau par les équipes (fichier en réseau) mais les valeurs ne doivent pas pouvoir être modifiées une fois saisie.
Avez vous une solution pour verrouillé les cellules une fois remplie?
Plutôt à l'aise avec excel je ne connait pas assez le VBA...
Merci d'avance,
Audrey
 
Bienvenu sur le forum et bonjour,
A tester sur un fichier d'essai
Voici les manip
Sélectionner toutes les cellules
Aller en format de cellules >Protection >décocher Verrouiller
Faire 1 click bouton droit de souris sur le nom de l'onglet en bas
et dans le menu choisir >visualiser le code
dans la fenetre blanche copier tout ce code

>>>Remplacer "toto" par le bon mot de passe

VB:
Private Sub Worksheet_Change(ByVal Target As Range)
ActiveSheet.Unprotect "toto"
Target.Locked = True
ActiveSheet.Protect "toto"
End Sub

Bruno
 
Content que tu pousses ta curiosité un peu plus loin . . .
Code avec demande de confirmation
VB:
Private Sub Worksheet_Change(ByVal Target As Range)
If MsgBox("Valider pour ....." & Target, vbYesNo + vbExclamation, "CONFIRMATION") = vbNo Then
Application.EnableEvents = False   'évite événement Change
Target = ""    'on efface
Application.EnableEvents = True  'remet événement
Else
ActiveSheet.Unprotect "toto"
Target.Locked = True
ActiveSheet.Protect "toto"
End If
End Sub
Bruno
 
Audrey,
Voici pour 3 colonnes tu peux en rajouter facilement en macro
VB:
Private Sub Worksheet_Change(ByVal Target As Range)
lig = Target.Row
tx = Cells(lig, 1) & " " & Cells(lig, 2) & " " & Cells(lig, 3) 'ici colonne 1 à 3
If MsgBox("Valider pour ....." & tx, vbYesNo + vbExclamation, "CONFIRMATION") = vbNo Then
Application.EnableEvents = False   'évite événement Change
Target = ""    'on efface
Application.EnableEvents = True  'remet événement
Else
ActiveSheet.Unprotect "toto"
Target.Locked = True
ActiveSheet.Protect "toto"
End If
End Sub

Pour les dates et heure
Formule en E1 =(C1+D1)-(A1+B1)
Le format de cellule en E1 est personnalisé [h]:mm
Si besoin en macro tu dois maintenant savoir faire.
Bruno
 
Content que tu pousses ta curiosité un peu plus loin . . .
Code avec demande de confirmation
VB:
Private Sub Worksheet_Change(ByVal Target As Range)
If MsgBox("Valider pour ....." & Target, vbYesNo + vbExclamation, "CONFIRMATION") = vbNo Then
Application.EnableEvents = False   'évite événement Change
Target = ""    'on efface
Application.EnableEvents = True  'remet événement
Else
ActiveSheet.Unprotect "toto"
Target.Locked = True
ActiveSheet.Protect "toto"
End If
End Sub
Bruno
Bonjour,
Désolé de déterrer ce sujet, mais est il possible d'appliquer le code ci-dessus uniquement pour les colonnes K, L et M, et laisser les autres en remplissage libre ?
Merci pour vos réponses, cordialement.
 

Pièces jointes

Bonjour,
voici un code qui fait l'affaire
Bruno
VB:
Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Column = 11 Or Target.Column = 12 Or Target.Column = 13 Then
If MsgBox("Souhaitez-vous valider " & Target & " ?", vbYesNo + vbExclamation, "CONFIRMATION") = vbNo Then
Application.EnableEvents = False   'évite événement Change
Target = ""    'on efface
Application.EnableEvents = True  'remet événement
Else
ActiveSheet.Unprotect "toto"
Target.Locked = True
ActiveSheet.Protect "toto"
End If
End If
End Sub
 
Bonjour,
voici un code qui fait l'affaire
Bruno
VB:
Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Column = 11 Or Target.Column = 12 Or Target.Column = 13 Then
If MsgBox("Souhaitez-vous valider " & Target & " ?", vbYesNo + vbExclamation, "CONFIRMATION") = vbNo Then
Application.EnableEvents = False   'évite événement Change
Target = ""    'on efface
Application.EnableEvents = True  'remet événement
Else
ActiveSheet.Unprotect "toto"
Target.Locked = True
ActiveSheet.Protect "toto"
End If
End If
End Sub
merci beaucoup!

En vous souhaitant un bon weekend.
 
- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD

Discussions similaires

Réponses
2
Affichages
455
Retour