Une feuille qui s'active toute seule ..... !

Résolu/Fermé
RaihanaTag Messages postés 17 Date d'inscription mercredi 19 août 2015 Statut Membre Dernière intervention 28 mai 2016 - 19 août 2015 à 13:29
RaihanaTag Messages postés 17 Date d'inscription mercredi 19 août 2015 Statut Membre Dernière intervention 28 mai 2016 - 29 août 2015 à 11:08
Je développe une petite application sur vba
Sur la page d'accueil qui a l' air de ça :

j ai crée une animation ( le petit avion qui se déplace de la gauche à droite ) selon la procédure suivante :

le probleme c est quand je clique sur l'un des boutons pour accéder à une autre feuille cette derniere s'ouvre puis apres un bout de temp la page d 'acceuil revient tt seule
j ai enlevé la boucle while ....wend le probleme a disparut mais l 'avion ne fais son parcours qu'une fois et non pas tant que la page d'accueil est active
Merci de bien vouloir m aider

3 réponses

jordane45 Messages postés 38286 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 14 novembre 2024 4 698
19 août 2015 à 13:44
Bonjour,

Déjà .. pour plus de facilités .. il est préférable que tu colles directement ton code sur le forum plutôt que de nous en mettre une capture écran !

NB: Merci de bien vouloir utiliser la coloration syntaxique (les balises de code) lorsque tu postes du code sur le forum.
Explications disponibles ici :
https://codes-sources.commentcamarche.net/faq/10686-le-nouveau-codes-sources-comment-ca-marche#balises-code

.Ensuite... il suffirait, je pense, que dans ton While .. tu vérifies si tu te trouves bien sur ta feuille1 ... ( avec ActiveSheet)
Si oui... tu fais l'animation...
Si non... tu ne la fais pas.
0
j ai remplacé dans ma boucle While le Worksheets(1).activate par activesheets.index=1 et ça fonctionne tres bien
merci infiniment
0
pijaku Messages postés 12263 Date d'inscription jeudi 15 mai 2008 Statut Modérateur Dernière intervention 4 janvier 2024 2 751
19 août 2015 à 13:46
Bonjour,

Si tu veux que ton avion "plane" en permanence (parce que avec ton code il ne fait qu'un aller) et faire tout le reste de ta demande, utilises ce code (à placer dans le module ThisWorkbook)

Dim StopIt As Boolean

Private Sub Workbook_Open()
MsgBox "Bonjour ! OUverture en cours ...", , "Gestion de données des Pannes"
Worksheets(1).Activate
End Sub

Private Sub Workbook_SheetActivate(ByVal Sh As Object)
If Sh.Name = "Feuil1" Then StopIt = False: Avion Else StopIt = True
End Sub

Sub Avion()
Dim seconde As Single
Dim i As Integer
Dim timer_avant As Double
Worksheets(1).Shapes("Rectangle 1").Left = 61.5
seconde = 0.01
For i = 1 To 747
   timer_avant = Timer
   Do While Timer < timer_avant + seconde
      DoEvents
      If StopIt Then Exit Sub
   Loop
   Worksheets(1).Shapes("Rectangle 1").Left = 61.5 + i
   If i = 746 Then
      i = 1: Worksheets(1).Shapes("Rectangle 1").Left = 61.5
   End If
Next i
End Sub

0
RaihanaTag Messages postés 17 Date d'inscription mercredi 19 août 2015 Statut Membre Dernière intervention 28 mai 2016
29 août 2015 à 11:08
J ai fini par utiliser ce code ( si quelqu'un tombe dans le même problème que moi ) :
Private Sub Workbook_Open()
Worksheets(1).Activate
MsgBox "Bonjour! Ouverture de Session .....", , "Gestion de données des Pannes"
UserForm1.Show
While ActiveSheet.Index = 1
Worksheets(1).Shapes("Rectangle 1").Left = 61.5
seconde = 0.01
For i = 1 To 747
   timer_avant = Timer
   Do While Timer < timer_avant + seconde
      DoEvents
   Loop
   Worksheets(1).Shapes("Rectangle 1").Left = 61.5 + i
Next
Wend
End Sub

Et ça fonctionne parfaitement
Merci pour vôtre aide pijaku et jordon 45 et je suis désolée de vous répondre aussi tard ( je suis nouvelle sur le forum je sais pas comme ça fonctionne ici )
0