Dessiner un damier avec VBA-Excel

Bonjour Mesdames et Messieurs,

Je me trouve personnellement devant un casse-tête !

Aidez-moi s'il vous plaît à répondre à ces procédures

je vous remercie

Dessiner un damier

1. Écrire une procédure DessinerDamier(n) qui dessine un damier de n x n cases dans

une feuille de calcul. La hauteur des lignes doit être égale à la largeur des colonnes

(voir Erreur ! Source du renvoi introuvable.).

Remarques :

- Pour modifier la largeur des colonnes d'une plage de cellules, utilisez la propriété

ColumnWidth de l'objet Range et pour modifier la hauteur des lignes d'une plage de

cellules, utilisez la propriété RowHeight de l'objet Range ;

- Attention, ces deux propriétés n'utilisent pas la même unité. La propriété ColumnWidth

utilise la largeur d'un caractère dans le style Normal alors que la propriété RowHeight

utilise le point ;

- La propriété en lecture seule Width de l'objet Range retourne la largeur d'une colonne en

points.

capture damier excel

2. Écrire une procédure TestDamier() qui affiche une InputBox() demandant à

l'utilisateur de saisir un entier entre 2 et 10, puis appelle la procédure

DessinerDamier() en lui passant la valeur saisie par l'utilisateur.

La procédure doit vérifier que la valeur saisie est bien un nombre entre 2 et 10 et afficher

l'InputBox tant que l'utilisateur n'a pas saisi une valeur correcte ou tant qu'il n'a pas saisi

"quit". Si l'utilisateur saisit "quit" la procédure TestDamier() ne doit pas appeler la

procédure DessinerDamier().

Mes remerciements à toutes et à tous

Bonsoir Theodulemagloire,

Voir ci-dessous le fichier réalisé pour l'occasion. Accepter les macros puis cliquer sur le bouton gris TestDamier.

122damier.xlsm (17.48 Ko)

Le code des macros est reproduit ci-après.

Sub TestDamier()
Deb:
Nb = InputBox("Entier entre 2 et 10 inclus", "Veuillez entrer un")
'Test d'entier entre 2 et 10 inclus. Plus test entrée vide
On Error GoTo Deb
If Int(Nb) - Nb <> 0 Or Nb < 2 Or Nb > 10 Then MsgBox "Erreur, Recommencez": GoTo Deb
'Appel de l'autre procédure
DessinerDamier (Nb)
End Sub
Sub DessinerDamier(Nb As Integer)
'Effacement du précédent damier
Range("A1:J10").Clear
'Boucle paire Lig/Col
For Col = 1 To Nb
For Lig = 1 To Nb
'Coloration selon modulo 2
Cells(Lig, Col).Interior.Color = IIf((Col + Lig) Mod 2 = 0, RGB(0, 0, 0), xlNone)
Next Lig, Col
End Sub

Bonsoir theodulemagloire ,

Un essai dans le fichier joint. Cliquer sur le bouton "Hop!"

nota : Avant de lancer Damier, ajuster la largeur de la colonne A. Cette largeur sera la longueur des côtés des cases carrées du damier.

Le code est dans module1:

Sub Hop()
Dim taille
   Do While True
      taille = False
      taille = Application.InputBox("Entrez le nombre de case d'un côté (entre 2 et 10)" & vbLf & _
               "Annuler pour abandonner", "Taille du damier", 6, , , , , 1)
      If taille = False Then MsgBox "Abandon!": Exit Sub
      taille = Int(taille)
      If taille >= 2 And taille <= 10 Then Exit Do
   Loop
   damier taille
   MsgBox "La damier à " & taille & " cases de côté a été tracé."
End Sub

Sub damier(ByVal xn As Long)
Dim i&, j&
   With ActiveSheet
      .Range("a1").Resize(10, 10).Clear
      For i = 1 To xn
         For j = 1 + (i - 1) Mod 2 To xn Step 2
            .Cells(i, j).Interior.Color = vbBlack
         Next j
      Next i
      With .Range("a1")
          Rows(1).Resize(xn).RowHeight = .Width
          Columns(1).Resize(, xn).ColumnWidth = .ColumnWidth
          .Resize(xn, xn).Borders.LineStyle = xlContinuous
      End With
   End With
End Sub
Rechercher des sujets similaires à "dessiner damier vba"