Cette macro ne fonctionne plus sur feuill protégée

Bonsoir,

Cette macro m'aura a rendu dingue, que des soucis ...

Elle fonctionne mais dès que je protège la feuille, cela me mais un bug.

Je ne sais plus quoi faire, que des soucis avec cette macro.

C'est une macro dans un module déjà

Sub changercouleur1()
' Changercouleur Macro
Application.ScreenUpdating = False
Dim cellule

cellule = Sheets("Calcul").Range("BC4")

  With Sheets("TDB").Shapes.Range(Array("TextBox 12"))
    'With ActiveSheet.Shapes.Range(Array("TextBox 12","TextBox 24" ))

      If cellule < 1 Then
        With .TextFrame2.TextRange.Font.Fill
          .Visible = msoTrue
          .ForeColor.ObjectThemeColor = msoThemeColorAccent2
          .ForeColor.TintAndShade = 0
          .ForeColor.Brightness = 0
          .Transparency = 0
          .Solid
        End With
      Else
        With .TextFrame2.TextRange.Font.Fill
          .Visible = msoTrue
          .ForeColor.ObjectThemeColor = msoThemeColorText1
          .ForeColor.TintAndShade = 0
          .ForeColor.Brightness = 0.150000006
          .Transparency = 0
          .Solid
        End With
      End If
    End With

elle est appelée à partir de la feuille TAB

Mais dès que je protège la feuille TAB, c'est plus bon, ca bug

de plus j'ai l'impression que lorsque je vais dans un autre onglet, ca bug aussi du coup

Vraiment, j'aurai eu que des problèmes avec cette macro

Si vous voyez ce qui ne va pas, aidez moi, car vraiment, je n'en peux plus

Tout ca pour changer un chiffre de couleur dans une zone texte


Il me met en jaune cette ligne de code

.ForeColor.ObjectThemeColor = msoThemeColorAccent2

Suggestion :

  • au début de la macro, lance une procédure enlevant la protection sur la ou les feuilles incriminées
  • à la fin de la macro, lance une autre procédure remettant la protection...

Le tout est très facile à rédiger avec l'enregistreur de macro...

Cordialement, Daniel

J'ai rajouté une ligne de code,

Ca semblait marché, mais il y a encore un problème

Voilà le code avec la nouvelle ligne

Sub changercouleur1()
' Changercouleur Macro
Application.ScreenUpdating = False
ActiveSheet.Protect DrawingObjects:=False
Dim cellule

cellule = Sheets("Calcul").Range("BC4")

  With Sheets("TDB").Shapes.Range(Array("TextBox 12"))
    'With ActiveSheet.Shapes.Range(Array("TextBox 12","TextBox 24" ))

      If cellule < 1 Then
        With .TextFrame2.TextRange.Font.Fill
          .Visible = msoTrue
          .ForeColor.ObjectThemeColor = msoThemeColorAccent2
          .ForeColor.TintAndShade = 0
          .ForeColor.Brightness = 0
          .Transparency = 0
          .Solid
        End With
      Else
        With .TextFrame2.TextRange.Font.Fill
          .Visible = msoTrue
          .ForeColor.ObjectThemeColor = msoThemeColorText1
          .ForeColor.TintAndShade = 0
          .ForeColor.Brightness = 0.150000006
          .Transparency = 0
          .Solid
        End With
      End If
    End With
  ActiveSheet.Protect DrawingObjects:=True
  End Sub

la nouvelle ligne au début et à la fin de la macro

 ActiveSheet.Protect DrawingObjects:=False

macro
 ActiveSheet.Protect DrawingObjects:=True

Mais le souci

C'est que lorsque je vais sur une autre feuille non protégée, la maco bug et me protège la feuille

Je n'y comprend plus rien, déjà que je suis débutant, alors c'est pas gagné !!!


j'ai rajouté cette ligne de code au début et à la fin , ca a l'air d'être bon

Sheets("TDB").Protect DrawingObjects:=False

MACRO
Sheets("TDB").Protect DrawingObjects:=True
Rechercher des sujets similaires à "cette macro fonctionne feuill protegee"