Alphabet des colonnes

Votre première boucle For Next.

Votre première boucle For Next.


Ouvrir votre classeur Chess.xls puis le VBE (Alt+F11), la fenêtre Exécution (Ctrl+G), et la fenêtre d’édition sur le module ModChess. On réutilise les constantes définies dans Tout l’échiquier dans une chaîne.

Alphabet des colonnes

Avant d’améliorer la présentation du mini échiquier des initiales des pièces en les affichant par rangée, on commence par les coordonnées des colonnes sur le bord de l’échiquier.

Dans la fenêtre d’édition du module ModChess, ajouter la fonction suivante.

Function Alphabet() As String
Dim indFile As Byte

    Alphabet = ""
    For indFile = 0 To countFile - 1
        Alphabet = Alphabet + Chr(indFile + ascFileA)
    Next
End Function

Dans la fenêtre d’Exécution :

? Alphabet()

abcdefgh

On commence par initialiser Alphabet avec la chaîne vide puis on accumule (concatène) dans cette String les huit premières lettres de l’alphabet. Dans FileRankToString(), on a déjà vu comment convertir l’index de colonne de 0 à 7 en lettre entre ’’a’’ et ’’h’’.

Ce qui est nouveau est la boucle For Next.

For demande un index (ici indFile) qui varie de la borne minimale 0 à (To) la borne maximale countFile - 1 = 7 d’un pas de 1.

En fin du bloc For, Next signifie recommencer avec la valeur suivante de indFile, c-a-d que l’on a incrémenté indFile exactement comme si on avait indFile = indFile + 1 puis GoTo vers le début du bloc For.

On exécute le bloc d’instructions du For huit fois parce qu’il y a huit colonnes. Dans ce For, le bloc n’a qu’une instruction :

Alphabet = Alphabet + Chr(indFile + ascFileA)

Comme toujours avec l’affectation, il faut lire dans le sens contrairement du sens de lecture occidental. C-a-d on commence à évaluer l’expression de droite qui concatène Alphabet avec la lettre minuscule Chr(indFile + ascFileA). La cible de l’affectation est toujours à gauche.

Avant de rentrer dans la boucle, Alphabet = ’’’’ la chaîne vide.

La première fois quand indFile = 0, l’expression de droite est donc la chaîne vide concaténée avec Chr(0 + ascFileA) = Chr(ascFileA) = ’’a’’.

Le résultat de l’expression est donc ’’a’’ qui est rangé dans Alphabet en partie gauche de l’affectation.

Alphabet apparaît à la fois en partie droite et en partie gauche du symbole d’affection "=".

  • A droite sa valeur est l’ancienne valeur avant l’affectation.
  • A gauche sa nouvelle valeur va être affectée par l’expression en partie droite.

Dressons un tableau des différentes valeurs de la chaîne Alphabet selon l’index indFile :

indFileAlphabet
 ? ’’’’
0 ’’a’’
1 ’’ab’’
2 ’’abc’’
3 ’’abcd’’
4 ’’abcde’’
5 ’’abcdef’’
6 ’’abcdefg’’
7 ’’abcdefgh’’

Pour mieux comprendre votre première boucle, suivez pas à pas l’évolution de la String Alphabet dans le débogueur de VBA. Voir Mise au point avec le débogueur VBA.


Précédent : Tout l’échiquier dans une chaîne

Suivant : Mini échiquier 2D des pièces

Posté le 10 juillet 2011 par Matt