Ma macro ne s'execute pas automatiquement

Bonjour,

J'ai une macro réalisé par un Banzai64 qui marche bien.

Le souci c'est que je l'ai ensuite mis dans un autre fichier Excel, mais la problème, la macro ne s’exécute pas automatiquement.

Je dois faire exécuter et la macro et elle s’exécute.

Je vais donner le max de détail pour que ce soit clair.

J'ai un classeur de quatre feuilles.

la macro consiste à changer la couleur de police d'une zone texte situé en feuille 4, selon la valeur d'un chiffre situé en Feuille 3

Ma macro se trouve dans un module1

Voici le code de la macro (qui se trouve dans le module 1)

Sub changercouleur()

' Changercouleur Macro
Dim cellule

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

  With ActiveSheet.Shapes.Range(Array("TextBox 12", "TextBox 24"))
    '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
  End Sub

Et voici ce que j'ai mis dans la feuille 4 (la ou la macro doit s’exécuter) selon la valeur d'un chiffre situé en feuille 3

Private Sub Worksheet_Activate()
  changercouleur
End Sub

Bon, pour que la macro s’exécute, je dois faire exécuter dans la fenêtre VBA, alors qu’il faut qu'elle s’exécute automatiquement, dès l'ouverture du fichier Excel.

Merci de votre aide,

Salut,

amorapa a écrit :

alors qu’il faut qu'elle s’exécute automatiquement, dès l'ouverture du fichier Excel.

Si tu veux qu’une macro s’exécute à l’ouverture du fichier, tu dois utiliser la macro événementielle Workbook_Open sous ThisWorkbook et non pas la macro événementielle Worksheet_Activate qui ne se déclenche que lors de la sélection de cette feuille.

Maintenant il faudra en plus modifier ton code de manière à ce que seule la feuille désirée soit traitée lors de l’ouverture du fichier.

Mais sans avoir ton fichier à disposition, avec toutes les feuilles, tous les objets concernés par ta macro, c’est difficile de t’en dire plus.

Cordialement.

Merci pour ta réponse,

Mais en fait, je veux que la macro s’exécute lorsque l'on va sur la feuille.

CE que je ne comprend pas, c'est que Banzai64 a fait la macro sur un modèle que j'avais préparé.

Qui correspond à mes attentes, et que je souhaite reproduire sur d'autres fichiers ensuite.

J'ai ensuite voulu reproduire la même chose sur un autre fichier, et là, là, la macro ne s’exécute pas automatiquement. Il faut faire executer la macro pour avoir le résultat

En fait, ce que je veux, c'est reproduire le résultat de ce fichier (test)

https://www.cjoint.com/c/ELnj5MtTgEA

Selon moi tu dois déjà être plus précis dans tes demandes et ensuite il ne sert à rien de nous fournir un fichier qui fonctionne parfaitement alors que ton problème est de reprendre ces codes pour un autre fichier, ce que tu n'es pas arrivé.

Afin de voir pourquoi tu as mal utilisé / transformé ce code fonctionnant sur un fichier de base, il faudrait avoir cet autre fichier ne fonctionnant pas à disposition.

Si tu apportes une voiture qui roule parfaitement à un garagiste et que tu lui demandes pourquoi la voiture que tu as laissé chez toi ne fonctionne pas, il ne va très certainement pas pouvoir t'aider non plus

Oui

Le problème est que je ne peux pas communiquer le fichier ou j'ai transférer le code.

J'ai donné toutes les explications.

Au départ dans le fichier qui fonctionne, on avait le même problème, et il a fallu rajouter une ligne de code pour que le code s'execute automatiquement.

J'ai transféré le même code (modifier les noms des feuilles) et rajouter cette ligne de code sur la feuille ou la couleur de police change de couleur.

La macro étant dans le module1

Private Sub Worksheet_Activate()
  Changercouleur
End Sub

Voilà, le lien au départ

https://forum.excel-pratique.com/post409250.html#p409250

Pour moi, il doit y avoir un truc tout simple qui m'échappe.

amorapa a écrit :

Pour moi, il doit y avoir un truc tout simple qui m'échappe.

Selon moi également, il doit juste avoir un petit truc qui t'échappe, mais comme déjà dit - vu que ce petit truc qui t'échappe peut être 30 à 50 bidules différents - sans avoir ton fichier à disposition, c'est difficile de t'en dire plus.

Si ton fichier est confidentiel, remplace éventuellement les données sensibles par des données bidon facilement ''incrémentable'' du genre ''Client 1''. Et si ton fichier fait 10'000 lignes, n'en laisse que 5 représentatives, etc.

