Damier rouge et noir

bonsoir , j'ai codé un damier de couleur rouge et noir et de taille (5x5)

t = Array(1, 3) 'les numeros de couleur
For i = ActiveCell.Row To ActiveCell.Row + 5
  If i Mod 2 <> 0 Then
   For j = ActiveCell.Column To ActiveCell.Column + 5
     Cells(i, j).Interior.ColorIndex = t((j - 1) Mod 2)
   Next
   Else
   For j = ActiveCell.Column To ActiveCell.Column + 5
     Cells(i, j).Interior.ColorIndex = t((j) Mod 2)
   Next
  End If
Next

peut on faire plus court ?

Merci pour vos réponses

Bonsoir,

Je ne sais pas... ! Mais cela m'a donné une idée...

Sub Damier()
    Dim Damier As Range, c As Range
    With ActiveSheet
        .Rows("2:7").RowHeight = 25
        .Columns("B:G").ColumnWidth = 4
        Set Damier = .Range("B2:G7")
    End With
    With Damier.FormatConditions
        .Add(xlExpression, , "=MOD(LIGNE();2)=MOD(COLONNE();2)").Interior.Color = vbBlack
        .Add(xlExpression, , "=MOD(LIGNE();2)<>MOD(COLONNE();2)").Interior.Color = vbRed
    End With
    For Each c In Damier.Cells
        c.Interior.Color = c.DisplayFormat.Interior.Color
    Next c
    Damier.FormatConditions.Delete
End Sub

On dimensionne un damier 6x6 (le tien fait 6x6...) avec des cellules carrées (ou à peu près, on pourra facilement modifier les dimensions).

On le colore par MFC (voir les formules dans le code).

On transforme les couleurs MFC en couleur des cellules.

On supprime les MFC.

On peut aussi se contenter de conserver les couleurs MFC, dont les formules sont simples.

Cordialement.

Merci Mferrand je vais me pencher sur votre solution

Tu peux faire :

    Dim t, i%, j%
    t = Array(1, 3)
    With ActiveCell
        For i = 1 To 6
            For j = 1 To 6
                .Cells(i, j).Interior.ColorIndex = t((i Mod 2 = j Mod 2) * -1)
            Next j
        Next i
    End With

Tres condensé , et en plus en peu de lignes ! bravo pour cette solution Mferrand ...Merci à vous

par contre je ne connais pas le symbole que vous avez placé à coté des variables i et j en déclaration ? qu'est ce que cela représente ? merci.

Bonjour rocket4,

Le symbole % à côté de i et j est le caractère de déclaration de type pour : Integer

Ainsi, Dim i% est strictement équivalent à : Dim i As Integer


Tu as aussi, par exemple :

Dim i& : idem que Dim i As Long

Dim i! : idem que Dim i As Single

Dim i# : idem que Dim i As Double

Dim i@ : idem que Dim i As Currency

Dim i$ : idem que Dim i As String


Mais pour Byte ou Boolean (autres exemples), il n'y a pas de caractère de déclaration de type.

... ou s'il y en a, l'aide VBA n'en parle pas ; peut-être est-ce non documenté et top secret ?

dhany

Rechercher des sujets similaires à "damier rouge noir"