XL 2016 Macro sur cellule verrouillée

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 !

MickaeL_D

XLDnaute Junior
Bonjour,

La macro présente dans le fichier joint ne me permet pas d'insérer le commentaire dans la cellule verrouillée.

Auriez-vous une solution à m'apporter svp

Merci d'avance,
 

Pièces jointes

Solution
Re,
Si vous optez pour Protect/unprotect alors cela pourrait être :
VB:
Private Sub Worksheet_Change(ByVal Target As Range)
    Dim Cellule_en_Cours As Range
    If Not Intersect(Target, Range("E23:G999")) Is Nothing Then
        For Each Cellule_en_Cours In Intersect(Target, Range("E23:G999"))
            If Not (Range("E" & Cellule_en_Cours.Row) = "" Or Range("F" & Cellule_en_Cours.Row) = "" Or Range("G" & Cellule_en_Cours.Row) = "") Then
                With Range("H" & Cellule_en_Cours.Row)
                    .Unprotect ("mot de passe")  ' A modifier
                    If (Not .Value = "#N/A" And (.Value < Range("G5").Value Or .Value > Range("D5").Value)) Or Not .Offset(0, 5).Value = "" Then
                        Do...
Bonjour Sylvanu,

Où dois-je l'insérer?


VB:
Private Sub Worksheet_Change(ByVal Target As Range)
    Dim Cellule_en_Cours As Range
    If Not Intersect(Target, Range("E23:G999")) Is Nothing Then
        For Each Cellule_en_Cours In Intersect(Target, Range("E23:G999"))
            If Not (Range("E" & Cellule_en_Cours.Row) = "" Or Range("F" & Cellule_en_Cours.Row) = "" Or Range("G" & Cellule_en_Cours.Row) = "") Then
                With Range("H" & Cellule_en_Cours.Row)
                    If (Not .Value = "#N/A" And (.Value < Range("G5").Value Or .Value > Range("D5").Value)) Or Not .Offset(0, 5).Value = "" Then
                        Do
                            .Offset(0, 5).Value = InputBox(Prompt:="Entrez un commentaire pour la valeur " & .Offset(0, -7).Value, Default:=.Offset(0, 5).Value)
                        Loop Until (Not .Offset(0, 5).Value = "" And Not .Offset(0, 5).Value = "FAUX") Or (.Value >= Range("G5").Value And .Value <= Range("D5").Value)
                    End If
                End With
            End If
        Next Cellule_en_Cours
    End If
    If Not Intersect(Target, Range("I23:K999")) Is Nothing Then
        For Each Cellule_en_Cours In Intersect(Target, Range("I23:K999"))
            If Not (Range("I" & Cellule_en_Cours.Row) = "" Or Range("J" & Cellule_en_Cours.Row) = "" Or Range("K" & Cellule_en_Cours.Row) = "") Then
                With Range("L" & Cellule_en_Cours.Row)
                    If (Not .Value = "" And (.Value < Range("N5").Value Or .Value > Range("K5").Value)) Or Not .Offset(0, 1).Value = "" Then
                        Do
                            .Offset(0, 1).Value = InputBox(Prompt:="Entrez un commentaire pour la valeur " & .Offset(0, -11).Value, Default:=.Offset(0, 1).Value)
                        Loop Until (Not .Offset(0, 1).Value = "" And Not .Offset(0, 1).Value = "FAUX") Or (.Value >= Range("N5").Value And .Value <= Range("K5").Value)
                    End If
                End With
            End If
        Next Cellule_en_Cours
    End If
End Sub
 
Re,
Si vous optez pour Protect/unprotect alors cela pourrait être :
VB:
Private Sub Worksheet_Change(ByVal Target As Range)
    Dim Cellule_en_Cours As Range
    If Not Intersect(Target, Range("E23:G999")) Is Nothing Then
        For Each Cellule_en_Cours In Intersect(Target, Range("E23:G999"))
            If Not (Range("E" & Cellule_en_Cours.Row) = "" Or Range("F" & Cellule_en_Cours.Row) = "" Or Range("G" & Cellule_en_Cours.Row) = "") Then
                With Range("H" & Cellule_en_Cours.Row)
                    .Unprotect ("mot de passe")  ' A modifier
                    If (Not .Value = "#N/A" And (.Value < Range("G5").Value Or .Value > Range("D5").Value)) Or Not .Offset(0, 5).Value = "" Then
                        Do
                            .Offset(0, 5).Value = InputBox(Prompt:="Entrez un commentaire pour la valeur " & .Offset(0, -7).Value, Default:=.Offset(0, 5).Value)
                        Loop Until (Not .Offset(0, 5).Value = "" And Not .Offset(0, 5).Value = "FAUX") Or (.Value >= Range("G5").Value And .Value <= Range("D5").Value)
                    End If
                    .protect ("mot de passe")   ' A modifier
                End With
            End If
        Next Cellule_en_Cours
    End If
    If Not Intersect(Target, Range("I23:K999")) Is Nothing Then
        For Each Cellule_en_Cours In Intersect(Target, Range("I23:K999"))
            If Not (Range("I" & Cellule_en_Cours.Row) = "" Or Range("J" & Cellule_en_Cours.Row) = "" Or Range("K" & Cellule_en_Cours.Row) = "") Then
                With Range("L" & Cellule_en_Cours.Row)
                    .Unprotect ("mot de passe")  ' A modifier
                    If (Not .Value = "" And (.Value < Range("N5").Value Or .Value > Range("K5").Value)) Or Not .Offset(0, 1).Value = "" Then
                        Do
                            .Offset(0, 1).Value = InputBox(Prompt:="Entrez un commentaire pour la valeur " & .Offset(0, -11).Value, Default:=.Offset(0, 1).Value)
                        Loop Until (Not .Offset(0, 1).Value = "" And Not .Offset(0, 1).Value = "FAUX") Or (.Value >= Range("N5").Value And .Value <= Range("K5").Value)
                    End If
                    .protect ("mot de passe")   ' A modifier
                End With
            End If
        Next Cellule_en_Cours
    End If
End Sub
 
- 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
12
Affichages
117
Réponses
8
Affichages
529
Réponses
4
Affichages
161
Réponses
5
Affichages
340
Retour