Ou fournis-moi ton fichier en privé.

Amicalement.

Bon,

laissez moi quelques minutes, que j'efface les choses qui ne servent à rien

merci de votre aide

En effaçant les élément de ma page, la macro fonctionne.

Je vais du coup regarder ce qui se passe sur le fichier, car je n'y comprend plus rien

je vous tiens au courant

Merci

Re voilà

voici le fichier joint en test, j'ai effacé les données, reste le prob de la macro

Par contre en effaçant tout, j'ai remarqué que la macro marche quand on changer de feuille

C'est la ligne de code pour activer la macro qui ne doit pas etre bonne, ou un truc dans le code qui n'est pas bon, car la macro semble fonctionné quand on change de feuille

https://www.cjoint.com/c/ELnl2jFd1nA

Si vous rentrer un chiffre dans la zone test en dessous de 100 % la macro ne s'execute pas, mais si vous changer de feuille, la macro s’exécute et le chiffre devient rouge

Je t’ai demandé d’être précis, mais tu l’es très peu. Utilise s’il te plait les références aux objets Excel (feuilles, plage de cellules, cellules, etc.) de manière à ce que je ne perde pas trop de temps à essayer de te suivre.

Sur la feuille ‘’TBD’’, j’ai indiqué une fois 111% en G26 et lorsque je sélectionne la feuille ‘’Calcul’’, la cellule BC4 de cette feuille est en rouge-bordeaux. Si j’indique 66% sur la feuille ‘’TBD’’ en G26, lorsque je sélectionne la feuille ‘’Calcul’’, la cellule BC4 de cette feuille est en noir.

Si ce n’est pas ce que tu veux, dis-moi précisément ce que tu désires, au lieu de faire des suppositions qui ne font qu’embrouiller tes explications.

Evite de placer des fichiers sur des sites externes si ce n’est pas nécessaire. Après avoir été compressé, ton fichier passe très bien par les outils du Forum et c’est ainsi plus simples de les lire.

A te relire.

T'est un cas toi, laisse tomber, ne t'occupes plus de rien!. Merci !!!

Sur ce Forum, deux ou trois personnes ont même prétendu que j'étais un délicat cas

3 à 4000 autres ont trouvé exactement l'aide désirée après que je leur ai posé les bonnes questions.

A toi de décider comment tu désires obtenir de l'aide gratuitement

NB : ''T'es un cas'' s'écrit sans t

Bonjour

Bonjour Yvouille

Les règles du jeu ont changées

Avant on modifiait dans une page puis on allait dans une autre page et la couleur des textes dans les formes changeait en fonction de la valeur de l'autre page ---> Utilisation de l'évènement Activate

Maintenant on reste dans la même page que les formes et on modifie une cellule de cette page, que la valeur soit renvoyée dans d'autre page est sans importance ---> Dans ce cas on doit utiliser l'événement Change

Code à copier dans le module de la feuille "TDB"

Private Sub Worksheet_Change(ByVal Target As Range)
  If Target.Address = "$G$26" Then changercouleur
End Sub

Question : Cette configuration est elle identique dans le fichier réel ?

That is the question

Bonjour Banzai,

C'est pas cela, c'est l'autre qui a voulu le fichier de mon projet, et comme je ne pouvais pas lui passer, j'ai du faire un fichier pour lui expliquer le prob, mais il ne comprenait rien.

donc, en fait,

J'ai un classeur de quatre feuilles.

la macro consiste à changer la couleur de police d'une zone texte situé en feuille 4, selon la valeur d'un chiffre situé en Feuille 3

Ma macro se trouve dans un module1

Voici le code de la macro (qui se trouve dans le module 1)

Sub changercouleur()

' Changercouleur Macro
Dim cellule

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

  With ActiveSheet.Shapes.Range(Array("TextBox 12", "TextBox 24"))
    '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
  End Sub

Et voici ce que j'ai mis dans la feuille 4 (la ou la macro doit s’exécuter) selon la valeur d'un chiffre situé en feuille 3

Private Sub Worksheet_Activate()
  changercouleur
End Sub

Bon, pour que la macro s’exécute, je dois faire exécuter dans la fenêtre VBA, alors qu’il faut qu'elle s’exécute automatiquement, dès l'ouverture du fichier Excel.

Salut Banzai,

Salut Amorapa,

Je trouve très indélicat de ta part de me traiter de ''l'autre'' alors que j'ai voulu t'offrir mon aide gratuitement.

Ce n'est pas vraiment dans l'esprit du Forum

