Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

Exécution interrompue lors d'un déplacement de formes

6 réponses
Avatar
garnote
Bonjour,

Quand je veux déplacer un groupe de rectangles vers la droite
ou vers la gauche en cliquant sur une forme, j'obtiens le message
d'erreur "Exécution interrompue".
http://www.cijoint.fr/cjlink.php?file=cj200905/cijlmfUJUc.xls
Je clique alors sur "Continuer" et l'animation a bel et bien lieu
mais avec des arrêts. Elle devrait se faire de façon continue.
J'ai souvent utilisé ce genre de macros sous Excel 2003 et les
animations se déroulaient correctement.
Alors, ai-je perdu la main ou c'est Excel 2007 qui débloque ?

Private Declare Sub Sleep Lib "kernel32" (ByVal dwMilliseconds As Long)
Sub bougeg()
Set f = ActiveSheet.Shapes("groupe")
For i = 1 To 50
DoEvents
f.Left = f.Left - 10
Sleep (50)
Next i
End Sub

Sub bouged()
Set f = ActiveSheet.Shapes("groupe")
For i = 1 To 50
DoEvents
f.Left = f.Left + 10
Sleep (50)
Next i
End Sub

Serge

6 réponses

Avatar
MichDenis
Tester sous Excel 2007 et Vista.
Ton code fonctionne normalement.
Aucun message d'erreur.


"garnote" a écrit dans le message de groupe de discussion :
#
Bonjour,

Quand je veux déplacer un groupe de rectangles vers la droite
ou vers la gauche en cliquant sur une forme, j'obtiens le message
d'erreur "Exécution interrompue".
http://www.cijoint.fr/cjlink.php?file=cj200905/cijlmfUJUc.xls
Je clique alors sur "Continuer" et l'animation a bel et bien lieu
mais avec des arrêts. Elle devrait se faire de façon continue.
J'ai souvent utilisé ce genre de macros sous Excel 2003 et les
animations se déroulaient correctement.
Alors, ai-je perdu la main ou c'est Excel 2007 qui débloque ?

Private Declare Sub Sleep Lib "kernel32" (ByVal dwMilliseconds As Long)
Sub bougeg()
Set f = ActiveSheet.Shapes("groupe")
For i = 1 To 50
DoEvents
f.Left = f.Left - 10
Sleep (50)
Next i
End Sub

Sub bouged()
Set f = ActiveSheet.Shapes("groupe")
For i = 1 To 50
DoEvents
f.Left = f.Left + 10
Sleep (50)
Next i
End Sub

Serge
Avatar
MichDenis
En passant, de cette manière, tu peux de passer de l'API

Sub bouged()
Dim T As Double, F As Shape
Set F = ActiveSheet.Shapes("groupe")
For a = 1 To 50
F.Left = F.Left + 10
T = Timer + 0.05
Do While Timer <= T
DoEvents
Loop
Next
End Sub




"MichDenis" a écrit dans le message de groupe de discussion :
#
Tester sous Excel 2007 et Vista.
Ton code fonctionne normalement.
Aucun message d'erreur.


"garnote" a écrit dans le message de groupe de discussion :
#
Bonjour,

Quand je veux déplacer un groupe de rectangles vers la droite
ou vers la gauche en cliquant sur une forme, j'obtiens le message
d'erreur "Exécution interrompue".
http://www.cijoint.fr/cjlink.php?file=cj200905/cijlmfUJUc.xls
Je clique alors sur "Continuer" et l'animation a bel et bien lieu
mais avec des arrêts. Elle devrait se faire de façon continue.
J'ai souvent utilisé ce genre de macros sous Excel 2003 et les
animations se déroulaient correctement.
Alors, ai-je perdu la main ou c'est Excel 2007 qui débloque ?

Private Declare Sub Sleep Lib "kernel32" (ByVal dwMilliseconds As Long)
Sub bougeg()
Set f = ActiveSheet.Shapes("groupe")
For i = 1 To 50
DoEvents
f.Left = f.Left - 10
Sleep (50)
Next i
End Sub

Sub bouged()
Set f = ActiveSheet.Shapes("groupe")
For i = 1 To 50
DoEvents
f.Left = f.Left + 10
Sleep (50)
Next i
End Sub

Serge
Avatar
garnote
C'est à n'y rien comprendre ! Carte graphique ?
Curieusement, avec TImer, il y a un message d'interruption au début
mais par la suite l'animation se déroule normalement.
J'ai un problèeme similaire quand j'utilse une barre de défilement
pour définir le Left d'un objet. Quand je fais glisser le curseur,
je ne vois que les positions initiale et finale de la forme à déplacer.
Pour avoir une animation, je dois maintenir le bouton de ma souris
enfoncé sur la barre de défilement.

