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

Résolu
RaihanaTag Messages postés 18 Statut Membre -  
RaihanaTag Messages postés 18 Statut Membre -
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

  1. jordane45 Messages postés 30427 Date d'inscription   Statut Modérateur Dernière intervention   4 832
     
    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
    1. RaihanaTag
       
      j ai remplacé dans ma boucle While le Worksheets(1).activate par activesheets.index=1 et ça fonctionne tres bien
      merci infiniment
      0
  2. pijaku Messages postés 13513 Date d'inscription   Statut Modérateur Dernière intervention   2 773
     
    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
  3. RaihanaTag Messages postés 18 Statut Membre
     
    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