protection écriture

  • Initiateur de la discussion Initiateur de la discussion bpol
  • Date de début Date de début

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 !

bpol

XLDnaute Impliqué
bonjour,

j'ai une simple macro :

Ligne = Range("B65536").End(xlUp).Row + 1
Cells(Ligne, 2) = Range("A1")

mais je voudrais qu'après chaque "encodage" on ne puisse plus modifier les écritures de cette colonne seulement

Merci
BPOL
 
Re : protection écriture

Bonjour,

Je n'ai pas très bien compris où vous voulez en arriver aussi ai-je extrapolé.

J'ai considéré la démarche suivante :
1) on ne peut plus modifier ce qui a été écrit par votre simple macro
2) la cellule B1 ne peut être modifiée
3) on peut écrire dans les cellules vides de la colonne B (sans passer par la simple macro) et, une fois renseignées,
elle ne peuvent plus être modifiées si elles suivent immédiatement la plage déjà renseignée à partir de B2

Si c'est bien cela qu'il fallait faire alors

1) copiez le code suivant dans un module Standard (adaptez la constante cernée par des ###)
Code:
'### Adapter la constante du nom de la feuille concernée ###
Public Const FEUILLE As String = "test"
'###########################################################

Public OldSelection As Range

Sub VotreSimpleMacro()
Dim Ligne As Long
Ligne = Range("B65536").End(xlUp).Row + 1
Cells(Ligne, 2) = Range("A1")
End Sub

2) dans la fenêtre de code de ThisWorkbook, copiez le code suivant
Code:
Private Sub Workbook_Open()
Set OldSelection = Sheets(FEUILLE).Range(Selection.Address)
End Sub

3) dans la fenêtre de code de la feuille concernée, copiez le code suivant
Code:
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
Dim R As Range
Set R = Range("b1:b" & [b2].End(xlDown).Row & "")
Set R = Application.Intersect(R, Target)
If Not R Is Nothing Then
  If OldSelection Is Nothing Then Set OldSelection = [a1]
  Application.EnableEvents = False
  OldSelection.Select
  Application.EnableEvents = True
Else
  Set OldSelection = Target
End If
End Sub

Cordialement.

PMO
Patrick Morange
 
Re : protection écriture

bonjour PMO,
mais j'ai réussi à trouver la solution
j'ai verrouillé la colonne B
puis protéger la feuille par un code

et j'ai modifié ma macro ainsi:

ActiveSheet.Unprotect ("****")

Ligne = Range("B65536").End(xlUp).Row + 1
Cells(Ligne, 2) = Range("A1")
ActiveSheet.Protect ("****")
ActiveWorkbook.Save
End Sub

Merci encore des renseignements
Bpol
 
- 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
15
Affichages
827
Réponses
5
Affichages
931
Retour