Problème de boucle

Résolu
Bonjour à tous,

Nous avons dû créer un projet sur visual basic en groupe et devons le rendre pour le 30 décembre. Je précise que c'est la première fois que nous utilisons ce programme.
Nous avons fait un bowling et tout marchait très bien or maintenant quand j'ouvre ma page excel avec le jeu le bouton start qui permet de faire bouger la boule de droite à gauche ne marche pas systématiquement. Il y a quelques heures quand j'ai ouvert mon programme il marchait et maintenant il ne marche plus alors que mes autres boutons fonctionnent parfaitement.
Ceci avec des contrôle de formulaires donc affectés des macros.

Nous avions tout fait avec des contrôles activeX mais à chaque ouverture du programme, les boutons changeait de noms (si quelqu'un peut m'expliquer pourquoi) donc j'ai tout refait avec des macros (contrôles de formulaire) et là juste le bouton start qui fait des caprices.
Ce bouton permet aussi de replacer les quilles et la boule ( avec leurs coordonnées) et ceci fonctionne mais la boule ne bouge pas! Donc j'en ai conclut qu'il y a un problème avec la boucle, mais puisqu'elle marche parfois je ne comprend pas.

J'ai tenté de le faire en userform, mais toujours le même problème ! Le bouton start qui marche 1 fois sur 2 !

Je ne comprend vraiment pas car notre code me semble bon...
S'il vous plait, si quelqu'un peut m'aider ce serait vraiment génial car je suis complètement perdu là!

Je vous envoie la boucle du bouton qui semble poser problème :

Public score As Integer
Public bonj As Integer


Sub start  ()
  
'là il y a normalement tout le code pour placer les quilles et la boule  


 bonj = 0           'utile pour sortir de la boucle
            secondes = 0.002           'vitesse de la boule
        
       
   For ii = 1 To 3             'répéter l'action 3 fois
        
            For i = 1 To 443 Step 3
                Timer_avant = Timer
                
                     Do While (Timer < Timer_avant + secondes) And bonj = 0
                         DoEvents
                     Loop
                
              Sheets("Feuil1").Shapes("BOULE").Left = 443 - i
                'la boule se déplace a vitesse constante vers sa position finale
         
           Next

 
            For i = 1 To 443 Step 3
                Timer_avant = Timer
                
                      Do While (Timer < Timer_avant + secondes) And bonj = 0
                          DoEvents
                      Loop
    
           Sheets("Feuil1").Shapes("BOULE").Left = 0 + i
                      'la boule revient de la meme facon à sa position de départ


          Next
    Next

'CommandButton1.Visible = False
'je ne sais pas comment rendre des boutons issuent de contrôles de formulaire invisibles..

End Sub

11 réponses

  1. Bonjour,

    Merci michel_m et cs_Le Pivert, j'ai maintenant rendu mon projet, à la place de rendre invisible les boutons j'ai simplement fait s'afficher un message et stoppé l'action du bouton en créant des variables,...
    Je n'avais pas vu vos réponses à temps.
    Merci beaucoup en tout cas.
    1. Contributeur
      Bonjour,

      Pour rendre visible ou invisible un bouton formulaire, faire l'essai avec 3 boutons:

      Option Explicit
      Dim myDocument
      Sub Bouton1_Clic()
      Set myDocument = Worksheets(1)
      myDocument.Shapes(3).Visible = False
      End Sub
      Sub Bouton2_Clic()
      Set myDocument = Worksheets(1)
      myDocument.Shapes(3).Visible = True
      End Sub
      Sub Bouton3_Clic()
      test
      End Sub
      Sub test()
          Dim img As Object
              For Each img In Worksheets(1).Shapes
           MsgBox img.Name
          Next
      End Sub
       


      ensuite supprimer cette mise à jour pour récupérer les boutons formulaire:

      Security Update for Microsoft Office 2007 suites (KB2596927)


      anneau de configuration-Programmes-Programmes et fonctionnalités-Mises à jour installées
      Clic droit sur la mise à jour: Désinstaller

      N'oubliez pas de désactiver les mises à jour automatique, sinon rebelote
      1. Contributeur
        Bonjour,
        comment on fait pour rendre invisible ou in...

        Non, je ne vois pas
        Mais une fois viré les ".edx", tu peux réinsérer un activeX et le renommer Btn_start par ex (c'est mieux que commandbutton21 et généralement apprécié pour faciliter la la compréhension pour la maintenance)

        VBA est une variante spécialisée de Vb utilisable que sur MSOFFICE
        VB est éxécutable, VBA non
        Vb travaille à partir d'un formulaire, VBa à partir du logiciel utilisé (excel, access), etc.

        Maintenant, si ca marche un jour et pas un autre, c'est un autre problème lié à excel ---> réparation avec le Cd, sécurité... si il n'y a pas eu un oubli de sauvegarde (ca, je sais bien faire)
        Michel
        1. Génial, merci beaucoup michel_m!! J'ai repris ton code et cela m'a effectivement l'air de marcher, j'espère qu'il marchera encore demain!

          Quelle est la différence entre VBA et Vb ?

          Et sais tu comment on fait pour rendre invisible ou inutilisable des boutons issuent de contrôles de formulaire ? Avec activeX il suffit d'utiliser leurs propriétés (Enabled, Visible) mais avec les contrôles de formulaire il n'y a pas de propriétés donc je ne vois pas comment faire..
          1. Merci mais cela ne change rien, j'utilise toujours la même boucle...je ne sais vraiment plus quoi faire :(

            Left permet de deplacer horizontalement; c'est plus ou moins à gauche en fait je crois
            1. Contributeur
              excuses moi, je m'étais braquer sur l 'activeX

              j'ai retrouvé cette tvieille bidouille VBA (xl2000) dans mon grenier

              ActiveSheet.Shapes("Picture 3").IncrementLeft 200 

              mais je n'ai jamais compris pourquoi "left" déplacait vers la droite... :-\
              1. Oui c'est une solution, merci michel_m, si jamais je n'arrive vraiment pas à résoudre mon problème de boucle c'est ce que je ferai.

                Si quelqu'un peut m'aider ce serait génial, s'il vous plait!!
                1. Contributeur
                  Bonjour

                  en l'envoyant à mon enseignant, est ce qu'il ne faudrait pas qu'il supprime cette mise à jour également ? --

                  Effectivement! mais le mieux serait peut-^tre de lui signaler le problème avant l'envoi en lui copiant-collant les url des discussions sur CCM et DVP
                  1. Bonjour et merci michel_m pour ton aide, j'ai essayé de supprimer et même de renommer cette mise à jour mais cela ne change rien, mes boutons activeX sont inutilisables. Et même si j'y arrivait, en l'envoyant à mon enseignant, est ce qu'il ne faudrait pas qu'il supprime cette mise à jour également ?

                    J'abandonne l'idée des boutons activeX, comme j'ai aussi tout refait avec des contrôles de formulaires je n'aurais plus que le problème de ma boucle...