J'ai créé une macro qui s'exécute en boucle grâce à Do...Loop.
Je voulais faire un bouton pour l'arrêter, mais une fois qu'elle est
lancée... Ben ma fois, elle tourne en boucle, et rien à faire, je n'ai plus
la main,je suis obligée de forcer Excel à quitter par le gestionnaire des
tâches.
Comment faire pour l'arrêter ?
C'est ce type de truc que j'utilise (en fait je voulais pour m'amuser
refaire l'écran Matrix avec les colonnes de caractères qui descendent...)
Do
Range("B48").Select
Selection.Cut Destination:=Range("B1")
Range("B47").Select
Selection.Cut Destination:=Range("B48")
Range("B46").Select
'Etc... jusqu'à :
Range("B1").Select
Selection.Cut Destination:=Range("B2")
Loop
End Sub
D'autre part, y a-t-il moyen de ralentir l'exécution de la macro, de façon à
ce que visuellement les caractères "tombent" moins vite ?
Bon je sais que c'est juste pour m'amuser, et surtout pour apprendre, et que
ça sert à rien !! :-)
Cette action est irreversible, confirmez la suppression du commentaire ?
Signaler le commentaire
Veuillez sélectionner un problème
Nudité
Violence
Harcèlement
Fraude
Vente illégale
Discours haineux
Terrorisme
Autre
michdenis
Bonjour Laure,
Utilise un nouveau classeur, dans la Feui1 , de A1:A5, inscris un mot
Copie tout ce qui suit dans un module standard de ton classeur : exécute la procédur "LeFun"
Tu veux autre chose ? à adapter à ton application.
'Déclaration API : Tout en haut du module standard : Public Declare Function GetTickCount Lib "kernel32" () As Long '------------------------------ Sub SlowDown(Millisec As Long) Dim old As Long old = GetTickCount While GetTickCount - old < Millisec DoEvents Wend End Sub
'------------------------------ Sub LeFun()
With Worksheets("Feuil1") Set Rg = .Range("A1:A5") For Each cel In Rg If cel <> "" Then nb = cel.Characters.Count For A = 1 To nb C = .Range("A1").Characters(A, 1).Text cel.Offset(, 1) = cel.Offset(, 1) & C SlowDown 250 'un quart de seconde, à adapter Next End If Next End With
End Sub '------------------------------
Salutations!
"Laure" a écrit dans le message de news: 435664f9$0$989$ Bonjour,
J'ai créé une macro qui s'exécute en boucle grâce à Do...Loop. Je voulais faire un bouton pour l'arrêter, mais une fois qu'elle est lancée... Ben ma fois, elle tourne en boucle, et rien à faire, je n'ai plus la main,je suis obligée de forcer Excel à quitter par le gestionnaire des tâches.
Comment faire pour l'arrêter ?
C'est ce type de truc que j'utilise (en fait je voulais pour m'amuser refaire l'écran Matrix avec les colonnes de caractères qui descendent...)
Do Range("B48").Select Selection.Cut Destination:=Range("B1") Range("B47").Select Selection.Cut Destination:=Range("B48") Range("B46").Select 'Etc... jusqu'à : Range("B1").Select Selection.Cut Destination:=Range("B2") Loop End Sub
D'autre part, y a-t-il moyen de ralentir l'exécution de la macro, de façon à ce que visuellement les caractères "tombent" moins vite ?
Bon je sais que c'est juste pour m'amuser, et surtout pour apprendre, et que ça sert à rien !! :-)
Merci d'avance !!
Laure
Bonjour Laure,
Utilise un nouveau classeur, dans la Feui1 , de A1:A5, inscris un mot
Copie tout ce qui suit dans un module standard de ton classeur :
exécute la procédur "LeFun"
Tu veux autre chose ? à adapter à ton application.
'Déclaration API : Tout en haut du module standard :
Public Declare Function GetTickCount Lib "kernel32" () As Long
'------------------------------
Sub SlowDown(Millisec As Long)
Dim old As Long
old = GetTickCount
While GetTickCount - old < Millisec
DoEvents
Wend
End Sub
'------------------------------
Sub LeFun()
With Worksheets("Feuil1")
Set Rg = .Range("A1:A5")
For Each cel In Rg
If cel <> "" Then
nb = cel.Characters.Count
For A = 1 To nb
C = .Range("A1").Characters(A, 1).Text
cel.Offset(, 1) = cel.Offset(, 1) & C
SlowDown 250 'un quart de seconde, à adapter
Next
End If
Next
End With
End Sub
'------------------------------
Salutations!
"Laure" <nospam@nospam.fr> a écrit dans le message de news: 435664f9$0$989$8fcfb975@news.wanadoo.fr...
Bonjour,
J'ai créé une macro qui s'exécute en boucle grâce à Do...Loop.
Je voulais faire un bouton pour l'arrêter, mais une fois qu'elle est
lancée... Ben ma fois, elle tourne en boucle, et rien à faire, je n'ai plus
la main,je suis obligée de forcer Excel à quitter par le gestionnaire des
tâches.
Comment faire pour l'arrêter ?
C'est ce type de truc que j'utilise (en fait je voulais pour m'amuser
refaire l'écran Matrix avec les colonnes de caractères qui descendent...)
Do
Range("B48").Select
Selection.Cut Destination:=Range("B1")
Range("B47").Select
Selection.Cut Destination:=Range("B48")
Range("B46").Select
'Etc... jusqu'à :
Range("B1").Select
Selection.Cut Destination:=Range("B2")
Loop
End Sub
D'autre part, y a-t-il moyen de ralentir l'exécution de la macro, de façon à
ce que visuellement les caractères "tombent" moins vite ?
Bon je sais que c'est juste pour m'amuser, et surtout pour apprendre, et que
ça sert à rien !! :-)
Utilise un nouveau classeur, dans la Feui1 , de A1:A5, inscris un mot
Copie tout ce qui suit dans un module standard de ton classeur : exécute la procédur "LeFun"
Tu veux autre chose ? à adapter à ton application.
'Déclaration API : Tout en haut du module standard : Public Declare Function GetTickCount Lib "kernel32" () As Long '------------------------------ Sub SlowDown(Millisec As Long) Dim old As Long old = GetTickCount While GetTickCount - old < Millisec DoEvents Wend End Sub
'------------------------------ Sub LeFun()
With Worksheets("Feuil1") Set Rg = .Range("A1:A5") For Each cel In Rg If cel <> "" Then nb = cel.Characters.Count For A = 1 To nb C = .Range("A1").Characters(A, 1).Text cel.Offset(, 1) = cel.Offset(, 1) & C SlowDown 250 'un quart de seconde, à adapter Next End If Next End With
End Sub '------------------------------
Salutations!
"Laure" a écrit dans le message de news: 435664f9$0$989$ Bonjour,
J'ai créé une macro qui s'exécute en boucle grâce à Do...Loop. Je voulais faire un bouton pour l'arrêter, mais une fois qu'elle est lancée... Ben ma fois, elle tourne en boucle, et rien à faire, je n'ai plus la main,je suis obligée de forcer Excel à quitter par le gestionnaire des tâches.
Comment faire pour l'arrêter ?
C'est ce type de truc que j'utilise (en fait je voulais pour m'amuser refaire l'écran Matrix avec les colonnes de caractères qui descendent...)
Do Range("B48").Select Selection.Cut Destination:=Range("B1") Range("B47").Select Selection.Cut Destination:=Range("B48") Range("B46").Select 'Etc... jusqu'à : Range("B1").Select Selection.Cut Destination:=Range("B2") Loop End Sub
D'autre part, y a-t-il moyen de ralentir l'exécution de la macro, de façon à ce que visuellement les caractères "tombent" moins vite ?
Bon je sais que c'est juste pour m'amuser, et surtout pour apprendre, et que ça sert à rien !! :-)
Merci d'avance !!
Laure
Jacques93
Bonjour Laure,
Par exemple :
Private Declare Sub Sleep Lib "kernel32" (ByVal dwMilliseconds As Long) Dim bStop As Boolean
Private Sub CommandButton1_Click() bStop = False Do Range("B48").Select Selection.Cut Destination:=Range("B1") For i = 47 To 1 Step -1 Range("B" & i).Select Selection.Cut Destination:=Range("B" & i + 1) DoEvents Sleep 100 If bStop Then Exit Do Next i Loop End Sub
Private Sub Worksheet_SelectionChange(ByVal Target As Range) If Intersect(Target, Range("B1:B48")) Is Nothing Then bStop = True End If
End Sub
Bonjour,
J'ai créé une macro qui s'exécute en boucle grâce à Do...Loop. Je voulais faire un bouton pour l'arrêter, mais une fois qu'elle est lancée... Ben ma fois, elle tourne en boucle, et rien à faire, je n'ai plus la main,je suis obligée de forcer Excel à quitter par le gestionnaire des tâches.
Comment faire pour l'arrêter ?
C'est ce type de truc que j'utilise (en fait je voulais pour m'amuser refaire l'écran Matrix avec les colonnes de caractères qui descendent...)
Do Range("B48").Select Selection.Cut Destination:=Range("B1") Range("B47").Select Selection.Cut Destination:=Range("B48") Range("B46").Select 'Etc... jusqu'à : Range("B1").Select Selection.Cut Destination:=Range("B2") Loop End Sub
D'autre part, y a-t-il moyen de ralentir l'exécution de la macro, de façon à ce que visuellement les caractères "tombent" moins vite ?
Bon je sais que c'est juste pour m'amuser, et surtout pour apprendre, et que ça sert à rien !! :-)
Merci d'avance !!
Laure
-- Cordialement,
Jacques.
Bonjour Laure,
Par exemple :
Private Declare Sub Sleep Lib "kernel32" (ByVal dwMilliseconds As Long)
Dim bStop As Boolean
Private Sub CommandButton1_Click()
bStop = False
Do
Range("B48").Select
Selection.Cut Destination:=Range("B1")
For i = 47 To 1 Step -1
Range("B" & i).Select
Selection.Cut Destination:=Range("B" & i + 1)
DoEvents
Sleep 100
If bStop Then Exit Do
Next i
Loop
End Sub
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
If Intersect(Target, Range("B1:B48")) Is Nothing Then
bStop = True
End If
End Sub
Bonjour,
J'ai créé une macro qui s'exécute en boucle grâce à Do...Loop.
Je voulais faire un bouton pour l'arrêter, mais une fois qu'elle est
lancée... Ben ma fois, elle tourne en boucle, et rien à faire, je n'ai plus
la main,je suis obligée de forcer Excel à quitter par le gestionnaire des
tâches.
Comment faire pour l'arrêter ?
C'est ce type de truc que j'utilise (en fait je voulais pour m'amuser
refaire l'écran Matrix avec les colonnes de caractères qui descendent...)
Do
Range("B48").Select
Selection.Cut Destination:=Range("B1")
Range("B47").Select
Selection.Cut Destination:=Range("B48")
Range("B46").Select
'Etc... jusqu'à :
Range("B1").Select
Selection.Cut Destination:=Range("B2")
Loop
End Sub
D'autre part, y a-t-il moyen de ralentir l'exécution de la macro, de façon à
ce que visuellement les caractères "tombent" moins vite ?
Bon je sais que c'est juste pour m'amuser, et surtout pour apprendre, et que
ça sert à rien !! :-)
Private Declare Sub Sleep Lib "kernel32" (ByVal dwMilliseconds As Long) Dim bStop As Boolean
Private Sub CommandButton1_Click() bStop = False Do Range("B48").Select Selection.Cut Destination:=Range("B1") For i = 47 To 1 Step -1 Range("B" & i).Select Selection.Cut Destination:=Range("B" & i + 1) DoEvents Sleep 100 If bStop Then Exit Do Next i Loop End Sub
Private Sub Worksheet_SelectionChange(ByVal Target As Range) If Intersect(Target, Range("B1:B48")) Is Nothing Then bStop = True End If
End Sub
Bonjour,
J'ai créé une macro qui s'exécute en boucle grâce à Do...Loop. Je voulais faire un bouton pour l'arrêter, mais une fois qu'elle est lancée... Ben ma fois, elle tourne en boucle, et rien à faire, je n'ai plus la main,je suis obligée de forcer Excel à quitter par le gestionnaire des tâches.
Comment faire pour l'arrêter ?
C'est ce type de truc que j'utilise (en fait je voulais pour m'amuser refaire l'écran Matrix avec les colonnes de caractères qui descendent...)
Do Range("B48").Select Selection.Cut Destination:=Range("B1") Range("B47").Select Selection.Cut Destination:=Range("B48") Range("B46").Select 'Etc... jusqu'à : Range("B1").Select Selection.Cut Destination:=Range("B2") Loop End Sub
D'autre part, y a-t-il moyen de ralentir l'exécution de la macro, de façon à ce que visuellement les caractères "tombent" moins vite ?
Bon je sais que c'est juste pour m'amuser, et surtout pour apprendre, et que ça sert à rien !! :-)
Merci d'avance !!
Laure
-- Cordialement,
Jacques.
Clément Marcotte
Bonjour,
En principe, Ctrl-Break ou Ctrl-Pause permet d'arrêter une macro en cours d'exécution, bien que des fois l'arrêt n'est pas instantané.
D'un autre côté, il y a moyen de mettre une condition, soit dans le do, soit dans le loop, mais pas les deux en même temps.
Quelques exemples pas testés et en vrac.
Une "fausse boucle comptée". (Pour ce genre d'histoire, une boucle For est probablement plus efficace.) La boucle tourne tant que la condition est remplie.
Ne sera jamais exécutée si x = 11 au lieu de 0
x = 0 do while x <= 10 x = x+ 1 autres instructions ici loop
Sera exécutée au moins une fois, même si x = 11, parce que le test est en fin de boucle x= 11 do instructions loop while x<= 11
Une boucle tant qu'une condition n'est pas remplie:
Va être exécutée 11 fois x=0 do until x> 10 instructions x = x+1 loop
Ne sera jamais exécutée, parce que 11 est déjà plus grand que 10
x do until x>10 instructions x = x + 1 loop
et puis tu peux même ajouter un exit do pour sortir de la boucle en cours de route, si nécessaire.
x = 11
"Laure" a écrit dans le message de news: 435664f9$0$989$
Bonjour,
J'ai créé une macro qui s'exécute en boucle grâce à Do...Loop. Je voulais faire un bouton pour l'arrêter, mais une fois qu'elle est lancée... Ben ma fois, elle tourne en boucle, et rien à faire, je n'ai plus la main,je suis obligée de forcer Excel à quitter par le gestionnaire des tâches.
Comment faire pour l'arrêter ?
C'est ce type de truc que j'utilise (en fait je voulais pour m'amuser refaire l'écran Matrix avec les colonnes de caractères qui descendent...)
Do Range("B48").Select Selection.Cut Destination:=Range("B1") Range("B47").Select Selection.Cut Destination:=Range("B48") Range("B46").Select 'Etc... jusqu'à : Range("B1").Select Selection.Cut Destination:=Range("B2") Loop End Sub
D'autre part, y a-t-il moyen de ralentir l'exécution de la macro, de façon à ce que visuellement les caractères "tombent" moins vite ?
Bon je sais que c'est juste pour m'amuser, et surtout pour apprendre, et que ça sert à rien !! :-)
Merci d'avance !!
Laure
Bonjour,
En principe, Ctrl-Break ou Ctrl-Pause permet d'arrêter une macro en cours
d'exécution, bien que des fois l'arrêt n'est pas instantané.
D'un autre côté, il y a moyen de mettre une condition, soit dans le do, soit
dans le loop, mais pas les deux en même temps.
Quelques exemples pas testés et en vrac.
Une "fausse boucle comptée". (Pour ce genre d'histoire, une boucle For est
probablement plus efficace.)
La boucle tourne tant que la condition est remplie.
Ne sera jamais exécutée si x = 11 au lieu de 0
x = 0
do while x <= 10
x = x+ 1
autres instructions ici
loop
Sera exécutée au moins une fois, même si x = 11, parce que le test est en
fin de boucle
x= 11
do
instructions
loop while x<= 11
Une boucle tant qu'une condition n'est pas remplie:
Va être exécutée 11 fois
x=0
do until x> 10
instructions
x = x+1
loop
Ne sera jamais exécutée, parce que 11 est déjà plus grand que 10
x
do until x>10
instructions
x = x + 1
loop
et puis tu peux même ajouter un exit do pour sortir de la boucle en cours de
route, si nécessaire.
x = 11
"Laure" <nospam@nospam.fr> a écrit dans le message de news:
435664f9$0$989$8fcfb975@news.wanadoo.fr...
Bonjour,
J'ai créé une macro qui s'exécute en boucle grâce à Do...Loop.
Je voulais faire un bouton pour l'arrêter, mais une fois qu'elle est
lancée... Ben ma fois, elle tourne en boucle, et rien à faire, je n'ai
plus la main,je suis obligée de forcer Excel à quitter par le gestionnaire
des tâches.
Comment faire pour l'arrêter ?
C'est ce type de truc que j'utilise (en fait je voulais pour m'amuser
refaire l'écran Matrix avec les colonnes de caractères qui descendent...)
Do
Range("B48").Select
Selection.Cut Destination:=Range("B1")
Range("B47").Select
Selection.Cut Destination:=Range("B48")
Range("B46").Select
'Etc... jusqu'à :
Range("B1").Select
Selection.Cut Destination:=Range("B2")
Loop
End Sub
D'autre part, y a-t-il moyen de ralentir l'exécution de la macro, de façon
à ce que visuellement les caractères "tombent" moins vite ?
Bon je sais que c'est juste pour m'amuser, et surtout pour apprendre, et
que ça sert à rien !! :-)
En principe, Ctrl-Break ou Ctrl-Pause permet d'arrêter une macro en cours d'exécution, bien que des fois l'arrêt n'est pas instantané.
D'un autre côté, il y a moyen de mettre une condition, soit dans le do, soit dans le loop, mais pas les deux en même temps.
Quelques exemples pas testés et en vrac.
Une "fausse boucle comptée". (Pour ce genre d'histoire, une boucle For est probablement plus efficace.) La boucle tourne tant que la condition est remplie.
Ne sera jamais exécutée si x = 11 au lieu de 0
x = 0 do while x <= 10 x = x+ 1 autres instructions ici loop
Sera exécutée au moins une fois, même si x = 11, parce que le test est en fin de boucle x= 11 do instructions loop while x<= 11
Une boucle tant qu'une condition n'est pas remplie:
Va être exécutée 11 fois x=0 do until x> 10 instructions x = x+1 loop
Ne sera jamais exécutée, parce que 11 est déjà plus grand que 10
x do until x>10 instructions x = x + 1 loop
et puis tu peux même ajouter un exit do pour sortir de la boucle en cours de route, si nécessaire.
x = 11
"Laure" a écrit dans le message de news: 435664f9$0$989$
Bonjour,
J'ai créé une macro qui s'exécute en boucle grâce à Do...Loop. Je voulais faire un bouton pour l'arrêter, mais une fois qu'elle est lancée... Ben ma fois, elle tourne en boucle, et rien à faire, je n'ai plus la main,je suis obligée de forcer Excel à quitter par le gestionnaire des tâches.
Comment faire pour l'arrêter ?
C'est ce type de truc que j'utilise (en fait je voulais pour m'amuser refaire l'écran Matrix avec les colonnes de caractères qui descendent...)
Do Range("B48").Select Selection.Cut Destination:=Range("B1") Range("B47").Select Selection.Cut Destination:=Range("B48") Range("B46").Select 'Etc... jusqu'à : Range("B1").Select Selection.Cut Destination:=Range("B2") Loop End Sub
D'autre part, y a-t-il moyen de ralentir l'exécution de la macro, de façon à ce que visuellement les caractères "tombent" moins vite ?
Bon je sais que c'est juste pour m'amuser, et surtout pour apprendre, et que ça sert à rien !! :-)
Merci d'avance !!
Laure
Laure
Merci à vous trois pour toutes ces infos. Je vais tester tout ça !!
Merci encore :-)
Laure
Merci à vous trois pour toutes ces infos.
Je vais tester tout ça !!