Serge

"MichDenis" a écrit dans le message de news:

En passant, de cette manière, tu peux de passer de l'API

Sub bouged()
Dim T As Double, F As Shape
Set F = ActiveSheet.Shapes("groupe")
For a = 1 To 50
F.Left = F.Left + 10
T = Timer + 0.05
Do While Timer <= T
DoEvents
Loop
Next
End Sub




"MichDenis" a écrit dans le message de groupe de
discussion :
#
Tester sous Excel 2007 et Vista.
Ton code fonctionne normalement.
Aucun message d'erreur.


"garnote" a écrit dans le message de groupe de
discussion :
#
Bonjour,

Quand je veux déplacer un groupe de rectangles vers la droite
ou vers la gauche en cliquant sur une forme, j'obtiens le message
d'erreur "Exécution interrompue".
http://www.cijoint.fr/cjlink.php?file=cj200905/cijlmfUJUc.xls
Je clique alors sur "Continuer" et l'animation a bel et bien lieu
mais avec des arrêts. Elle devrait se faire de façon continue.
J'ai souvent utilisé ce genre de macros sous Excel 2003 et les
animations se déroulaient correctement.
Alors, ai-je perdu la main ou c'est Excel 2007 qui débloque ?

Private Declare Sub Sleep Lib "kernel32" (ByVal dwMilliseconds As Long)
Sub bougeg()
Set f = ActiveSheet.Shapes("groupe")
For i = 1 To 50
DoEvents
f.Left = f.Left - 10
Sleep (50)
Next i
End Sub

Sub bouged()
Set f = ActiveSheet.Shapes("groupe")
For i = 1 To 50
DoEvents
f.Left = f.Left + 10
Sleep (50)
Next i
End Sub

Serge



Avatar
MichDenis
| C'est à n'y rien comprendre ! Carte graphique ?

Je ne m'y connais pas beaucoup dans les composantes...
mais il me semble que tu éprouves beaucoup de difficultés
de configuration ou d'installation !!!

| quand j'utilse une barre de défilement pour
| définir le Left d'un objet

Je suppose que tu as un contrôle "scrollbar" émanant de la barre d'outils "Contrôle"
Pour que cela fonctionne, tu dois utiliser ces 2 événements :
'-----------------------------------
Private Sub ScrollBar1_Change()
' le code -> ce que tu veux qui se passe quand tu bouges
'le scrollbar
End Sub
'-----------------------------------
Private Sub ScrollBar1_Scroll()
'quand tu déplaces le scrollbar manuellement via
'l'interface graphique, cela appelle la procédure Scroll_Change
ScrollBar1_Change
End Sub
'-----------------------------------





"garnote" a écrit dans le message de groupe de discussion :

C'est à n'y rien comprendre ! Carte graphique ?
Curieusement, avec TImer, il y a un message d'interruption au début
mais par la suite l'animation se déroule normalement.
J'ai un problèeme similaire quand j'utilse une barre de défilement
pour définir le Left d'un objet. Quand je fais glisser le curseur,
je ne vois que les positions initiale et finale de la forme à déplacer.
Pour avoir une animation, je dois maintenir le bouton de ma souris
enfoncé sur la barre de défilement.

Serge

"MichDenis" a écrit dans le message de news:

En passant, de cette manière, tu peux de passer de l'API

Sub bouged()
Dim T As Double, F As Shape
Set F = ActiveSheet.Shapes("groupe")
For a = 1 To 50
F.Left = F.Left + 10
T = Timer + 0.05
Do While Timer <= T
DoEvents
Loop
Next
End Sub




"MichDenis" a écrit dans le message de groupe de
discussion :
#
Tester sous Excel 2007 et Vista.
Ton code fonctionne normalement.
Aucun message d'erreur.


"garnote" a écrit dans le message de groupe de
discussion :
#
Bonjour,

Quand je veux déplacer un groupe de rectangles vers la droite
ou vers la gauche en cliquant sur une forme, j'obtiens le message
d'erreur "Exécution interrompue".
http://www.cijoint.fr/cjlink.php?file=cj200905/cijlmfUJUc.xls
Je clique alors sur "Continuer" et l'animation a bel et bien lieu
mais avec des arrêts. Elle devrait se faire de façon continue.
J'ai souvent utilisé ce genre de macros sous Excel 2003 et les
animations se déroulaient correctement.
Alors, ai-je perdu la main ou c'est Excel 2007 qui débloque ?

