Protéger objets mais autoriser commentaires VBA

Bonjour au forum,

Tout d'abord, bonne année !

Je cherche à protéger une cinquantaine de feuilles via une macro VBA, en protégeant les objets (qui sont des formes dans mon cas) MAIS en autorisant l'ajout de commentaires dans certaines cellules (Plage A12:L45).

J'utilisais jusqu'à maintenant ces macros toutes simples pour la protection mais dans ce cas là, les commentaires sont désactivés :

Sub Déprotéger()

Application.ScreenUpdating = False

 ' Déprotection automatique de toutes les feuilles du classeur
 For i = 1 To Sheets.Count
Sheets(i).Unprotect Password:="mdp"
 Next i

 Application.ScreenUpdating = True

 End Sub

 Sub Protéger()

Application.ScreenUpdating = False

 ' Protection automatique de toutes les feuilles du classeur
 For i = 1 To Sheets.Count
Sheets(i).Protect Password:="mdp", DrawingObjects:=False, Contents:=True, Scenarios:=False
 Next i

 Application.ScreenUpdating = True

 End Sub

Or, si je passe de :

DrawingObjects:=False

à

DrawingObjects:=True

, je peux ajouter des commentaires mais mes formes sont modifiables...

Quelqu'un aurait-il une astuce ?

Bonsoir Nico,

En effet, pour EXCEL, un commentaire est dans une "shape", comme une forme. Quand on protège la feuille avec le paramètre "DrawingObjects:=true", on protège tout, formes et commentaires.

J'ai une suggestion, mais, je l'avoue, pas très élégante:

  • Tu protèges les feuilles avec "DrawingObjects:=True"
  • Tu créés une userform "commentForm" avec une textbox et un bouton.
  • Tu créés une macro "AddComment" qui ouvre ton userform.
  • Dans le code click du bouton de "Commentform", tu colles :
    Dim oRange As Range

    Set oRange = ActiveCell
    ActiveCell.Worksheet.Unprotect Password:="mdp"
    If oRange.Comment Is Nothing Then
        oRange.AddComment
        oRange.Comment.Visible = False
        oRange.Comment.Text Text:=Me.txtComment.Text
    End If
    ActiveCell.Worksheet.Protect Password:="mdp", DrawingObjects:=True, Contents:=True, Scenarios:=False
    Me.txtComment = ""
    CommentForm.Hide

- Tu te positionnes sur la cellule dans laquelle tu veux introduire un commentaire et déclenche la macro "AddComment".

Je joins un exemple.

46classeur1.xlsm (27.33 Ko)

Bonsoir Gérard,

Merci beaucoup pour ta réponse, c’est une excellente idée, très astucieuse !

Je vais faire comme cela, ça me convient très bien

Excellente semaine à toi.

Rechercher des sujets similaires à "proteger objets autoriser commentaires vba"