Bonjour

Quelqu'un qui ne connait pas ton programme a besoin de renseignement supplémentaires que toi tu peux trouver élémentaires

Je ne sais pas si tu aides à distance des personnes avec des soucis, et bien ce n'est pas facile de savoir ce qu'ils veulent exactement, d'où des questions qui peuvent paraitre élémentaires

Donc il faut se mettre à la place de quelqu'un qui découvrent ton fichier, et ne pas oublier que c'est toi le demandeur, et ça peut te paraitre absurde mais c'est à toi d'expliquer clairement ce que tu désires

D’abord la vie est trop courte pour se fâcher

As tu essayé de mettre la macro comme j'ai indiqué dans le message précédent ?

Oui,

Mes zones texte sont sur la feuille TDB

Mon chiffre qui détermine la couleur de la police dans les zones texte de la feuille TDB, se trouve dans la feuille calcul (BC4).

Le chiffre qui se trouve sur la feuille TDB peut varier selon les filtres utiliser dans la feuille TDB.

Donc, lorsque l'on est sur la feuille TDB, les chiffres dans les zones textes doivent varier de couleur, selon le chiffre de la feuille calcul.

J'ai remarqué que la macro s'execute que lorsque je passe de la feuille TDB à la feuille calcul.

Or je voudrais qu'elle s'eecute automatiquement, car la feuille calcul sera par la suite invisible

Donc, le code qui se trouve dans le module

Sub changercouleur()
'
' Changercouleur Macro
Dim cellule

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

  With ActiveSheet.Shapes.Range(Array("ZoneTexte 12", "TextBox 24"))
    '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
  End Sub

'

Et le code qui se trouve sur la feuille TDB

Private Sub Worksheet_Activate()

changercouleur

End Sub

Voilà

Merci

Bonjour

On a du mal à se comprendre

Tu dis

amorapa a écrit :

Et le code qui se trouve sur la feuille TDB

Private Sub Worksheet_Activate()

changercouleur

End Sub

Moi je te dis d'ajouter la macro que j'ai postée dans un message précédent, donc dans la feuille TDB tu dois avoir

Private Sub Worksheet_Activate()
changercouleur
End Sub
Private Sub Worksheet_Change(ByVal Target As Range)
  If Target.Address = "$G$26" Then changercouleur
End Sub

A tester

Oui, je vais tester, mais je comprend pas pourquoi

 
      If Target.Address = "$G$26" Then changercouleur

le $G$26 correspond au chiffre qui détermine la couleur des zones texte sur la feuille TDB

Merci


Oui Banzai,

le fichier que vous m'avez envoyé fonctionne.

Sauf que le chiffre que j'ai mis, c'est parce que youvin ne comprenait pas le problème, et j'ai mis un chiffre sur la feuille TDB qui renvois à ma feuille calcul qui détermine la couleur des zones texte (police des chiffres situées dedan).

Mais en réalité, il n'y a qu'un seul chiffre qui détermine la couleur de la police des zones textes, c'est celui se trouvant sur la cellule BC4 de la feuille de calcul.

C'est pour cela, que je ne comprenais pas le $G$26.

Donc, quel est le code que je dois rentrer pour mon chiffre qui se situe sur Calcul!BC4,

Merci, car ce chiffre se situe sur la feuille calcul et non sur la feuille TDB

Ce chiffre (feuille calcul) détermine la couleur de la police des zones texte (12 et 24) de la feuille TDB.

Le chiffre G26 de la feuille TDB n'existe pas sinon.

Désolé, c'était pou youvin, qui avait du mal à comprendre

Banzai64 a écrit :

Bonjour

On a du mal à se comprendre

Tu dis

amorapa a écrit :

Et le code qui se trouve sur la feuille TDB

Private Sub Worksheet_Activate()

changercouleur

End Sub

Moi je te dis d'ajouter la macro que j'ai postée dans un message précédent, donc dans la feuille TDB tu dois avoir

Private Sub Worksheet_Activate()
changercouleur
End Sub
Private Sub Worksheet_Change(ByVal Target As Range)
  If Target.Address = "$G$26" Then changercouleur
End Sub

A tester

Voilà,

Donc la macro ne marche pas, et j'ai la fenêtre macro qui s'ouvre et me demande quel macro (changer couleur).

Mais dans mon fichier, la cellule G26 de la feuille TDB n'existe pas.

Que mon chiffre Calcul!$BC$4

et mes zones textes &2 et 24 de la feuille TDB

2015 12 13 18h47 28
Rechercher des sujets similaires à "macro execute pas automatiquement"