Problème de boucle

Résolu/Fermé
planchaa Messages postés 5 Date d'inscription samedi 27 décembre 2014 Statut Membre Dernière intervention 28 décembre 2014 - Modifié par Chris 94 le 27/12/2014 à 19:48
 planchaa - 31 déc. 2014 à 15:30
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

michel_m Messages postés 16603 Date d'inscription lundi 12 septembre 2005 Statut Contributeur Dernière intervention 16 décembre 2023 3 303
Modifié par michel_m le 28/12/2014 à 08:16
Bonjour,

peut-^tre:

Il y a actuellement une mise à jour "foireuse" de Microsoft sur les contrôles activeX installés sur une feuille de calcul
voir
https://forums.commentcamarche.net/forum/affich-31191567-bouton-macro-bloque
avec un lien intéressant vers un autre forum;

tu peux spprimmer tous les .exd
mais les numéros des boutons commencent alors par 21 !

Bon courage



Michel
0
planchaa Messages postés 5 Date d'inscription samedi 27 décembre 2014 Statut Membre Dernière intervention 28 décembre 2014
28 déc. 2014 à 10:03
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...
0
michel_m Messages postés 16603 Date d'inscription lundi 12 septembre 2005 Statut Contributeur Dernière intervention 16 décembre 2023 3 303
28 déc. 2014 à 11:17
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
0
planchaa Messages postés 5 Date d'inscription samedi 27 décembre 2014 Statut Membre Dernière intervention 28 décembre 2014
28 déc. 2014 à 14:48
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!!
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
michel_m Messages postés 16603 Date d'inscription lundi 12 septembre 2005 Statut Contributeur Dernière intervention 16 décembre 2023 3 303
28 déc. 2014 à 17:16
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... :-\
0
planchaa Messages postés 5 Date d'inscription samedi 27 décembre 2014 Statut Membre Dernière intervention 28 décembre 2014
28 déc. 2014 à 17:34
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
0
michel_m Messages postés 16603 Date d'inscription lundi 12 septembre 2005 Statut Contributeur Dernière intervention 16 décembre 2023 3 303
Modifié par michel_m le 28/12/2014 à 18:00
Chez moi ca se déplace en incrémentant et non par modification de la position left
https://www.cjoint.com/?3LCsgK3qiFV

XL2007 VBA et non Vb comme tu l'indiques

Michel
0
planchaa Messages postés 5 Date d'inscription samedi 27 décembre 2014 Statut Membre Dernière intervention 28 décembre 2014
28 déc. 2014 à 19:31
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..
0
michel_m Messages postés 16603 Date d'inscription lundi 12 septembre 2005 Statut Contributeur Dernière intervention 16 décembre 2023 3 303
Modifié par michel_m le 29/12/2014 à 06:51
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
0
cs_Le Pivert Messages postés 7903 Date d'inscription jeudi 13 septembre 2007 Statut Contributeur Dernière intervention 11 mars 2024 728
29 déc. 2014 à 08:34
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
0
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.
0