Comprend pas ce qui se passe !

cs_Fripouil Messages postés 175 Date d'inscription lundi 16 décembre 2002 Statut Membre Dernière intervention 8 mai 2017 - 6 oct. 2005 à 19:30
aieeeuuuuu Messages postés 698 Date d'inscription jeudi 16 janvier 2003 Statut Membre Dernière intervention 20 mai 2011 - 7 oct. 2005 à 11:44
Voila, j' ai 50 picturebox représentant des boules ( Boule(0)....Boule(49) ) et 50 picturebox vide ( TBoule(0).....TBoule(49) )

Lorsque je clique sur le commandbutton (BtnTirage), je voudrais que les picturebox vide se remplissent avec les images (Boule) et ceci aléatoirement.

J' ai modifié un code sur ce site mais j' ai un message d' erreur : Type incompatible.
sur la ligne indiquée en dessous, j ai beau chercher je ne trouve pas.
Merci de votre aide par avance.

Private Distribuee(0 To 49) As Boolean


Private Sub DistributionBoule(Nb As Long)
Dim I As Long, N As Long
' Remise à zéro.
For I = LBound(Distribuee) To UBound(Distribuee)
Distribuee(I) = False
Next
' On distribue les boules au joueur .
For I = 0 To Nb - 1
TBoule(I) = ChargeBoule(I, TireUneBoule, "Joueur") <--- probléme ici ***
Next
End Sub


Private Function ChargeBoule(Idx As Long, Boule As Long, AQui As String)
Dim Pic As PictureBox
' Affecte à l'objet Pic la bonne picturebox
Select Case AQui
Case "Joueur"
Set Pic = FrmPlateau.Boule(Idx)
End Select
' Charge le bon BMP
Pic.Picture = FrmPlateau.Boule(Idx)
End Function


Private Function TireUneBoule() As Long
Dim N As Long


' Tire une boule au hasard
N = Int(Rnd * 49)
' Jusqu'a ce que ce soit une boule non encore distribuée
While Distribuee(N)
' Marque cette boule comme distribuee
Distribuee(N) = True
' Renvoie le numéro de la boule
TireUneBoule = N
Wend
End Function


Private Sub BtnTirage_Click()
DistributionBoule (50)
End Sub



Fripouil

5 réponses

cs_Jack Messages postés 14006 Date d'inscription samedi 29 décembre 2001 Statut Modérateur Dernière intervention 28 août 2015 79
6 oct. 2005 à 20:39
Salut

TBoule est défini comment ?
Quel type de donnée renvoie ta fonction ChargeBoule : ajouter As Integer par exemple derrière la définition
En fait, ta fonction ChargeBoule ne renvoie aucune donnée.
Il n'y a nulle part dans la fonction de ligne ChargeBoule = x
Donc de toute façon, VB ne saura pas quoi mettre dans TBoule.
Eventuellement, change ton appel en oubliant TBoule qui apparemment ne sert à rien :
Call ChargeBoule(I, TireUneBoule, "Joueur")

Vala
Jack, MVP VB
NB : Je ne répondrai pas aux messages privés

Le savoir est la seule matière qui s'accroit quand on la partage. (Socrate)
0
crenaud76 Messages postés 4172 Date d'inscription mercredi 30 juillet 2003 Statut Membre Dernière intervention 9 juin 2006 28
6 oct. 2005 à 21:41
... et fait de ChargeBoule une Sub

Christophe
0
cs_Fripouil Messages postés 175 Date d'inscription lundi 16 décembre 2002 Statut Membre Dernière intervention 8 mai 2017
6 oct. 2005 à 21:57
J' ai les boules qui s' affichent dans les picturebox ( TBoule ) mais elles s' affichent dans l' ordre : 1 2 3 4 5 6... 50.
Dans le code que je me sers il ya un DO sans son LOOP et un WHILE sans son WEND (voir ***) moi il en veut je lui en donne sauf que je les ai mis un peu au hasard, le probléme aprés est que cela me plante tout.
Si en plus de m' aidez vous m' expliquiez à quoi cela peut il bien servir, merci pour mon savoir.

Private Sub DistributionBoule(Nb As Long)
Dim I As Long, N As Long
For I = LBound(Distribuee) To UBound(Distribuee)
Distribuee(I) = False
Next
For I = 0 To Nb - 1
Call ChargeBoule(I, TireUneBoule, "Joueur")
Next
End Sub



Private Function TireUneBoule() As Long
Dim N As Long
Do ***
N = Int(Rnd * 49)
While Distribuee(N) ***
Distribuee(N) = True
TireUneBoule = N
Wend ***
Loop ***
End Function


Private Sub ChargeBoule(Idx As Long, RBoule As Long, AQui As String)
Dim Pic As PictureBox
Set Pic = FrmPlateau.TBoule(Idx)
Pic.Picture = FrmPlateau.Boule(Idx) <-- Y a peut être une erreur ici aussi
End Sub



Private Sub BtnTirage_Click()
DistributionBoule (50)
End Sub

Fripouil
0
PCPT Messages postés 13272 Date d'inscription lundi 13 décembre 2004 Statut Membre Dernière intervention 3 février 2018 47
7 oct. 2005 à 02:55
salut,
j'ai "vaguement" lu ton problème qui me semble être tout sauf une question, ainsi que les commentaires en résultants, et à mon avis, si tu as besoin d'aide, il va falloir mieux expliquer et peut-être même avant analyser ton code.

perso, je ne comprend ni ton problème, ni ce que tu veux. du moins, pas par rapport au code posté.....

remarque, le problème peut venir de moi
PCPT
0

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

Posez votre question
aieeeuuuuu Messages postés 698 Date d'inscription jeudi 16 janvier 2003 Statut Membre Dernière intervention 20 mai 2011 3
7 oct. 2005 à 11:44
salut,

effectivement c'est pas très clair, mais si je me tiens a ton premier post qui parlais d'une erreur de type, je dirais que TireUneBoule etantune fonction, il fautmettre des parenthses derrieres, donc remplace

TBoule(I) = ChargeBoule(I, TireUneBoule, "Joueur") <--- probléme ici ***

par

TBoule(I) = ChargeBoule(I, TireUneBoule(), "Joueur")
et je pense que tout ira deja un peu mieux.

maintenant je ne dispas que c'est le seul problème, mais ca sera deja un bon debut
0
Rejoignez-nous