Boucle sautée

Fermé
sydny - 24 avril 2015 à 16:42
Odenelle Messages postés 102 Date d'inscription samedi 19 novembre 2011 Statut Membre Dernière intervention 18 mars 2016 - 24 avril 2015 à 17:27
Bonjour,

voila, cela fait maintenant plusieurs heures que je suis bloqué avec un problème de boucle qui ne "s'active" pas, j'ai regarder un peu partout sur internet pour me dépanner, mais je n'ai rien trouver. je vais donc mettre le code afin de vous expliquer ensuite mon problème:

Option Explicit
Private Sub CB_calcul_du_match_Click()
Dim J1 As Integer
Dim J2 As Integer
Dim P1 As Integer
Dim P2 As Integer
P1 = 0
P2 = 0
TB_J1P = 0
TB_J2P = 0
J1 = Rnd() * TB_joueur1
J1 = Round(J1, 0)

J2 = Rnd() * TB_joueur2
J2 = Round(J2, 0)

While 4 > TB_J1P And TB_J2P
If J2 < J1 Then
TB_J1P.Value = P1 + 1
Else
TB_J2P.Value = 1 + P2
End If
Wend
End Sub

d'abord le contexte:

je veus faire un programme qui calcul de manière aléatoire et en direct les resultats d'un match de tennis avec un taux de chance de marquer des points pour les deux joueurs définis par l'utilisateur. exemple: joueur1:7, joueur2: 4.
à chaque calcul, joueur 1 et 2 auront un "score" aléatoire compris entre 0 et 7(1) et 0 et 4(2), et celui qui aura la valeur la plus grande, marque un point.
je pose les résultats directement sur une userform.

maintenant le probleme:

il s'agit de la fonction while, lorsque je passe le programme avec F8 j'ai constaté que je passe directement le la ligne while à la ligne end sub. Lorsque je lance la macro, TB_J1P et TB_J2P(les noms des textbox acceuillant les scores) sont toujours à 0.

merci d'avance, en esperant que vous puissiez m'aider à résoudre ce problème.

2 réponses

Odenelle Messages postés 102 Date d'inscription samedi 19 novembre 2011 Statut Membre Dernière intervention 18 mars 2016 20
Modifié par Odenelle le 24/04/2015 à 16:55
Salut,

J1 = Rnd() * TB_joueur1 
J1 = Round(J1, 0)

=> Rnd() te renvoie une valeur entre 0 et 1, je ne connais pas la valeur de ton TB_joueur1 mais ensuite tu arrondi le produit à l'unité, c'est bien ce que tu veux faire ?


While 4 > TB_J1P And TB_J2P 

=> Ici tu dois écrire
While 4 > TB_J1P And 4 > TB_J2P 


Si tu peux mettre ton code entre balises code et expliquer à quoi correspondent chacune de tes variables quand tu les utilise, je pense qu'on pourra t'aider
0
Private Sub CB_calcul_du_match_Click()
Dim J1 As Integer
Dim J2 As Integer
Dim P1 As Integer
Dim P2 As Integer
P1 = 0
P2 = 0
J1 = Rnd() * TB_joueur1 'joueur1 valeure donnée par l'utilisateur exemple:7, la valeure sera comprise entre 0 et 7'
J1 = Round(J1, 0) 'arrondi à l'unité'

J2 = Rnd() * TB_joueur2 'idem à joueur1'
J2 = Round(J2, 0)

While 4 > P1 And P2 'ici, le programme passe directement à end sub sans faire les étapes intermédiaires'
If J2 < J1 Then
P1 = P1 + 1
Else
P2 = 1 + P2
End If
TB_J1P = P1
TB_J2P = P2
Wend
End Sub 'ps: j'ai continuer à essayer différentes choses donc mon programme à légèrement changer, mais le résultat est toujours pareil, je sais pas comment faire'

voila, j'ai posé quelques balises.

j'ai oublié de préciser à a presentation du sujet mais je suis sur le pack office 2003.
0
Odenelle Messages postés 102 Date d'inscription samedi 19 novembre 2011 Statut Membre Dernière intervention 18 mars 2016 20
24 avril 2015 à 17:06
While 4 > P1 And P2

Modifie par
While 4 > P1 And 4 > P2


Dis moi ce que ça donne après
0
merci beaucoup!! encore une erreur bête de ma part ... :)
0
Odenelle Messages postés 102 Date d'inscription samedi 19 novembre 2011 Statut Membre Dernière intervention 18 mars 2016 20
24 avril 2015 à 17:27
avec plaisir :)
0