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,
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.amorapa a écrit :alors qu’il faut qu'elle s’exécute automatiquement, dès l'ouverture du fichier Excel.
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)
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