Protection feuille - VBA

Bonjour,

j'ai un fichier Excel avec un code VBA et je souhaiterais protéger ma feuille afin que d'autres utilisateurs ne puissent pas modifier certaines cellules qui contiennent des formules RechercheV etc.

J'ai essayé de faire clic-droit sur l'onglet en question - Protéger la feuille mais un message d'erreur de ma macro s'affiche.

Y a t-il un autre moyen de verrouiller des cellules pour éviter leur modification sans protéger la feuille entière?

Merci d'avance

Bonjour juliak,

je ne connais pas de moyen pour protéger seulement une partie de feuille.

* par défaut, toutes les cellules sont déjà verrouillées

* déverrouille les cellules où il faut saisir des données

* protège la feuille

les formules seront protégées, et tu pourras saisir les données.

dhany

Bonjour,

j'ai un fichier Excel avec un code VBA et je souhaiterais protéger ma feuille afin que d'autres utilisateurs ne puissent pas modifier certaines cellules qui contiennent des formules RechercheV etc.

J'ai essayé de faire clic-droit sur l'onglet en question - Protéger la feuille mais un message d'erreur de ma macro s'affiche.

Y a t-il un autre moyen de verrouiller des cellules pour éviter leur modification sans protéger la feuille entière?

Merci d'avance

Bonjour,

-Comme le signale Dhany il faut d'abord utiliser l'option "Format cellule" pour désactiver la protection des cellules que l'on souhaite

laisser en libre accés.

-Ensuite tu pourras utilliser l'option de l'onglet révision : "Protéger la Feuille".

- Cependant, le fait de protéger la feuille peut gêner tes macros : Tu devras donc ajouter en début et en fin de macro

les lignes correspondant à la désactivation de la protection puis la réactivation de ta protection :

ActiveSheet.unprotect Password:="password" ' en début de macro

ActiveSheet.protect Password:="password" ' en fin de macro

Bonjour,

Une proposition à étudier.

Seules les formules sont protégées dans la plage active de la feuille.

Cdlt.

20juliak.xlsm (19.17 Ko)
Option Explicit

Public Const PWD As String = "passsword"

Public Sub ProtectFormulasOnSheet()
Dim rng As Range, rng2 As Range
    With ActiveSheet
        If .UsedRange.Address <> "$A$1" Or Not IsEmpty(.Cells(1)) Then
            .Unprotect Password:=PWD
            Set rng = .UsedRange
            rng.Locked = False
            On Error Resume Next
            Set rng2 = rng.SpecialCells(xlCellTypeFormulas, 23)
            On Error GoTo 0
            If Not rng2 Is Nothing Then rng2.Locked = True
            .Protect Password:=PWD, UserInterfaceOnly:=True
        End If
    End With
    Set rng2 = Nothing: Set rng = Nothing
End Sub

Public Sub UnProtectSheet()
    ActiveSheet.Unprotect Password:=PWD
End Sub

Bonjour Dhany, Boss_68, Xmenpl,

merci pour vos réponses respectives.

Cependant la méthode "déverrouiller les cellules qui doivent être modifiables et protéger la feuille de calcul" ne semble pas fonctionner sur mon fichier.

Il m'est effectivement possible de permettre que la modification de certaines cellules sélectionnées, mais il s'avère que certaines autres cellules sont modifiables aussi alors que je ne les avaient pas sélectionnées..

De plus, lorsque je protège la feuille après cette manip là, le message d'erreur est quand même présent (voir capture d'écran).

Jean Eric,

je vais me pencher sur ce code et voir si il pourrait marcher dans mon cas

Merci d'avance

capture d ecran 2019 02 04 a 17 16 18 capture d ecran 2019 02 04 a 17 21 37

Bonjour Juliak,

par rapport à ta copie d'écran, je te propose ce code VBA :

Private Sub Worksheet_Change(ByVal Target As Range)
  ActiveSheet.Unprotect "loup"
  With Target
    If .Address = "$B$25" Then
      .Offset(1) = Application.VLookup(.Value, Range("I2:K6"), 2, 0)
      .Offset(2) = Application.VLookup(.Value, Range("I2:K6"), 3, 0)
    End If
  End With
  Rows("17:18").AutoFit
  ActiveSheet.Protect "loup"
End Sub

attention : remplace "loup" par ton vrai mot de passe !

dhany

Rechercher des sujets similaires à "protection feuille vba"