Difficulté à expliquer des lignes
K
Salut à tous,
J'ai un soucis avec un programme VBA, que je dois étudier et commenter ligne par ligne dans le cadre d'un devoir maison, mais que je n'arrive pas a comprendre. Il y'a des sortes de boucle que je n'avais jamais vu en cour, et des formules mathématiques un peu partout ce qui m’agace, mon professeur m'a expliquer que la seul difficulté de ce programme étais les GoTo mais çà ne m'a pas vraiment éclairé. J'ai beau retourner le programme dans tout les sens, changer des valeurs pour comprendre a quoi elles servent je n'arrive a rien. Je n'ai réussis qu'a retranscrire que le stricte minimum, j'aurais besoin de votre aide surtout pour cette partie, que je n'arrive pas du-tout a comprendre
Bonjour,
quelques explications ...
'remplissage matrice en prenant les 9 carrés de 3x3
For k = 0 To 2 'les lignes 'on doit remplir 3 lignes de carrés 3x3
For j = 0 To 2 'les colonnes ' par ligne, on doit remplir 3 colonnes de carrés 3x3
For i = 1 To 9 'les chiffres de 1 à 9 à mettre dans un carré 3x3
'chiffre possible
Err = 5
' se rapporte au blox precedent
10
If Err > 50 Then ' si err=50 = si la manière de remplir le carré de 9x9 ne convient pas
i = 1 ' on remet 1 dans i , signifie on essaie de remplir à nouveau le carré de 9x9
For xi = 0 To 2
For yi = 0 To 2
x = xi + 2 + k * 3 'x= numéro de ligne dans le tableau de jeu qui correspond à la case dans le carré 3x3 en cours
y = yi + 2 + j * 3 'y= numéro de colonne dans le tableau de jeu qui correspond à la case dans le carré 3x3 en cours
matrix(x, y) = " " 'on remet les cases du carré en cours de remplassage à blanc
Next yi
Next xi
n = n + 1
If n > 30 Then GoTo 30 'si le nombre de fois que l'on est tombé sur une manière de remplir le carré 9x9 qui ne convient pas est > 30 on va à 30
End If
x = Int(Rnd * 3) + 2 + k * 3 ' on tire une ligne au hasard dans le carré de 3x3 en cours
y = Int(Rnd * 3) + 2 + j * 3 ' on tire une colonne au hasard dans le carré de 3x3 en cours
If matrix(x, y) = " " Then 'si la case est vide
matrix(x, y) = i ' on y met la valeur i
Else
GoTo 10 'si la case est remplie on retourne au label 10 pour continuer le pgm
Err = Err + 1 ' cette instruction n'est jamais exécutée, elle devrait se trouver avant le goto 10
End If