• Initiateur de la discussion Initiateur de la discussion enzo_s
  • Date de début Date de début

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 !

enzo_s

XLDnaute Junior
Bonjour,

J'ai une macro "CleanFormAccessSwitch" qui clear les cellules.
Ensuite, j'en ai une autre qui met du texte en filigrane "C11"

Quand exécute la macro "CleanFormAccessSwitch" au début ma feuilles est bien protégée et toutes les cellules bien vidées avec le texte en filigrane Le problème est dès que je complet une cellule, il déverrouille directement la feuille..

Je dois avoir un souci avec ou je place le 'ActiveSheet.Protect "123" dans le "Private Sub Worksheet_Change" .. j'ai testé plusieurs place sans succès.

Code:
Sub CleanFormAccessSwitch()
'
ActiveSheet.Unprotect "123" 

On Error Resume Next
    If vbYes = MsgBox("Are you sure want to clean the form ?", _
                      vbExclamation + vbYesNo, "Are you sure?") Then
    Range("c11:c15").ClearContents
    Range("c17:c24").ClearContents
    End If
ActiveSheet.Protect "123"
End Sub

VB:
Private Sub Worksheet_Change(ByVal Target As Range)
ActiveSheet.Unprotect "123"
Dim a, b, i
a = Array("C11", ) 'à adapter
b = Array("CHVSGRI")        'à adapter
For i = 0 To UBound(a)
'ActiveSheet.Unprotect "123"
    b(i) = Replace(b(i), ",", Chr(130))
    If Range(a(i)) = "" Then
        Range(a(i)).Font.ColorIndex = 16
        Range(a(i)).Font.Bold = False 'non gras
        Range(a(i)) = b(i)
    ElseIf Range(a(i)) <> b(i) Then
        Range(a(i)).Font.ColorIndex = 1
        Range(a(i)).Font.Bold = True 'gras, facultatif
        End If
'ActiveSheet.Protect "123"
Next
'ActiveSheet.Protect "123"
If Application.Intersect(Target, Range("F12:F13")) Is Nothing Then Exit Sub
Select Case Target.Address
    Case "$F$12"
        Application.EnableEvents = False
        Range("F13") = IIf(Target.Value = "Yes", "No", "Yes")
    Case "$F$13"
        Application.EnableEvents = False
        Range("F12") = IIf(Target.Value = "Yes", "No", "Yes")
End Select
Application.EnableEvents = True
End Sub
 
Dernière édition:
- 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

  • Question Question
Microsoft 365 worksheet_change
Réponses
29
Affichages
254
  • Question Question
Microsoft 365 Probléme VBA
Réponses
8
Affichages
234
  • Question Question
Microsoft 365 Export données
Réponses
4
Affichages
506
Réponses
4
Affichages
364
Retour