IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

VB 6 et antérieur Discussion :

runtime error 13


Sujet :

VB 6 et antérieur

  1. #1
    Membre du Club
    Profil pro
    Étudiant
    Inscrit en
    Janvier 2009
    Messages
    380
    Détails du profil
    Informations personnelles :
    Âge : 36
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Janvier 2009
    Messages : 380
    Points : 66
    Points
    66
    Par défaut runtime error 13
    Salut les amis!!!
    Voila j'ai développé un mastermind en vb6 et ma fonction de vérification
    se plante au 2 eme tour.
    elle me dit " run tume error 13 type mismatch"

    alors que la première vérification se passe impécablement
    voici mon code

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    112
    113
    114
    115
    116
    117
    118
    119
    120
    121
    122
    123
    124
    125
    126
    127
    128
    129
    130
    131
    132
    133
    134
    135
    136
    137
    138
    139
    140
    141
    142
    For i = a To a + 3
        If pion(i).FillColor = couleurpc(i - a) Then ' Si la couleur du pion est égale à la couleur du pc alors
       ' MsgBox (i)
             If i = 0 Then
                 valeur0 = 1
             End If
             If i = 1 Then
                 valeur1 = 1
             End If
             If i = 2 Then
                 valeur2 = 1
             End If
             If i = 3 Then
                 valeur3 = 1
             End If
            
           correct(x).FillColor = 16777215           ' Définit la couleur d'un pion de correction en blanc
           correct(x).Visible = True                 ' Affiche le pion de correction
           x = x + 1                                 ' Incrémente la variable x afin de passer au pion de correction suivant
           compteur = compteur + 1                   ' Incrémente le compteur
        End If
    Next i
    
    
    '''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
    '''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
    ' Controle les bonnes couleurs mais mal placé
    
       Dim k As Integer 'variable qui sert pour l'index des pions de corrections
      z = 0 + z
       
       If valeur0 = 0 Then
       k = z
         
            If valeur1 = 0 Then
                If pion(k).FillColor = couleurpc(k + 1) Then
                    correct(x).FillColor = 0                        'définit la couleur du pion de correction en noir
                    correct(x).Visible = True                        'affiche le pion de correction
                    x = x + 1
                End If
            End If
                
            If valeur2 = 0 Then
                If pion(k).FillColor = couleurpc(k + 2) Then
                    correct(x).FillColor = 0                        'définit la couleur du pion de correction en noir
                    correct(x).Visible = True                       'affiche le pion de correction
                    x = x + 1
                End If
            End If
            
            If valeur3 = 0 Then
                If pion(k).FillColor = couleurpc(k + 3) Then
                    correct(x).FillColor = 0                        'définit la couleur du pion de correction en noir
                    correct(x).Visible = True                       'affiche le pion de correction
                    x = x + 1
                End If
            End If
       End If
      
       If valeur1 = 0 Then
       k = z + 1
            If valeur0 = 0 Then
                If pion(k).FillColor = couleurpc(k - 1) Then
                    correct(x).FillColor = 0                        'définit la couleur du pion de correction en noir
                    correct(x).Visible = True                       'affiche le pion de correction
                    x = x + 1
                End If
            End If
                
            If valeur2 = 0 Then
                If pion(k).FillColor = couleurpc(k + 1) Then
                    correct(x).FillColor = 0                        'définit la couleur du pion de correction en noir
                    correct(x).Visible = True                       'affiche le pion de correction
                    x = x + 1
                End If
            End If
            
            If valeur3 = 0 Then
                If pion(k).FillColor = couleurpc(k + 2) Then
                    correct(x).FillColor = 0                        'définit la couleur du pion de correction en noir
                    correct(x).Visible = True                       'affiche le pion de correction
                    x = x + 1
                End If
            End If
        End If
       
        If valeur2 = 0 Then
            k = z + 2
            If valeur0 = 0 Then
                If pion(k).FillColor = couleurpc(k - 2) Then
                    correct(x).FillColor = 0                        'définit la couleur du pion de correction en noir
                    correct(x).Visible = True                       'affiche le pion de correction
                    x = x + 1
                End If
            End If
                
            If valeur1 = 0 Then
                If pion(k).FillColor = couleurpc(k - 1) Then
                    correct(x).FillColor = 0                        'définit la couleur du pion de correction en noir
                    correct(x).Visible = True                       'affiche le pion de correction
                    x = x + 1
                End If
            End If
            
            If valeur3 = 0 Then
                If pion(k).FillColor = couleurpc(k + 1) Then
                    correct(x).FillColor = 0                        'définit la couleur du pion de correction en noir
                    correct(x).Visible = True                       'affiche le pion de correction
                    x = x + 1
                End If
            End If
       End If
       
        If valeur3 = 0 Then
        k = z + 3
            If valeur0 = 0 Then
                If pion(k).FillColor = couleurpc(k - 3) Then
                    correct(x).FillColor = 0                        'définit la couleur du pion de correction en noir
                    correct(x).Visible = True                       'affiche le pion de correction
                    x = x + 1
                End If
            End If
                
            If valeur1 = 0 Then
                If pion(k).FillColor = couleurpc(k - 2) Then
                    correct(x).FillColor = 0                        'définit la couleur du pion de correction en noir
                    correct(x).Visible = True                       'affiche le pion de correction
                    x = x + 1
                End If
            End If
            
            If valeur2 = 0 Then
                If pion(k).FillColor = couleurpc(k - 1) Then
                    correct(x).FillColor = 0                        'définit la couleur du pion de correction en noir
                    correct(x).Visible = True                       'affiche le pion de correction
                    x = x + 1
                End If
            End If
    End If
    
     z = z + 4
    j'ai mis en vert l'endroit souligné par le débugger lors du problème.
    aidez moi s'il vous plait !! merci d'avance
    L'informatique, ça fait gagner beaucoup de temps... à condition d'en avoir beaucoup devant soi !

  2. #2
    Modérateur
    Avatar de ProgElecT
    Homme Profil pro
    Retraité
    Inscrit en
    Décembre 2004
    Messages
    6 077
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 68
    Localisation : France, Haute Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Retraité
    Secteur : Communication - Médias

    Informations forums :
    Inscription : Décembre 2004
    Messages : 6 077
    Points : 17 165
    Points
    17 165
    Par défaut
    Type incompatible (erreur 13)
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
            If valeur1 = 0 Then
                            Stop ' Arret pour verification
                            If pion(k).FillColor = couleurpc(k + 1) Then
    Au premier tour le programme s'arrete sur Stop, fais un F5 pour continuer, au second tour, selectionne couleurpc(k + 1), fais Maj+F9 pour voir la valeur de l'expression, cela devrait te permettre de comprendre pourquoi l'erreur est declanchée au 2° passage.
    Soyez sympa, pensez -y
    Balises[CODE]...[/CODE]
    Balises[CODE=NomDuLangage]...[/CODE] quand vous mettez du code d'un autre langage que celui du forum ou vous postez.
    Balises[C]...[/C] code intégré dans une phrase.
    Balises[C=NomDuLangage]...[/C] code intégré dans une phrase quand vous mettez du code d'un autre langage que celui du forum ou vous postez.
    Le bouton en fin de discussion, quand vous avez obtenu l'aide attendue.
    ......... et pourquoi pas, pour remercier, un pour celui/ceux qui vous ont dépannés.
    👉 → → Ma page perso sur DVP ← ← 👈

  3. #3
    Membre du Club
    Profil pro
    Étudiant
    Inscrit en
    Janvier 2009
    Messages
    380
    Détails du profil
    Informations personnelles :
    Âge : 36
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Janvier 2009
    Messages : 380
    Points : 66
    Points
    66
    Par défaut ok
    merci ProgElecT
    j'ai compris ce qui ne fonctionnais pas :
    ma combinaison ne possède que 4 pions alors qu'au deuxième tour
    je lui demande le 5 eme etc ...
    mais la j'ai dotre probleme... je les mettrais surement en ligne apres
    L'informatique, ça fait gagner beaucoup de temps... à condition d'en avoir beaucoup devant soi !

  4. #4
    Membre du Club
    Profil pro
    Étudiant
    Inscrit en
    Janvier 2009
    Messages
    380
    Détails du profil
    Informations personnelles :
    Âge : 36
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Janvier 2009
    Messages : 380
    Points : 66
    Points
    66
    Par défaut autres problemes...
    Bon ben voila comme prévu j'ai d'autres soucis !!!
    la correction de la première ligne se fait correctement alors qu'a partir de la seconde quelques erreurs se présentent.

    je m'explique :

    3 type de correction sont possible :
    1- bonne couleur et bien placé.
    2- bonne couleur mais mal placé.
    3- mauvaise couleur (présente dans aucun des 4 pions de correction).

    je prends pour combinaison à trouver : bleu vert jaune rouge

    pour la première ligne d'essai je lui propose vert vert vert vert.
    la correction m'indique 1 bon et bien placé et 3 faux (ce que je souhaite)

    pour la 2 eme ligne d'essai si je lui propose vert vert vert vert.
    la correction m'indique 1 bon et 3 mal placé.

    il en va de meme pour les ligne suivantes ... seule la ligne 1 fait le travail correctement.

    quelqu'un pourrais m'aider svp?? c'est très urgent. merci d'avance les amis !!

    voici mon code pour la vérification :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    112
    113
    114
    115
    116
    117
    118
    119
    120
    121
    122
    123
    124
    125
    126
    127
    128
    129
    130
    131
    132
    133
    134
    135
    136
    137
    138
    139
    140
    141
    142
    143
    144
    145
    146
    147
    148
    149
    150
    151
    152
    153
    154
    155
    156
    157
    158
    159
    160
    161
    162
    163
    164
    165
    166
    167
    168
    169
    170
    171
    172
    173
    174
    175
    176
    177
    178
    179
    180
    181
    182
    183
    184
    185
    186
    187
    188
    189
    190
    191
    192
    193
    194
    195
    196
    197
    198
    199
    200
    201
    202
    203
    204
    205
    206
    207
    208
    209
    210
    211
    212
    213
    214
    215
    216
    217
    218
    219
    220
    221
    222
    223
    224
    225
    226
    227
    228
    229
    230
    231
    232
    233
    234
    235
    236
    237
    238
    239
    240
    241
    242
    243
    244
    245
    246
    247
    248
    249
    250
     
     
    'affiche les boutons de correction lors du clic sur le bouton de vérification.
    Private Sub verifier_Click(Index As Integer)
    Dim x As Integer
    Dim v As Integer
    Dim valeur0 As Integer
    Dim valeur1 As Integer
    Dim valeur2 As Integer
    Dim valeur3 As Integer
     
    Dim compteur As Integer ' compte le nombre de pions blancs pour déterminer la fin de la partie
    x = a
    compteur = 0                                     ' Initialise la valeur du compteur à 0
    valeur0 = 0
    valeur1 = 0
    valeur2 = 0
    valeur3 = 0
     
    '''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
    ' vérifie ceux qui sont bien placés
    For i = a To a + 3
        If pion(i).FillColor = couleurpc(i - a) Then ' Si la couleur du pion est égale à la couleur du pc alors
       ' MsgBox (i)
             If i = 0 Then
                 valeur0 = 1
             End If
             If i = 1 Then
                 valeur1 = 1
             End If
             If i = 2 Then
                 valeur2 = 1
             End If
             If i = 3 Then
                 valeur3 = 1
             End If
     
           correct(x).FillColor = 16777215           ' Définit la couleur d'un pion de correction en blanc
           correct(x).Visible = True                 ' Affiche le pion de correction
           x = x + 1                                 ' Incrémente la variable x afin de passer au pion de correction suivant
           compteur = compteur + 1                   ' Incrémente le compteur
        End If
    Next i
     
     
    '''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
    '''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
    ' Controle les bonnes couleurs mais mal placé
     
       Dim k As Integer 'variable qui sert pour l'index des pions de corrections
      z = 0 + z
     
       If valeur0 = 0 Then
       k = z
       MsgBox (k)
     
            If valeur1 = 0 Then
                If pion(k).FillColor = couleurpc(1) Then
                    correct(x).FillColor = 0                        'définit la couleur du pion de correction en noir
                    correct(x).Visible = True                        'affiche le pion de correction
                    x = x + 1
                End If
            End If
     
            If valeur2 = 0 Then
                If pion(k).FillColor = couleurpc(2) Then
                    correct(x).FillColor = 0                        'définit la couleur du pion de correction en noir
                    correct(x).Visible = True                       'affiche le pion de correction
                    x = x + 1
                End If
            End If
     
            If valeur3 = 0 Then
                If pion(k).FillColor = couleurpc(3) Then
                    correct(x).FillColor = 0                        'définit la couleur du pion de correction en noir
                    correct(x).Visible = True                       'affiche le pion de correction
                    x = x + 1
                End If
            End If
       End If
     
       If valeur1 = 0 Then
       k = z + 1
            If valeur0 = 0 Then
                If pion(k).FillColor = couleurpc(0) Then
                    correct(x).FillColor = 0                        'définit la couleur du pion de correction en noir
                    correct(x).Visible = True                       'affiche le pion de correction
                    x = x + 1
                End If
            End If
     
            If valeur2 = 0 Then
                If pion(k).FillColor = couleurpc(2) Then
                    correct(x).FillColor = 0                        'définit la couleur du pion de correction en noir
                    correct(x).Visible = True                       'affiche le pion de correction
                    x = x + 1
                End If
            End If
     
            If valeur3 = 0 Then
                If pion(k).FillColor = couleurpc(3) Then
                    correct(x).FillColor = 0                        'définit la couleur du pion de correction en noir
                    correct(x).Visible = True                       'affiche le pion de correction
                    x = x + 1
                End If
            End If
        End If
     
        If valeur2 = 0 Then
            k = z + 2
            If valeur0 = 0 Then
                If pion(k).FillColor = couleurpc(0) Then
                    correct(x).FillColor = 0                        'définit la couleur du pion de correction en noir
                    correct(x).Visible = True                       'affiche le pion de correction
                    x = x + 1
                End If
            End If
     
            If valeur1 = 0 Then
                If pion(k).FillColor = couleurpc(1) Then
                    correct(x).FillColor = 0                        'définit la couleur du pion de correction en noir
                    correct(x).Visible = True                       'affiche le pion de correction
                    x = x + 1
                End If
            End If
     
            If valeur3 = 0 Then
                If pion(k).FillColor = couleurpc(3) Then
                    correct(x).FillColor = 0                        'définit la couleur du pion de correction en noir
                    correct(x).Visible = True                       'affiche le pion de correction
                    x = x + 1
                End If
            End If
       End If
     
        If valeur3 = 0 Then
        k = z + 3
            If valeur0 = 0 Then
                If pion(k).FillColor = couleurpc(0) Then
                    correct(x).FillColor = 0                        'définit la couleur du pion de correction en noir
                    correct(x).Visible = True                       'affiche le pion de correction
                    x = x + 1
                End If
            End If
     
            If valeur1 = 0 Then
                If pion(k).FillColor = couleurpc(1) Then
                    correct(x).FillColor = 0                        'définit la couleur du pion de correction en noir
                    correct(x).Visible = True                       'affiche le pion de correction
                    x = x + 1
                End If
            End If
     
            If valeur2 = 0 Then
                If pion(k).FillColor = couleurpc(2) Then
                    correct(x).FillColor = 0                        'définit la couleur du pion de correction en noir
                    correct(x).Visible = True                       'affiche le pion de correction
                    x = x + 1
                End If
            End If
    End If
     
     z = z + 4
    ' k = k + 4
     
    For i = x To a + 3
       correct(i).FillStyle = 1                       ' Sinon définit le style du pion à 1 (transparent)
       correct(i).Visible = True                      ' Affiche le pion de correction
    Next i
     
    For i = a + 4 To 31
        correct(i).Visible = False
    Next i
     
     
     
    For i = a To a + 3
       VScroll1(i).Visible = False                    ' Masque les scrollbars de la ligne en cour afin que l'utilisateur ne puisse changer sa selection
    Next i
    verifier(Int(a / 4)).Visible = False              ' Masque le bouton vérifier
    a = a + 4                                         ' Incrémente a de 4 afin de passer au bouton vérifier suivant
     
    'teste le compteur pour savoir si les 4 pions de corrections sont blanc et annoncer le fin de la partie
     
    Dim reponse$
    If compteur = 4 Then                'Si 4 correct blanc alors
       Timer1.Enabled = False           'Extinction du timer
     
       pion(v).Visible = False          'Masquage des pions suivants
       pion(v + 1).Visible = False      '
       pion(v + 2).Visible = False      '
       pion(v + 3).Visible = False      '
     
       VScroll1(v).Visible = False      'Masquage des scrollbars suivantes
       VScroll1(v + 1).Visible = False  '
       VScroll1(v + 2).Visible = False  '
       VScroll1(v + 3).Visible = False  '
     
    'Informe l'utilisteur que la partie est fini est qu'il a remporté la manche
     
       MsgBox "bravo vous avez trouvé la combinaison"
     
       Dim reponseinscription              'Déclaration de la variable, avec reponseinscription comme nom
       reponseinscription = MsgBox("Voulez vous vous inscrire aux meilleurs scores", vbYesNo + vbQuestion, "Incription aux meilleurs scores ?")
        Select Case reponseinscription
           Case vbYes                           'Si la case oui est selectionnée alors
                                                'Demande du nom par une inputbox
              Dim nom As String
              Do                              'Le do sert de controle tant que l'utilisateur n'as rien saisi
              nom = InputBox("veillez saisir votre nom s'il vous plait.", "Inscription aux meilleurs scores")
              Loop Until nom <> ""
              If Len(nom) > 6 Then
                  nom = Left(nom, 6)
              End If
              ' Vérifie que l'utilisateur a saisi quelque chose sinon on boucle et on réaffiche l'input box
              ' Affiche le nom ainsi que le temps réalisé par le joueur
              MsgBox (nom + " vous avez réalisé un temps de " + Text1 + " secondes")
              ' Ajoute le nom et le temps dans la listbox
              bonscores.scores.AddItem ("     " + nom + "                                              " + Text1)
              'Affiche les scores
              bonscores.Show
              'Enregistre les scores
              Call enregistre(bonscores.scores)
     
           Case vbNo                                                 'Si la case non est selectionnée alors
              MsgBox "Fin de la partie, félicitation", vbInformation 'Indique à l'utilisateur que la partie est finie
        End Select
        Exit Sub 'Quitte la private sub afin que les tests suivant ne s'éffectuent pas
    End If
     
    v = ((Index + 1) * 4)
    If v <= 31 Then                 ' Si v <= 31 alors
        pion(v).Visible = True          ' Affiche les pions suivants
        pion(v + 1).Visible = True
        pion(v + 2).Visible = True
        pion(v + 3).Visible = True
        VScroll1(v).Visible = True
        VScroll1(v + 1).Visible = True  ' Affiche les scrollbars suivantes
        VScroll1(v + 2).Visible = True
        VScroll1(v + 3).Visible = True
    Else                            ' Sinon
        MsgBox "Vous avez perdu ! La soulition était :", vbExclamation ' Affiche une msg box qui annonce que le joueur a perdu
        For k = 0 To 3
            Timer1.Enabled = False                                         ' Coupe le timer
            combinaison(k).Visible = True                                  ' Affiche la combinaison qu'il falait trouver
        Next k
    End If
     
     
    End Sub
    Merci d'avance !!
    L'informatique, ça fait gagner beaucoup de temps... à condition d'en avoir beaucoup devant soi !

  5. #5
    Membre expert Avatar de OhMonBato
    Homme Profil pro
    Inscrit en
    Mars 2007
    Messages
    2 660
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Morbihan (Bretagne)

    Informations professionnelles :
    Secteur : Industrie

    Informations forums :
    Inscription : Mars 2007
    Messages : 2 660
    Points : 3 685
    Points
    3 685
    Par défaut
    Bonjour,

    tout d'abord permet moi de douter du côté urgent à coder un programme de mastermind et cela n'accélère en rien la rapidité des éventuelles réponses.
    Pour en revenir à ton problème, la valeur de i dans ta boucle dépend de la valeur de "a" (qui doit etre le numéro de tour * nombre de pions je pense), hors ensuite tu fais des tests "if i = 0.... if i = 1..., etc...). Si j'ai raison sur la valeur de "a" il est clair que dès le deuxième tour i ne peut plus valoir 0, ni 1, etc...
    C'est le genre de chose que tu trouverais seul en utilisant le mode pas à pas avec quelques valeurs espions.
    Pour VB6 : N'oubliez pas d'aller voir la FAQ et les Tutoriels
    Vous trouvez une reponse particulierement utile ? Votez pour !

  6. #6
    Membre du Club
    Profil pro
    Étudiant
    Inscrit en
    Janvier 2009
    Messages
    380
    Détails du profil
    Informations personnelles :
    Âge : 36
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Janvier 2009
    Messages : 380
    Points : 66
    Points
    66
    Par défaut
    Je me doute que tu ne vois pas l'intérêt et l'urgence de ce programme, et pourtant il y en a une. il s'agit simplement d'un examen que je passe demain matin et le mastermind qui me pose problème en fait partie. cet examen m'apportant le droit d'entré dans un cursus supérieur.cependant le problème n'est pas la.

    le problème est le suivant la variable i ne se remet pas à 0 a chaque initialisation et je ne comprends pas pourquoi.
    (initialisation = clic sur le bouton vérifier.)

    voici mon code :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    112
    113
    114
    115
    116
    117
    118
    119
    120
    121
    122
    123
    124
    125
    126
    127
    128
    129
    130
    131
    132
    133
    134
    135
    136
    137
    138
    139
    140
    141
    142
    143
    144
    145
    146
    147
    148
    149
    150
    151
    152
    153
    154
    155
    156
    157
    158
    159
    160
    161
    162
    163
    164
    165
    166
    167
    168
    169
    170
    171
    172
    173
    174
    175
    176
    177
    178
    179
    180
    181
    182
    183
    184
    185
    186
    187
    188
    189
    190
    191
    192
    193
    194
    195
    196
    197
    198
    199
    200
    201
    202
    203
    204
    205
    206
    207
    208
    209
    210
    211
    212
    213
    214
    215
    216
    217
    218
    219
    220
    221
    222
    223
    224
    225
    226
    227
    228
    229
    230
    231
    232
    233
    234
    235
    236
    237
    238
    239
    240
    241
    242
    243
    244
    'affiche les boutons de correction lors du clic sur le bouton de vérification.
    Private Sub verifier_Click(Index As Integer)
    Dim x As Integer
    Dim v As Integer
    Dim valeur0 As Integer
    Dim valeur1 As Integer
    Dim valeur2 As Integer
    Dim valeur3 As Integer
     
    Dim compteur As Integer ' compte le nombre de pions blancs pour déterminer la fin de la partie
    x = a
    compteur = 0                                     ' Initialise la valeur du compteur à 0
    valeur0 = 0
    valeur1 = 0
    valeur2 = 0
    valeur3 = 0
     
    '''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
    ' vérifie ceux qui sont bien placés
     
    For i = a To a + 3
        If couleurpc(i - a) = pion(i).FillColor Then ' Si la couleur du pion est égale à la couleur du pc alors
             If i = 0 Then
                 valeur0 = 1
             End If
             If i = 1 Then
                 valeur1 = 1
             End If '
             If i = 2 Then
                 valeur2 = 1
             End If
             If i = 3 Then
                 valeur3 = 1
             End If
            MsgBox ("valeur0=" & valeur0 & " valeur1=" & valeur1 & " valeur2=" & valeur2 & " valeur3=" & valeur3 & "// i valait " & i)
           correct(x).FillColor = 16777215           ' Définit la couleur d'un pion de correction en blanc
           correct(x).Visible = True                 ' Affiche le pion de correction
           x = x + 1                                 ' Incrémente la variable x afin de passer au pion de correction suivant
           compteur = compteur + 1                   ' Incrémente le compteur
     
        End If
    Next i
     
     
     
    '''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
    '''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
    ' Controle les bonnes couleurs mais mal placée
       MsgBox ("valeur0=" & valeur0 & " valeur1=" & valeur1 & " valeur2=" & valeur2 & " valeur3=" & valeur3)
     
     
       If valeur0 = 0 Then
            If valeur1 = 0 And combinaison(0).FillColor = pion(k + 1).FillColor Then
                    MsgBox (0)
                    MsgBox (1)
                    correct(x).FillColor = 0                        'définit la couleur du pion de correction en noir
                    correct(x).Visible = True                       'affiche le pion de correction
                    x = x + 1
            Else
            If valeur2 = 0 And combinaison(0).FillColor = pion(k + 2).FillColor Then
                  MsgBox (0)
                  MsgBox (2)
                  correct(x).FillColor = 0                        'définit la couleur du pion de correction en noir
                  correct(x).Visible = True                       'affiche le pion de correction
                  x = x + 1
            Else
            If valeur3 = 0 And combinaison(0).FillColor = pion(k + 3).FillColor Then
                  MsgBox (0)
                  MsgBox (3)
                  correct(x).FillColor = 0                        'définit la couleur du pion de correction en noir
                  correct(x).Visible = True                       'affiche le pion de correction
                  x = x + 1
            End If
            End If
            End If
       End If
     
       If valeur1 = 0 Then
              If valeur0 = 0 And couleurpc(1) = pion(k).FillColor Then
                    MsgBox (1)
                    MsgBox (0)
                    correct(x).FillColor = 0                        'définit la couleur du pion de correction en noir
                    correct(x).Visible = True                       'affiche le pion de correction
                    x = x + 1
            Else
     
            If valeur2 = 0 And couleurpc(1) = pion(k + 2).FillColor Then
                    MsgBox (1)
                    MsgBox (2)
                    correct(x).FillColor = 0                        'définit la couleur du pion de correction en noir
                    correct(x).Visible = True                       'affiche le pion de correction
                    x = x + 1
            Else
     
            If valeur3 = 0 And couleurpc(1) = pion(k + 3).FillColor Then
                    MsgBox (1)
                    MsgBox (3)
                    correct(x).FillColor = 0                        'définit la couleur du pion de correction en noir
                    correct(x).Visible = True                       'affiche le pion de correction
                    x = x + 1
            End If
            End If
            End If
     
        End If
     
        If valeur2 = 0 Then
            If valeur0 = 0 And couleurpc(2) = pion(k).FillColor Then
                    MsgBox (2)
                    MsgBox (0)
                    correct(x).FillColor = 0                        'définit la couleur du pion de correction en noir
                    correct(x).Visible = True                       'affiche le pion de correction
                    x = x + 1
            Else
     
            If valeur1 = 0 And couleurpc(2) = pion(k + 1).FillColor Then
                    MsgBox (2)
                    MsgBox (1)
                    correct(x).FillColor = 0                        'définit la couleur du pion de correction en noir
                    correct(x).Visible = True                       'affiche le pion de correction
                    x = x + 1
            Else
     
            If valeur3 = 0 And couleurpc(2) = pion(k + 3).FillColor Then
                    MsgBox (2)
                    MsgBox (3)
                    correct(x).FillColor = 0                        'définit la couleur du pion de correction en noir
                    correct(x).Visible = True                       'affiche le pion de correction
                    x = x + 1
            End If
            End If
            End If
     
       End If
     
        If valeur3 = 0 Then
            If valeur0 = 0 And couleurpc(3) = pion(k).FillColor Then
                    MsgBox (3)
                    MsgBox (0)
                    correct(x).FillColor = 0                        'définit la couleur du pion de correction en noir
                    correct(x).Visible = True                       'affiche le pion de correction
                    x = x + 1
            Else
     
            If valeur1 = 0 And couleurpc(3) = pion(k + 1).FillColor Then
                    MsgBox (3)
                    MsgBox (1)
                    correct(x).FillColor = 0                        'définit la couleur du pion de correction en noir
                    correct(x).Visible = True                       'affiche le pion de correction
                    x = x + 1
            Else
     
            If valeur2 = 0 And couleurpc(3) = pion(k + 2).FillColor Then
                    MsgBox (3)
                    MsgBox (2)
                    correct(x).FillColor = 0                        'définit la couleur du pion de correction en noir
                    correct(x).Visible = True                       'affiche le pion de correction
                    x = x + 1
            End If
            End If
            End If
     
    End If
     
    k = k + 4
     
    For i = x To a + 3
       correct(i).FillStyle = 1                       ' Sinon définit le style du pion à 1 (transparent)
       correct(i).Visible = True                      ' Affiche le pion de correction
    Next i
    For i = a To a + 3
       VScroll1(i).Visible = False                    ' Masque les scrollbars de la ligne en cour afin que l'utilisateur ne puisse changer sa selection
    Next i
    verifier(Int(a / 4)).Visible = False              ' Masque le bouton vérifier
    a = a + 4                                         ' Incrémente a de 4 afin de passer au bouton vérifier suivant
     
     
    'teste le compteur pour savoir si les 4 pions de corrections sont blanc et annoncer le fin de la partie
     
    Dim reponse$
    If compteur = 4 Then                'Si 4 correct blanc alors
       Timer1.Enabled = False           'Extinction du timer
     
       pion(v).Visible = False          'Masquage des pions suivants
       pion(v + 1).Visible = False      '
       pion(v + 2).Visible = False      '
       pion(v + 3).Visible = False      '
     
       VScroll1(v).Visible = False      'Masquage des scrollbars suivantes
       VScroll1(v + 1).Visible = False  '
       VScroll1(v + 2).Visible = False  '
       VScroll1(v + 3).Visible = False  '
     
    'Informe l'utilisteur que la partie est fini est qu'il a remporté la manche
     
       MsgBox "bravo vous avez trouvé la combinaison"
     
       Dim reponseinscription              'Déclaration de la variable, avec reponseinscription comme nom
       reponseinscription = MsgBox("Voulez vous vous inscrire aux meilleurs scores", vbYesNo + vbQuestion, "Incription aux meilleurs scores ?")
        Select Case reponseinscription
           Case vbYes                           'Si la case oui est selectionnée alors
                                                'Demande du nom par une inputbox
              Dim nom As String
              Do                              'Le do sert de controle tant que l'utilisateur n'as rien saisi
              nom = InputBox("veillez saisir votre nom s'il vous plait.", "Inscription aux meilleurs scores")
              Loop Until nom <> ""
              If Len(nom) > 6 Then
                  nom = Left(nom, 6)
              End If
              ' Vérifie que l'utilisateur a saisi quelque chose sinon on boucle et on réaffiche l'input box
              ' Affiche le nom ainsi que le temps réalisé par le joueur
              MsgBox (nom + " vous avez réalisé un temps de " + Text1 + " secondes")
              ' Ajoute le nom et le temps dans la listbox
              bonscores.scores.AddItem ("     " + nom + "                                              " + Text1)
              'Affiche les scores
              bonscores.Show
              'Enregistre les scores
              Call enregistre(bonscores.scores)
     
           Case vbNo                                                 'Si la case non est selectionnée alors
              MsgBox "Fin de la partie, félicitation", vbInformation 'Indique à l'utilisateur que la partie est finie
        End Select
        Exit Sub 'Quitte la private sub afin que les tests suivant ne s'éffectuent pas
    End If
     
    v = ((Index + 1) * 4)
    If v <= 31 Then                 ' Si v <= 31 alors
        pion(v).Visible = True          ' Affiche les pions suivants
        pion(v + 1).Visible = True
        pion(v + 2).Visible = True
        pion(v + 3).Visible = True
        VScroll1(v).Visible = True
        VScroll1(v + 1).Visible = True  ' Affiche les scrollbars suivantes
        VScroll1(v + 2).Visible = True
        VScroll1(v + 3).Visible = True
    Else                            ' Sinon
        MsgBox "Vous avez perdu ! La soulition était :", vbExclamation ' Affiche une msg box qui annonce que le joueur a perdu
        For g = 0 To 3
            Timer1.Enabled = False                                         ' Coupe le timer
            combinaison(g).Visible = True                                  ' Affiche la combinaison qu'il falait trouver
        Next g
    End If
     
    End Sub
    ps : la variable i est utilisée pour l'indice des pions de proposition ainsi que pour l'indice des petits pions de correction (qui affichent si le pion est bien placé, mal placé etc...).


    je peu fournir le zip du projet total si quelqu'un en a besoin pour m aider.
    merci de votre aide.
    L'informatique, ça fait gagner beaucoup de temps... à condition d'en avoir beaucoup devant soi !

  7. #7
    Modérateur
    Avatar de ProgElecT
    Homme Profil pro
    Retraité
    Inscrit en
    Décembre 2004
    Messages
    6 077
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 68
    Localisation : France, Haute Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Retraité
    Secteur : Communication - Médias

    Informations forums :
    Inscription : Décembre 2004
    Messages : 6 077
    Points : 17 165
    Points
    17 165
    Par défaut
    Tu utilises des variables a, g et i , mais elles ne semblent pas declarées, ta premiére ligne de ton formulaire devrait commencer parcela evite bien des tracas.
    la variable i ne se remet pas à 0
    c'est plutôt a qui ne prend jamais comme valeur 0, non?
    Cette variable a, elle n'est pas initialisé dans cette procedure, quelle valeur a-t-elle en entrée dans la procedure?
    Autrement, dans Private Sub verifier_Click(Index As Integer), declare une variable de remplacement de i, Dim U as Integer (par exemple), pour remplacer, Ctrl+H en cochant Mot entier et Respecter la case et Procedure en cours


    Une autre petite chose
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
              Dim nom As String
              Do                              'Le do sert de controle tant que l'utilisateur n'as rien saisi
              nom = InputBox("veillez saisir votre nom s'il vous plait.", "Inscription aux meilleurs scores")
              DoEvents '<==========================
              Loop Until nom <> ""
              'Loop Until Trim(nom) <> "" '<============ même un espace ne passera pas
    Un Doevents dans une boucle permet (en cas de bug) d'en sortir plus facilement avec Ctrl+Alt+Pause
    Soyez sympa, pensez -y
    Balises[CODE]...[/CODE]
    Balises[CODE=NomDuLangage]...[/CODE] quand vous mettez du code d'un autre langage que celui du forum ou vous postez.
    Balises[C]...[/C] code intégré dans une phrase.
    Balises[C=NomDuLangage]...[/C] code intégré dans une phrase quand vous mettez du code d'un autre langage que celui du forum ou vous postez.
    Le bouton en fin de discussion, quand vous avez obtenu l'aide attendue.
    ......... et pourquoi pas, pour remercier, un pour celui/ceux qui vous ont dépannés.
    👉 → → Ma page perso sur DVP ← ← 👈

  8. #8
    Membre expert Avatar de OhMonBato
    Homme Profil pro
    Inscrit en
    Mars 2007
    Messages
    2 660
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Morbihan (Bretagne)

    Informations professionnelles :
    Secteur : Industrie

    Informations forums :
    Inscription : Mars 2007
    Messages : 2 660
    Points : 3 685
    Points
    3 685
    Par défaut
    Je pensais avoir été clair pourtant en te mettant en évidence le lien entre a et i

    Peux tu répondre à cette question stp : utilises tu le mode débogage de VB pour suivre ton programme pas à pas et voir comment la valeur des variables évolue ?
    Pour VB6 : N'oubliez pas d'aller voir la FAQ et les Tutoriels
    Vous trouvez une reponse particulierement utile ? Votez pour !

Discussions similaires

  1. Runtime error avec UDF/DLL
    Par pram dans le forum SQL
    Réponses: 6
    Dernier message: 22/04/2005, 10h30
  2. [LG]Runtime Error lors d'une recherche dans un fichier
    Par Fraynor dans le forum Langage
    Réponses: 2
    Dernier message: 15/03/2005, 22h51
  3. [TP]Runtime error 106 à l'exécution
    Par BlackTiger dans le forum Turbo Pascal
    Réponses: 2
    Dernier message: 25/01/2004, 21h50
  4. [LG]runtime error 202
    Par picsou123 dans le forum Langage
    Réponses: 2
    Dernier message: 14/11/2003, 22h53
  5. [Kylix] Runtime error 230 avec INDY
    Par Anonymous dans le forum EDI
    Réponses: 2
    Dernier message: 23/03/2002, 11h51

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo