La Tour sur la feuille de calcul

Placer une pièce d’Echecs sur une case : Value d’une cellule, Mid().

Placer une pièce d’Echecs sur une case : Value d’une cellule, Mid().


Dans le code de l’affichage de l’échiquier, il reste à commenter la dernière instruction de la boucle For Next la plus imbriquée qui parcourt les colonnes pour la rangée courante. La cellule courante, représentant la case, ayant été sélectionnée, on va pouvoir mettre une pièce dessus.

Changer le contenu de la cellule avec une pièce d’Echecs

Contenu de la cellule R9C14 : cellSqr.Value = ''t'' ' tour

Pour changer le contenu d’une cellule, l’objet cellSqr expose la propriété Value.

            cellSqr.Value = Mid(strBoard, indRank * countRank + indFile + 1, 1)

La fonction d’extraction de chaîne Mid() a été expérimentée dans BoardDisplay() qui affichait l’échiquier par rangée alors qu’ici on l’affiche case par case. strBoard est passé par valeur (ByVal). C’est l’échiquier complet représenté dans une seule chaîne.

L’expression numérique

indRank * countRank + indFile + 1

est directement issue de la Résolution du problème en terme d’équation :

indexSquare = rank * 8 + file

sauf qu’on doit ajouter "+ 1" parce que l’indice du premier caractère d’une chaîne est 1 et non 0.

Value et coordonnées

Noms des colonnes et numérotation des rangées

Lors du calcul dynamique des coordonnées sur le bord de l’échiquier, on aurait pu également utiliser la propriété Value pour affecter le contenu des cellules sur le bord de l’échiquier.

        If isSideWhite Then
            Cells(indRow + 1, indRank + indCol) = Chr(ascFileA + indRank)
            Cells(indRow - indRank, indCol - 1) = indRank + 1

est équivalent à :

        If isSideWhite Then
            Cells(indRow + 1, indRank + indCol).Value = Chr(ascFileA + indRank)
            Cells(indRow - indRank, indCol - 1) .Value = indRank + 1

C’est une facilité d’Excel de rendre optionnelle la principale propriété Value de l’objet Cells(row, col). On a préféré reporter la discussion sur la propriété Value d’un objet de type Range dans cet article afin de simplifier la présentation du tableau des cellules de la feuille de calcul d’Excel.

Explorer les méthodes et propriétés d’un objet

Pour aller plus loin, cliquez sur le VBE menu "Explorateur d’objets" (F2) [Object Browser].

Dans la liste des bibliothèques, sélectionner "Excel" au lieu de "" (<All Libraries>).

Saisir "Range" dans la zone de recherche juste dessous. C’est la classe de cellSqr.

Quand il s’agit d’objet, c’est plus classe de parler de Class que de type.

Scroller verticalement jusqu’à la classe Range de la bibliothèque Excel :

Cliquez sur la classe Range.

Scroller jusqu’à retrouver la méthode Select.

Le navigateur d'objets sur Range dans le VBE

Continuer de scroller jusqu’à la propriété Value.

On peut lire le type de la propriété.

Property Value As Variant

Le type Variant de la propriété Value est un type générique capable d’accepter tous les types.

  • Ses + : on peut écrire un code générique qui s’adapte à n’importe quel type de variable.
  • Ses - : pas de contrôle de type puisqu’il est générique. Moins performant qu’un type spécifique plus spécialisé.

Cela explique pourquoi, sans conversion, on peut mettre dans une cellule le nom d’une colonne soit une String entre ’’a’’ et ’’h’’ mais également le numéro de rangée soit un Byte entre 1 et 8 et aussi l’initiale (String) d’une pièce de jeu d’Echecs qui est rendue sous sa forme graphique grâce à la police Chess Merida Arena.


Précédent : Couleur d’une case en VBA

Suivant : Partir sur une nouvelle base en VBA

Posté le 15 juillet 2011 par Matt