Verrouiller les cellules d'une colonne

Bonjour à tous,

Je désirerais interdire l'accès à une colonne par l'utilisateur sans que la feuille entière ne soit protégée, j'ai fait qqes recherches sur internet mais je n'ai pas trouvé de piste probante.

J'ai essayé ce bout de code mais j'ai une erreur 1004 'Erreur définie par l'application ou par l'objet' qui doit venir du fait que ma feuille n'est pas protégée

Sub VerrouillageCellules()
    Sheets("Pilotage").Select
    Range("I1:I100").Select
        Selection.Locked = True
    Range("I1:I100").Select
        Selection.Locked = False
    Selection.FormulaHidden = False
    ActiveSheet.Protect /contents/64-mots-de-passe Password:="motdepasse", DrawingObjects:=True, contents:=True, Scenarios:=True
    Range("A1").Select
End Sub

Auriez vous une idée ? Merci d'avance :)

Bonjour Superneiluj

Dans la feuille en question, il suffit de mettre ce simple code

Private Sub Worksheet_Change(ByVal Target As Range)
  ' Si tentative de saisie dans la colonne I
  If Not Intersect(Range("I:I"), Target) Is Nothing Then
    ' Désactiver les évènements
    Application.EnableEvents = False
    ' Annuler les modifcations
    Application.Undo
    ' Réactiver les évènements
    Application.EnableEvents = True
    ' Petit message
    MsgBox "Vous n'êtes pas autorisé à modifier cette colonne !", vbCritical, "OUPS..."
  End If
End Sub

A+

Bonjour, Pourquoi ne pas utiliser la protection feuille ?

- 1) sélectionner toutes les cellules de la feuille. / Format cellules / Protection / décocher verrouillée (sur la totalité du document )

- 2) Sélectionner votre colonne I / format cellules / Protection / recocher verrouillée.

-3) Activer la protection feuille ( elle sera uniquement sur votre colonne I

Salut Xmenpl

Moi j'ai lu "sans que la feuille entière ne soit protégée" donc je ne suis pas allé plus loin

Bonjour, Bruno j'avais lu la même chose mais si la protection est seulement sur la colonne I çà marche aussi

Xmenpl c'est de la triche je suis déçu de pas y avoir pensé moi même

Bonjour le forum,

Ce message de me paraissait utile...

Bonjour Superneiluj

Dans la feuille en question, il suffit de mettre ce simple code

Private Sub Worksheet_Change(ByVal Target As Range)
  ' Si tentative de saisie dans la colonne I
  If Not Intersect(Range("I:I"), Target) Is Nothing Then
    ' Désactiver les évènements
    Application.EnableEvents = False
    ' Annuler les modifcations
    Application.Undo
    ' Réactiver les évènements
    Application.EnableEvents = True
    ' Petit message
    MsgBox "Vous n'êtes pas autorisé à modifier cette colonne !", vbCritical, "OUPS..."
  End If
End Sub

A+

Mais çà fonctionne pas.

Je voudrais empêcher l'utilisateur d'effacer les cellules M9 et M10 dans un 'onglet.

Merci

Aprés avoir regardé cette vidéo et remplacer les Me. par le nom de la feuille, çà devrait aller.

image

Mais je peux pas clôturer le sujet.

Bonjour fronck

Je voudrais empêcher l'utilisateur d'effacer les cellules M9 et M10 dans un 'onglet.

Sans regarder la vidéo, dans l'onglet en question, il suffit de mettre le code suivant

Private Sub Worksheet_Change(ByVal Target As Range)
  ' Si tentative de saisie dans la colonne I
  If Not Intersect(Range("M9:M10"), Target) Is Nothing Then
    ' Désactiver les évènements
    Application.EnableEvents = False
    ' Annuler les modifcations
    Application.Undo
    ' Réactiver les évènements
    Application.EnableEvents = True
    ' Petit message
    MsgBox "Vous n'êtes pas autorisé à modifier cette colonne !", vbCritical, "OUPS..."
  End If
End Sub

Bonne journée

Bonjour Bruno,

D'abord ton message est remplacé par celui-ci.

image

Et j'ai un exemple ou çà fonctionne pas si je laisse le "application.undo".

Onglet "ecole" avec ton code.

en 3eme macro (depart) UF ateliers :

    Sheets("ecole").Activate
    If ws1.Range("Z111") <> "pe" Then
        ws1.Unprotect 9595
        ws1.Range("Z112") = DateAdd("d", 3, Now())
        ws1.Range("Z111") = "pe"
        Range("Z111:Z112").Font.ThemeColor = xlThemeColorDark1
        ws1.Range("Z111:Z112").Locked = True
        ws1.Protect 9595
    End If

puis clic droit dans le fichier et bouton départ.

Il bug sur undo et n'affiche que la date.

Mais comme çà çà fonctionne.

Private Sub Worksheet_Change(ByVal Target As Range)
  If Not Intersect(Range("Z111:Z112"), Target) Is Nothing Then
  End If
End Sub

Cdt

Rechercher des sujets similaires à "verrouiller colonne"