Ceci est une page optimisée pour les mobiles. Cliquez sur ce texte pour afficher la vraie page.

XL 2010 Griser une ligne sur deux sur x lignes (Avec un Grand Merci)

misteryann

XLDnaute Occasionnel
Bonsoir le Forum.

Je cherchais depuis un moment comment "griser" une ligne sur deux dans un tableau comportant 8 colonnes et x lignes (de 1 à 500 - 600). Mais rien...
Puis je me suis rappeler que l'on pouvait utiliser l'enregistreur de macro.

Les pros du VBA ne s'y tromperont pas et feront plus simple mais si cela peut aider les novices comme moi, tant mieux.

Après quelques tâtonnements et recherche sur l'internet pour connaître la dernière ligne vide ça donne cela :

Sub Macro9()
' en C1 j'ai mis la formule =MAX(SI(NON(ESTVIDE(A1:A1009));LIGNE(A1:A1009))) sous forme matricielle (validation par ctrl +maj+entrée)

Dim DerniereLigne As Integer
DerniereLigne = Range("G" & Sheets("Edition").Cells(1, 3)).End(xlUp).Row

Columns("A:H").Select

'centrage des cellules
With Selection
.HorizontalAlignment = xlCenter
.WrapText = False
.Orientation = 0
.AddIndent = False
.IndentLevel = 0
.ShrinkToFit = False
.ReadingOrder = xlContext
.MergeCells = False
End With

Sheets("Edition").Activate
Range("A7:H" & Sheets("Edition").Cells(1, 3)).Select
ActiveSheet.ListObjects.Add(xlSrcRange, Range("$A$7:H" & Sheets("Edition").Cells(1, 3)), , xlYes).Name = "Tableau12"
Range("Tableau12[#All]").Select
ActiveSheet.ListObjects("Tableau12").TableStyle = "TableStyleLight1"

' dimensionnement des cellules
Columns("A:A").ColumnWidth = 30
Columns("C:C").ColumnWidth = 17
Columns("E:E").ColumnWidth = 26
Columns("D").EntireColumn.AutoFit
Columns("B:B").EntireColumn.AutoFit
Columns("F:F").EntireColumn.AutoFit
Columns("G:G").EntireColumn.AutoFit
Columns("H:H").EntireColumn.AutoFit
End Sub

Mais pour tout avouer, je suis trop content d'avoir "créer" mon premier code en VBA
Par ailleurs si quelqu'un pouvait se pencher sur mon post sur le diagramme de GANT...

Bien cordialement.
Misteryann
 
Dernière édition:

Dranreb

XLDnaute Barbatruc
Mais si, comme je le suppose c'est parce qu'il y a des titres devant, pourquoi ne faites vous pas subir à la plage, avec ses titres, une mise sous forme de tableau ?
Outre que ça le fait alors automatiquement, ça peut faciliter bien d'autres choses.
Par exemple plus besoin de faire des End(xlUp) car on a directement le nombre de lignes par LOt.ListRows.Count, avec LOt: une variable ListObject qui représente le tableau.
 

Mexav

XLDnaute Nouveau
Bonsoir Dranreb,
J'ai pu colorer les deux blocs A:E et L:Q, voir le code en pièce jointe, je dois fignoler les couleurs.
Je ne saisi pas bien votre conseil " pourquoi ne faites vous pas subir à la plage, avec ses titres, une mise sous forme de tableau ?", j'aurais besoin d'un exemple pour comprendre la marche à suivre.
Mais en attendant, j'ai obtenu ce que je souhaitais et cela fonctionne correctement, je vous en remercie chaleureusement. Mexav
 

Pièces jointes

  • Code des deux Blocs.txt
    1.9 KB · Affichages: 15

Dranreb

XLDnaute Barbatruc
C'est facile: vous sélectionnez une plage avec des titres, menu Accueil, groupe Styles, commande Mettre sous forme de tableau. Il vous propose de nombreux modèles à bandes horizontales alternées, et vous pouvez aussi vous en créer des personnalisés.
 

Dranreb

XLDnaute Barbatruc
Le CouleurCls.xlsm est pourvu d'une macro CapturePixel permettant de de trouver le code couleur de n'importe quel pixel, y compris du fond d'une cellule. Les valeurs RVB sont affichées, de même que code en hexa Long, et ce dernier est même copié dans le presse papier en vu d'un collage en VBA..
 

Mexav

XLDnaute Nouveau
OK merci, je vais essayer de m'en servir au mieux.
Bien cordialement Mexav
 

Discussions similaires

Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…