VBA Colorrer 1 ligne sur 2

sjerome

XLDnaute Nouveau
Bonjour,

Je sais qu'il y a plusieurs discussions sur le sujet déjà mais est-ce qu'il serait possible de créer une maccro (bouton), faire choisir à l'utilisateur la zone concernée, la couleur et opsss une ligne sur deux colorrée.

Bien sur utilisable sur n'importe quel fichier, avec ou sans figer les cellules, et avec ou sans filtre...


En vous remerciant d'avance.

Jerome
 

Gorfael

XLDnaute Barbatruc
Re : VBA Colorrer 1 ligne sur 2

Salut sjerome et le forum
Une macro du style :
Code:
Sub test()
Dim Y As Long, X As Long
For X = 1 To Range("A1").SpecialCells(xlCellTypeLastCell).Row
    If Rows(X).Hidden = False Then
        If (Y / 2) = (Y \ 2) Then
            Rows(X).Interior.ColorIndex = xlNone
        Else
            Rows(X).Interior.ColorIndex = 3
        End If
        Y = Y + 1
    End If
Next X
End Sub
A+
 

sjerome

XLDnaute Nouveau
Re : VBA Colorrer 1 ligne sur 2

C'est bon j'ai reussi à la faire "fonctionner" mais j'ai quelques questions:

Pourquoi cela ne fonctionne pas si les cellules sont vides?

Pourquoi c'est toute la ligne qui se colorie et non ma sélection?

Peut on choisir la couleur ?


En vous remerciant d'avance.
 

Pièces jointes

  • VBA colorier 1-2.xlsx
    10.2 KB · Affichages: 77

Gorfael

XLDnaute Barbatruc
Re : VBA Colorrer 1 ligne sur 2

Salut sjerome et le forum
Pourquoi cela ne fonctionne pas si les cellules sont vides?
N'ayant qu'une description, et la coloration devant fonctionner avec ou sans filtre j'ai utilisé la propriété Hidden. Il faut donc que la ligne existe "physiquement" dans le tableau pour qu'elle soit reconnue. pour éviter de colorier tout le tableur, j'utilise la variable "dernière cellule existante" du tableur dont j'utilise la propriété ligne. Il suffit de remplacer
Code:
Range("A1").SpecialCells(xlCellTypeLastCell).Row
par la ligne voulue
Pourquoi c'est toute la ligne qui se colorie et non ma sélection?
J'y ai bien pensé, mais je ne suis pas assez fort ni en télépathie, ni en divination où j'ai eu une trais mauvaise note à mon BAC (Brevet d’Aptitude à la chiromancie).
Peut on choisir la couleur ?
Ce que je propose n'est qu'un principe, il suffit de préciser la couleur voulue : Interior.ColorIndex = 3 le 3 désigne la couleur rouge.

Comme quoi, plus tu es flou dans tes questions, moins la réponse te satisfait :cool:

"et non ma sélection?" :Je pourrais tenter de répondre en modifiant le code donné, mais, t'es devant ton écran, et ton épaule me la masque partiellement.
A+
 

Misange

XLDnaute Barbatruc
Re : VBA Colorrer 1 ligne sur 2

Bonjour
Pourquoi réinventer la roue ?
Onglet accueil/Style/mettre sous forme de tableau
tu choisis la couleur.
pas besoin de macro. C'est dispo sur tous les postes équipés de 2007 et +
L'alternance des bandes est conservée si tu filtres, trie, ajoute ou supprime des lignes ou des colonnes sans avoir rien à faire.

Si la couleur ne te plait pas tu changes et tu enregistres ce qui te plait
si tu veux alterner 1 bande blanche 3 jaunes, tu peux
Si tu veux que ce soit alterné en lignes ou en colonnes ou les deux tu peux
Si tu veux que la première ligne ou colonne ou les deux soit formatée différemment, tu peux
Si tu veux une ligne de total automatique, tu l'ajoutes en cochant une case
C'est dynamique
quand tu ajoutes une donnée juste en dessous elle s'intègre au tableau et les formules des lignes du dessus se recopient toutes seules dans la nouvelle
Ca crée des noms dynamiques automatiquement, pas besoin de formules avec decaler (...
et si tu veux mettre plusieurs tableaux les uns en dessous des autres, tu peux.

Donc franchement, je ne vois pas l'avantage de mettre un macro pour remplacer (mal) ce qui est prévu par défaut dans excel :)
 

eriiic

XLDnaute Barbatruc
Re : VBA Colorrer 1 ligne sur 2

Bonjour à tous,

J'en profite que misange évoque les tableaux...
Pour l'instant, pour moi, il y a des restrictions sur leur utilisation : impossible de trouver quelle est la syntaxe d'une référence structurée absolue.
Si on en a besoin, pour l'instant impossible d'utiliser les autres facilités des tableaux.
Ne voulant pas trop polluer ce fil je pose la question ici : Référence structurée absolue

Merci à tous, et mes excuses à sjerome d'avoir squatté quelque peu... ;-)
eric

PS: JHA a fourni la réponse
 
Dernière édition:

sjerome

XLDnaute Nouveau
Re : VBA Colorrer 1 ligne sur 2

Bonjour à tous,

Gorfael, euh tu ne lis pas entre les lignes? NON désolé pour mes explications et merci pour ton aide.

Misange, si je connaissais toutes les fonctionnalités d'excel je ne serai pas sur ce forum :) mais en tout cas merci pour ta simplification!!!! :) et je travaille dans une société ou nous ne sommes pas tous sous excel 2007 et/ ou + ;-)

Pas de souci eriiiic, si ce post peut te servir tant mieux!! ;-)
 

Misange

XLDnaute Barbatruc
Re : VBA Colorrer 1 ligne sur 2

Bizarre, il me semblait hier avoir recopié le message que j'ai mis das l'autre fil pour répondre à la question d'Eric :
J'ai répondu en détail sur cette problématique ici
http://www.excel-downloads.com/forum...ml#post1156999
comme c'est un peu long, je préfère te renvoyer sur le lien. Je le rajouterai à l'occasion (il y en a peu en ce moment !) sur excelabo.
mais en deux mots, on peut utiliser les références classiques dans un tableau (avec les $ donc) ou recourir à des plages nommées (sans avoir besoin de decaler... pour autant) ou encore utiliser la fonction indirect pour figer une colonne ou une cellule.
 

eriiic

XLDnaute Barbatruc
Re : VBA Colorrer 1 ligne sur 2

Bonjour misange,

Merci beaucoup pour ce complément très clair.
M@rina te fait des compliments... ;-)

J'ajouterai juste un truc pour le 1)
1) tu définis un nom...... Dans un tableau avec plein de colonnes c'est vite fastidieux.
On peut toujours utiliser 'Formules / Noms définis / Depuis la sélection / Ligne du haut' pour nommer un ensemble de colonnes en une opération. Ce qui évite d'alourdir avec le indirect() de 2).

Eric
 

Discussions similaires

Statistiques des forums

Discussions
312 493
Messages
2 088 956
Membres
103 990
dernier inscrit
lamiadebz