Private Declare Sub Sleep Lib "kernel32" (ByVal dwMilliseconds As Long)
Sub bougeg()
Set f = ActiveSheet.Shapes("groupe")
For i = 1 To 50
DoEvents
f.Left = f.Left - 10
Sleep (50)
Next i
End Sub

Sub bouged()
Set f = ActiveSheet.Shapes("groupe")
For i = 1 To 50
DoEvents
f.Left = f.Left + 10
Sleep (50)
Next i
End Sub

Serge



Avatar
garnote
> Je ne m'y connais pas beaucoup dans les composantes...
mais il me semble que tu éprouves beaucoup de difficultés
de configuration ou d'installation !!!


C'est le moins qu'on puisse dire !
Ça va quand même beaucoup mieus depuis le reformatage de mon disque dur.
Le seul problème que j'ai rencontré depuis, c'est lors de déplacements de
formes, de graphiques ou de boïtes de dialogues.
Vais essayer de me trouver un bon garagiste :-)

Serge
Avatar
garnote
Avec cette macro, ça va :

Private Sub ScrollBar1_Scroll()
ScrollBar1_Change
End Sub

Je l'avais pourtant déjà utilisée !

Merci de me rafraîchir la mémoire.
Serge


"MichDenis" a écrit dans le message de news:
%
| C'est à n'y rien comprendre ! Carte graphique ?

Je ne m'y connais pas beaucoup dans les composantes...
mais il me semble que tu éprouves beaucoup de difficultés
de configuration ou d'installation !!!

| quand j'utilse une barre de défilement pour
| définir le Left d'un objet

Je suppose que tu as un contrôle "scrollbar" émanant de la barre d'outils
"Contrôle"
Pour que cela fonctionne, tu dois utiliser ces 2 événements :
'-----------------------------------
Private Sub ScrollBar1_Change()
' le code -> ce que tu veux qui se passe quand tu bouges
'le scrollbar
End Sub
'-----------------------------------
Private Sub ScrollBar1_Scroll()
'quand tu déplaces le scrollbar manuellement via
'l'interface graphique, cela appelle la procédure Scroll_Change
ScrollBar1_Change
End Sub
'-----------------------------------





"garnote" a écrit dans le message de groupe de
discussion :

C'est à n'y rien comprendre ! Carte graphique ?
Curieusement, avec TImer, il y a un message d'interruption au début
mais par la suite l'animation se déroule normalement.
J'ai un problèeme similaire quand j'utilse une barre de défilement
pour définir le Left d'un objet. Quand je fais glisser le curseur,
je ne vois que les positions initiale et finale de la forme à déplacer.
Pour avoir une animation, je dois maintenir le bouton de ma souris
enfoncé sur la barre de défilement.

Serge

"MichDenis" a écrit dans le message de news:

En passant, de cette manière, tu peux de passer de l'API

Sub bouged()
Dim T As Double, F As Shape
Set F = ActiveSheet.Shapes("groupe")
For a = 1 To 50
F.Left = F.Left + 10
T = Timer + 0.05
Do While Timer <= T
DoEvents
Loop
Next
End Sub




"MichDenis" a écrit dans le message de groupe de
discussion :
#
Tester sous Excel 2007 et Vista.
Ton code fonctionne normalement.
Aucun message d'erreur.


"garnote" a écrit dans le message de groupe de
discussion :
#
Bonjour,

Quand je veux déplacer un groupe de rectangles vers la droite
ou vers la gauche en cliquant sur une forme, j'obtiens le message
d'erreur "Exécution interrompue".
http://www.cijoint.fr/cjlink.php?file=cj200905/cijlmfUJUc.xls
Je clique alors sur "Continuer" et l'animation a bel et bien lieu
mais avec des arrêts. Elle devrait se faire de façon continue.
J'ai souvent utilisé ce genre de macros sous Excel 2003 et les
animations se déroulaient correctement.
Alors, ai-je perdu la main ou c'est Excel 2007 qui débloque ?

Private Declare Sub Sleep Lib "kernel32" (ByVal dwMilliseconds As Long)
Sub bougeg()
Set f = ActiveSheet.Shapes("groupe")
For i = 1 To 50
DoEvents
f.Left = f.Left - 10
Sleep (50)
Next i
End Sub

Sub bouged()
Set f = ActiveSheet.Shapes("groupe")
For i = 1 To 50
DoEvents
f.Left = f.Left + 10
Sleep (50)
Next i
End Sub

Serge