XL 2016 Macro sur cellule verrouillée

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

  • Test3.xlsm
    28.6 KB · Affichages: 13
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...

MickaeL_D

XLDnaute Junior
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
 

sylvanu

XLDnaute Barbatruc
Supporter XLD
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
 

Discussions similaires

Statistiques des forums

Discussions
312 344
Messages
2 087 447
Membres
103 546
dernier inscrit
mohamed tano