Help problème debogage avec mon jeu vba - VB/VBA/VBS - Programmation
Marsh Posté le 22-05-2007 à 09:42:20
Quand on a une erreur, la première chose à faire est de localiser la ligne de code qui pose problème.
Ceci est largement possible en utilisant les fonctionnalités de debogage de VBA (mode pas à pas : F8, MAJ+F8, CTRL+MAJ+F8, mode continu F5, les espions, les points d'arrêts F9)
Si tu veux un peu d'aide il faut au moins que tu nous donnes une indication de la partie de code qui génére l'erreur et que tu copies ce code dans ton message.
Personnellement je n'ai aucune envie d'ouvrir ton ZIP et faire le boulot.
Marsh Posté le 22-05-2007 à 09:46:26
ok pas de souci dsl
alors il m'affiche l'erreur la carte1 = Tableaucartes(Tableaualéatoire(Z))
alors que j'ai déclaré
Public Tableaualéatoire(1 To 32) As Integer
Public Tableaucartes(1 To 32) As String
Public im1 As Integer
Public carte1 As String
Public Images(1 To 32) As Object
puis l'erreur est dans la procedure suivante
Public Sub select_image(Z As Integer)
If nb_carte_select = 0 Then
im1 = Z
carte1 = Tableaucartes(Tableaualéatoire(Z))
Images(Z).Picture = LoadPicture("C:\Documents and Settings\guigui\Bureau\VBA\" & CStr(Tableaucartes(Tableaualéatoire(Z))) & ".bmp" )
Images(Z).BringToFront ' force le rafraichissement de l'image
nb_carte_select = nb_carte_select + 1
ElseIf nb_carte_select = 1 Then
If im1 = Z Then
MsgBox "On ne peut pas selectionner deux fois la même carte. Choisis en une autre!"
Exit Sub
Else
im2 = Z
carte2 = Tableaucartes(Tableaualéatoire(Z))
Images(Z).Picture = LoadPicture("C:\Documents and Settings\guigui\Bureau\VBA\" & CStr(Tableaucartes(Tableaualéatoire(Z))) & ".bmp" )
Images(Z).BringToFront ' force le rafraichissement de l'image
nb_carte_select = 2
End If
ElseIf nb_carte_select = 2 Then
MsgBox "Tu dois valider tes deux cartes."
Exit Sub
End If
End Sub
je vois vraiment pas pourquoi il y a une erreur
Marsh Posté le 22-05-2007 à 10:04:55
Typiquement l'erreur 9 est une erreur d'indice dans un tableau.
Si la ligne en cause est bien « carte1 = Tableaucartes(Tableaualéatoire(Z)) », alors, soit Z < 1 ou Z > 32, soit Tableaualéatoire(Z) < 1 ou Tableaualéatoire(Z) > 32.
Si tu places un point d'arrêt sur ta ligne (F9 ou clic dans la marge grise), tu pourras voir la valeur en cours d'exécution de ces deux propositions et savoir laquelle pose problème.
Après il suffira d'en trouver la cause (mauvais paramètre passé à select_image(), ou mauvaise initialisation de Tableaualéatoire...)
Est ce que Tableaualéatoire est rempli par des instructions Rnd ?
Marsh Posté le 22-05-2007 à 10:13:57
alors j'ai verifié c'est mon tableaualéatoire(Z) qui est nul...
Marsh Posté le 22-05-2007 à 10:19:11
je vais verifier mon programme parce que je dois avoir un souci je confonds mes 2 tableau et les valeurs de 1 doit etre attribué aleatoirement alors que les autres correspondent aux click...je vais essayer de regler ca...merci en tt cas
Marsh Posté le 22-05-2007 à 11:11:30
la valeur de mon tableaualeatoire() est toujours 0 je comprend pa pourtant j'ai fait ca
Test = True
c = Int((32 * Rnd()) + 1)
For d = 1 To 32
If Tableaualéatoire(d) = c Then
Test = False
Exit For
End If
Next d
If Test = True Then
Tableaualéatoire(b) = c
Tableaualéatoire(b + 1) = c
End If
logiquement il devrait pas avoir la valeur 0?
Marsh Posté le 22-05-2007 à 13:05:34
Le code que tu as posté ne peut pas remplir correctement le tableau.
Je ne vois pas d'initialisation de b.
Je ne suis pas sûr de comprendre comment tu souhaites remplir ton tableau.
Des entiers entre 1 et 32 sans en répéter ?
Dans ton test « If Test = True Then », tu remplis deux éléments successifs avec la même valeur c et je ne comprends pas pourquoi.
Mais ça peut être normal suivant tes objectifs, pour le coup je te le signale juste.
Et clairement si ton code n'est pas dans une boucle plus large, tu ne traites qu'un élément c (pas 32).
Marsh Posté le 22-05-2007 à 08:48:16
Je debute en VBA et j'essai de faire un jeu en vba et j 'ai une erreur Run time error 9 Subscript out of range
je capte pas trop donc si quelqu'un pouvait m'aider à resoudre l'erreur et ameliorer ce code
merci
Vous pouvez acceder au fichier déposé à l'adresse suivante:
Message édité par guiguipsib le 22-05-2007 à 16:52:31