Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
2702 connectés 

  FORUM HardWare.fr
  Programmation
  VB/VBA/VBS

  Help problème debogage avec mon jeu vba

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

Help problème debogage avec mon jeu vba

n°1563262
guiguipsib
Posté le 22-05-2007 à 08:48:16  profilanswer
 

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  :bounce:  
 
merci  
 
Vous pouvez acceder au fichier déposé à l'adresse suivante:  
 
 


Message édité par guiguipsib le 22-05-2007 à 16:52:31
mood
Publicité
Posté le 22-05-2007 à 08:48:16  profilanswer
 

n°1563284
tegu
Posté le 22-05-2007 à 09:42:20  profilanswer
 

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.

n°1563287
guiguipsib
Posté le 22-05-2007 à 09:46:26  profilanswer
 

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

n°1563298
tegu
Posté le 22-05-2007 à 10:04:55  profilanswer
 

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 ?

n°1563305
guiguipsib
Posté le 22-05-2007 à 10:13:57  profilanswer
 

alors j'ai verifié c'est mon tableaualéatoire(Z) qui est nul...

n°1563309
guiguipsib
Posté le 22-05-2007 à 10:19:11  profilanswer
 

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

n°1563347
guiguipsib
Posté le 22-05-2007 à 11:11:30  profilanswer
 

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?

n°1563403
tegu
Posté le 22-05-2007 à 13:05:34  profilanswer
 

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).


Message édité par tegu le 22-05-2007 à 13:08:47

Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  VB/VBA/VBS

  Help problème debogage avec mon jeu vba

 

Sujets relatifs
Probleme NI PCI 6024E et Borland C++ Builder 6probleme de librairie mime::lite:html
problème avec TobjectListeprobleme location.reload() en ajax sous IE 7
Problème de centre ..Comment créer une calculatrice en java ? Probleme d'affichage
probleme configuration httpd.conf pour cgi binPetit probleme de * & ** ...
probléme compabilité entre ie et firefoxProbleme de gotoAndStop(scene,1);
Plus de sujets relatifs à : Help problème debogage avec mon jeu vba


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR