Autostart Macro VBA & Timer

Bonjour à tous !

J'ai la macro suivante sur Excel :

Sub defile()

t = [a34] ''texte

n = 0

Do While n < 50

Code:

t = Right(t, Len(t) - 1) & Left(t, 1)

[B1] = t

w = 0.3

temp = Timer

Do While Timer < temp + w

DoEvents

Loop

n = n + 1

Loop

End Sub

Et 2 questions à ce sujet :

1- Comment shooter le Timer et que mettre à la place pour que le défilement soit permanent et non temporaire ?

2- Comment lancer automatiquement cette macro à l'ouverture du classeur ? (Autrement dire comment intégrer" Private Sub Worksheet_Change(ByVal Target As Range" dans cette programmation)

Merci pour vos réponses !

Bonjour,

Réponse 1 : supprimer le compteur "n"

Réponse 2 : Private Sub Worksheet_Change n'a rien à voir avec l'ouverture du classeur, ça lance la macro au changement de valeur d'une cellule.

Pour lancer à l'ouverture du classeur ce serait un Private Sub Workbook_Open()

Le problème avec celui là, c'est que tu ne lance la macro qu'à l'ouverture, donc si tu as une condition pour mettre fin à la boucle, tu ne sais pas la relancer ensuite...

Je te propose donc plutôt de lancer la macro à l'activation de la feuille, et la stopper au changement de feuille.

Private Sub Worksheet_Activate()
t = [a34] 'texte

Do While ActiveSheet.Name = "Feuil1"
Code:
t = Right(t, Len(t) - 1) & Left(t, 1)
[B1] = t
w = 0.3
temp = Timer
Do While Timer < temp + w
DoEvents
Loop
Loop
End Sub

A placer dans le code de ta feuille, et modifier la ligne

Do While ActiveSheet.Name = "Feuil1"

Si ta feuille ne s'appelle pas Feuil1

Amicalement,

Sylvain

Merci !

Mais au risque de paraître ignorant en VBA, ce que je suis réellement, est-ce que ça donnerait ce qui est dessous ? Sinon comment intégrer l'autostart Private Sub activate avec le Sub Defile ?

Sub defile()

t = [a34] ''texte

Do While ActiveSheet.Name = "Feuil1"

Code:

t = Right(t, Len(t) - 1) & Left(t, 1)

[B1] = t

w = 0.3

temp = Timer

Do While Timer < temp + w

DoEvents

Loop

Loop

End Sub

Private Sub Worksheet_Activate()

t = [a34] ''texte

Do While ActiveSheet.Name = "Feuil1"

Code:

t = Right(t, Len(t) - 1) & Left(t, 1)

[B1] = t

w = 0.3

temp = Timer

Do While Timer < temp + w

DoEvents

Loop

Loop

End Sub

Bonjour à tous,

virago, tu aurais du continuer sur ce fil !

https://www.excel-pratique.com/forum/viewtopic.php?t=6748

amicalement

Claude.

virago a écrit :

est-ce que ça donnerait ce qui est dessous ?

Non, pour un évènement automatique, tu oublies les modules, et les Sub Macro()...

Ton code doit être collé dans la feuille, comme sur l'image ci-après (que j'ai postée ce matin sur un autre sujet) : Modif efface

Donc toi au lieu d'avoir "Change", tu auras "Activate"

Tu ne dois coller que le code que je t'avais mis, l'ancien tu l'oublies

Tout fonctionne ... Merci !

Mais sensiblement différemment puisque j'ai fait comme suit :

Sur Feuil1 :

Sub defile()

t = [a34] ''texte

Do While ActiveSheet.Name = "Feuil1"

Code:

t = Right(t, Len(t) - 1) & Left(t, 1)

[B1] = t

w = 0.3

temp = Timer

Do While Timer < temp + w

DoEvents

Loop

Loop

End Sub

Private Sub Worksheet_Activate()

t = [a34] ''texte

Do While ActiveSheet.Name = "Feuil1"

Code:

t = Right(t, Len(t) - 1) & Left(t, 1)

[B1] = t

w = 0.3

temp = Timer

Do While Timer < temp + w

DoEvents

Loop

Loop

End Sub

Et sur This Workbook :

Private Sub Workbook_Open()

t = [a34] ''texte

Do While ActiveSheet.Name = "Feuil1"

Code:

t = Right(t, Len(t) - 1) & Left(t, 1)

[B1] = t

w = 0.3

temp = Timer

Do While Timer < temp + w

DoEvents

Loop

Loop

End Sub

Ma macro commence donc dès l'ouverture du fichier et supporte le changement de feuille sans avoir besoin de la redémarrer !

Encore merci et bonne journée !

Re,

Sur Feuil1, toute la partie

Sub defile()
...
...
End Sub

ne te sert à rien.

Ensuite le Workbook_Open() en plus du WorkSheet_Activate() ne te sert à rien non plus, il te faut choisir soit l'un soit l'autre...

En clair : la solution que je te proposais active le défilement du texte seulement quand tu visualises là feuille où il se trouve (il me semblait que ça suffisait...)

Si tu veux que ça défile en permanence, quelle que soit la feuille active, alors dans ThisWorkbook colle ce code (et efface celui de Feuil1) :

Private Sub Workbook_Open()
t = [a34]

Do
t = Right(t, Len(t) - 1) & Left(t, 1)
[B1] = t
w = 0.3
temp = Timer
Do While Timer < temp + w
DoEvents
Loop
Loop

End Sub

Celui là te fera défiler le texte en B1 de toutes les feuilles, je sais pas si c'est ce que tu voulais... ?

Rechercher des sujets similaires à "autostart macro vba timer"