Ceci est une page optimisée pour les mobiles. Cliquez sur ce texte pour afficher la vraie page.

VBA Protect Sheet

  • 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 qui tourne et qui met en du texte en filigrane mais quand je protégé la feuille cela ne fonctionne plus du coup j'ai ajouté le code ActiveSheet.Unprotectet ActiveSheet.protect

Le problème est quand la macro ce lance et prend du temps.
Y a il un moment plus simple pour le faire.

merci de l'aide

A+



VB:
Private Sub Worksheet_Change(ByVal Target As Range)
Dim a, b, i
a = Array("C11", "C12", "c14", "C15", "C17", "C18", "C19", "C20", "C21", "C22", "C23", "C24", "F11", "F16", "F18", "F19", "F20", "F21", "F22", "F23", "F24", "I11") 'à adapter
b = Array("XXXX", "XXXX", "xxxx@XXX.com", "Select", "Select", "Select", "Select", "Select", "Select", "Select", "Select", "XXXX", "Select", "Paste the MD5 result from the Switch", "XXXX", "10.X.1.1xx", "Select", "10.X.1.x", "40x", "10x" & "," & "20x" & "," & "30x", "10x,20x,30x,50x", "Select")        'à adapter
For i = 0 To UBound(a)
    b(i) = Replace(b(i), ",", Chr(130))
    If Range(a(i)) = "" Then
        ActiveSheet.Unprotect "xxx"
        Range(a(i)).Font.ColorIndex = 16
        Range(a(i)).Font.Bold = False 'non gras
        ActiveSheet.Protect "xxx"
       Range(a(i)) = b(i)
    ElseIf Range(a(i)) <> b(i) Then
        ActiveSheet.Unprotect "xxx"
        Range(a(i)).Font.ColorIndex = 1
        Range(a(i)).Font.Bold = True 'gras, facultatif
        ActiveSheet.Protect "xxx"
    End If
Next
 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
 
Bonjour,

.UnProtect : juste avant votre boucle For (ou en debut de macro événementielle)

Et .Protect juste après (ou en fin de macro événementielle)

Bonne protection
 
- 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 Export données
Réponses
4
Affichages
507
Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…