code vba "Damier"

kechor

XLDnaute Occasionnel
Bonsoir au forum,
Je viens de réaliser mon premier code, un "damier".:rolleyes:
Je voulais votre avis sur ce code, et d'autres exemple de codes pour ce "damier".
merci et bonne nuit.:eek:
 

Pièces jointes

  • Damier.xls
    19 KB · Affichages: 296
  • Damier.xls
    19 KB · Affichages: 273
  • Damier.xls
    19 KB · Affichages: 293

Efgé

XLDnaute Barbatruc
Re : code vba "Damier"

Bonjour à tous :)
Histoire de participer:
VB:
Sub Test()
With Sheets("Feuil1").Range("$A$1:$J$10")
    .FormulaLocal = "=LN(MOD((LIGNE()+COLONNE());2))"
    .SpecialCells(-4123, 16).Interior.ColorIndex = Int(54 * Rnd + 1)
    .SpecialCells(-4123, 1).Interior.ColorIndex = Int(54 * Rnd + 1)
    .ClearContents
End With
End Sub
Cordialement
 
Dernière édition:

Efgé

XLDnaute Barbatruc
Re : code vba "Damier"

Bonjour kechor, le fil :)
on rempli la plage avec une formule
=LN(MOD((LIGNE()+COLONNE());2))

MOD((LIGNE()+COLONNE());2) renvoi une foi 1 une foi 0
LN(0) renvoi une erreur

.SpecialCells(-4123, 16) peux s'écrire .SpecialCells(xlCellTypeFormulas, xlErrors)
Cela va cibler toutes les cellule de la plage dont la formule est en erreur

.SpecialCells(-4123, 1) peux s'écrire .SpecialCells(xlCellTypeFormulas, xlNumbers )
Cela va cibler toutes les cellule de la plage dont la formule renvoi un nombre

Int(54 * Rnd + 1)
Renvoi un chiffre plus ou moin aléatoire, entre 2 et 56 pour la couleur de la plage

Cordialement
 

Si...

XLDnaute Barbatruc
Re : code vba "Damier"

salut

bonsoir à tous,
Si... pourrais me détailler ton code stp.
bonsoir.

avec plaisir :)
----------------------------------------------------------------------------------------------
Pour la macro évènementielle écrite dans la page de code de la feuille (Feuil1)
Code:
Private Sub Worksheet_SelectionChange(ByVal R As Range)
  'choix des fonds
  If Intersect(R, [A2:B2]) Is Nothing Then Exit Sub                        
  c = Application.Dialogs(xlDialogPatterns).Show
  If c = False Then Exit Sub
End Sub

si la cellule sélectionnée (au clic par exemple) n'est ni A2, ni B2 : aucune action (sortie de la macro par Exit Sub)
sinon ouverture de la boîte de dialogue de formatage d'une cellule (couleurs et styles) et selon sa fermeture, sortie (par Annuler ou la croix) ou mise en forme de la cellule (par Ok) avec les choix faits.

Tu peux te dispenser de cette procédure si tu formates directement ces 2 cellules sur la feuille.
Il te restera peu de lignes à écrire simplement.
------------------------------------------------------------------------------------------
Pour la macro associée au bouton et écrite dans la page de code de la feuille où il se trouve (Feuil1)
Code:
Private Sub CommandButton1_Click()
  [A2].Copy Range("D3,E4")
  'pas obligatoire
  [B2].Copy Range("D4,E3")
  [D3:E4].Copy [D3].Resize(10, 10)
End Sub

la cellule A2 est copiée avec son formatage en D3 et en E4,
la cellule B2 est copiée avec son formatage en D4 et en E3,
le carré D3:E4 est copié sur les 10 lignes et 10 colonnes à partir de D3 (inclus).

En supprimant d'abord le fond du damier*, fais varier 10 pour voir l'effet de Resize (F1 te donnera d'autres explications de ce mot).

* ce qui aurait pu se faire en premier dans cette macro.
 

Discussions similaires

Réponses
13
Affichages
261
Réponses
7
Affichages
163
Réponses
21
Affichages
331
Réponses
2
Affichages
99

Statistiques des forums

Discussions
311 725
Messages
2 081 944
Membres
101 849
dernier inscrit
florentMIG