Salut la compagnie !!

J'ai développé un mastermind en VB6 pour les cours et je rencontre un soucis.
Je m'explique :
- Les Shapes servent a afficher les couleurs.
- Les VScrollbar servent à changer la couleur des Shapes grâce à l'index.
- Les Shapes sont placés sur une couleur par défaut au démarrage.

Je rencontre un soucis lors du premier clic sur le VScrollbar.
Ma première couleur est définie par le numéro d'index 0 et lors du clic sur le VScrollbar (pour changer la couleur) l'index passe immédiatement à 1.

le problème c'est que ma première couleur (celle qui porte l'indice 0) n'est pas affiché dès le premier clic. il me faut donc re-cliquer sur le VScrollbar dans l'autre sens afin de décrémenter l'index jusque 0.

Aidez moi s'il vous plait !!!
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
 
Dim i As Integer            'variable qui sert d'index pour les pions
Dim a As Integer            'variable qui sert dans les indices pour le controle des pions
Dim color(8) As String      'tableau qui contient les couleurs
Dim couleurpc(8) As String  'table qui contient les couleurs que le pc choisira au hasard
 
Private Sub Form_Load()
 
Randomize           ' Fonction choix aléatoire
 
color(0) = 255      'rouge
color(1) = 33023    'orange
color(2) = 65535    'jaune
color(3) = 65280    'vert
color(4) = 16776960 'bleu
color(5) = 16777215 'blanc
color(6) = 16576    'marron
color(7) = 0        'noir
 
' Permet au pc de choisir 4 couleurs parmi celles qui lui sont proposées
couleurpc(0) = color(Int(Rnd * 8))
couleurpc(1) = color(Int(Rnd * 8))
couleurpc(2) = color(Int(Rnd * 8))
couleurpc(3) = color(Int(Rnd * 8))
 
' Initialise la variable
a = 0
 
' Définit la couleur des pions de combinaison (égal aux couleurs choisie par le pc)
combinaison(0).FillColor = couleurpc(0)
combinaison(1).FillColor = couleurpc(1)
combinaison(2).FillColor = couleurpc(2)
combinaison(3).FillColor = couleurpc(3)
 
End Sub
 
Private Sub VScroll1_Change(Index As Integer)
pion(Index).FillColor = color(Val(VScroll1(Index)))
'change la couleur des pions par clic sur la barre de défilement
 
    If pion(a).FillColor <> &H8080& And pion(a + 1).FillColor <> &H8080& And pion(a + 2).FillColor <> &H8080& And pion(a + 3).FillColor <> &H8080& Then
        verifier(Int(a / 4)).Visible = True
    End If
'affiche le bouton verifier si la couleur des 4 pions à été selectionnée.
End Sub
 
'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 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
 
For i = a To a + 3                               ' Selectionne ligne par ligne
    If pion(i).FillColor = couleurpc(i - a) Then ' Si la couleur du pion est égale à la couleur du pc alors
       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
    Else
       For j = a To a + 3
          If (pion(i).FillColor = couleurpc(j - a)) And (i <> j) Then ' Si la couleur du pion est égale à la couleur du pc alors mais que la place du pio n'est pas identique
             correct(x).FillColor = 0                                 ' Définit la couleur d'un pion de correction en noir
             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
             j = 100
          End If
       Next j
    End If
Next i
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
 
   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)
 
       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
combinaison(k).Visible = True                                  ' Affiche la combinaison qu'il falait trouver
Next k
End If
 
End Sub
J'ai retiré ce qui était inutile pour trouver, j'espère ne pas en avoir retiré trop...