Mise en couleur de lignes sélectionnées

Lolo9204

XLDnaute Nouveau
Bonsoir à tous,

J'ai un petit problème sur lequel je bute à vous soumettre :

Avec une macro VBA, à partir d'un critère de recherche je cherche dans plusieurs listes si ce critère est présent (une ou plusieurs fois) et, si oui, de le copier et de le coller dans une feuille de synthèse.

Pour rendre la feuille de synthèse plus lisible, je souhaite colorer de manière identique les lignes correspondant au même critère puis passer à une couleur différente pour les lignes correspondant au critère suivant en alternant les couleurs.

Cependant, certains critères n'étant pas forcément présents dans la ligne, il se peut que certains résultats de recherche soient de la même couleur alors qu'ils ne correspondent pas au même critère tout simplement parce que deux résultats de recherche peuvent se suivrent sur des critères de recherche pas forcément proches.

Je ne sais pas si je suis bien clair, n'hésitez pas à me dire si c'est le cas.
 

Excel-lent

XLDnaute Barbatruc
Re : Mise en couleur de lignes sélectionnées

Bonsoir et bienvenu sur le forum Lolo9204,

Lolo9204 à dit:
Pour rendre la feuille de synthèse plus lisible, je souhaite colorer de manière identique les lignes correspondant au même critère puis passer à une couleur différente pour les lignes correspondant au critère suivant en alternant les couleurs.

Pourquoi pas une MFC (Mise en Forme Conditionnelle)?

Impossible d'en dire plus au vue des informations que tu nous donnes!

Ton explication est clair mais beaucoup trop général pour qu'on puisse te répondre précisément!

Tu ne peux pas faire un petit fichier exemple avec :
-> ce que tu as, ce que tu veux obtenir
-> ton brouillon de macro avec ce qu'elle fait de travers et comment tu vois les choses.

Sans cela difficile de t'aider plus.

A te lire
 

Lolo9204

XLDnaute Nouveau
Re : Mise en couleur de lignes sélectionnées

Pourquoi pas une MFC (Mise en Forme Conditionnelle)?


Bonjour Excel-lent,

Tout d'abord, merci pour ta réponse :) .

Pas de MFC parce que je ne sais pas si c'est faisable avec VBA et ensuite parce que tous mes critères de recherche sont uniques.

Je n'ai pas mon fichier sous la main, il est au boulot (et il est un peu gros, mais j'essaierai de le synthétiser pour le mettre en PJ).

En gros, voici la méthode recherchée :
Je prends le premier critère de recherche et je scanne les feuilles dans lesquelles ce critère peut être présent. Si oui, je copie la ligne dans laquelle ce critère est présent et je la colle dans une feuille de synthèse en la colorant puis je scanne les lignes suivantes. Si non, je scanne les lignes suivantes.

Un critère peut avoir de 0 à N lignes de résultat(s) possible(s) et je souhaite colorer de la même couleur toutes les lignes correspondant à ce critère et d'une autre couleur toutes les lignes correspondant au critère suivant en alternant les couleurs.

Le hic, c'est que certains critères n'ont pas de résultat de recherche et, avec ma macro, il se peut que deux critères qui se suivent aient la même couleur et c'est justement ce que je souhaite éviter, mais je n'arrive pas à trouver l'Astuce pour le faire :mad:.

En espérant avoir été plus clair, sinon je mettrai un exemple la semaine prochaine ;).

L.
 

Excel-lent

XLDnaute Barbatruc
Re : Mise en couleur de lignes sélectionnées

Bonjour Lolo9204,

Lolo9204 à dit:
Pas de MFC parce que je ne sais pas si c'est faisable avec VBA

Le meilleur moyen de le savoir est d'utiliser l'enregistreur de macro et voir le code qu'il t'écrit ;)

De plus, pourquoi avec VBA? Tu peux aussi le faire sans VBA (c'est à ça que je pensais)!

Pour le reste, tu es toujours aussi clair, mais malheureusement ma réponse reste la même!

Tu as essayé la fonction NB.SI() (=> COUNTIF en langage VBA) ?

Bon Samedi
 

Lolo9204

XLDnaute Nouveau
Re : Mise en couleur de lignes sélectionnées

De plus, pourquoi avec VBA? Tu peux aussi le faire sans VBA (c'est à ça que je pensais)!
Ca oui, c'est sûr, mais vu le nombre de lignes à traiter (6 feuilles comprennant entre 30000 et 56000 lignes chacune) et étant donné qu'il y a déjà une macro créée pour scanner, autant l'améliorer pour qu'elle fasse tout jusqu'au bout, non ? ;)

J'avais pensé à demander dans la macro de regarder la couleur de la ligne précédente dans la feuilles de synthèse et de prendre l'autre couleur pour la ligne suivante, mais je dois mal m'y prendre.
 

Excel-lent

XLDnaute Barbatruc
Re : Mise en couleur de lignes sélectionnées

Bonjour Lolo9204,

Lolo9204 à dit:
étant donné qu'il y a déjà une macro créée pour scanner, autant l'améliorer pour qu'elle fasse tout jusqu'au bout, non ? ;)

C'est toi le patron, c'est toi qui voit ;)

Lolo9204 à dit:
J'avais pensé à demander dans la macro de regarder la couleur de la ligne précédente dans la feuilles de synthèse et de prendre l'autre couleur pour la ligne suivante, mais je dois mal m'y prendre.

On va y arriver! Voici une question précise! Voici ci-dessous deux macro te permettant de faire cela

Code:
Sub Couleur1()
[COLOR="Green"]' Macro enregistrée par Excel-lent
' Sans passer par l'utilisation d'une variable, avantage : code plus court

' Donner à la cellule B9, la couleur de fond de la cellule B8[/COLOR]
Range("B9").Interior.ColorIndex = Range("B8").Interior.ColorIndex

End Sub

Code:
Sub Couleur2()
[COLOR="Green"]' Macro enregistrée par Excel-lent
' En utilisant une variable, avantage : si tu utilise plusieurs fois cette
' couleur dans ton code, il sera plus rapide et plus clair

' Définition de la variable qui contiendra la couleur de fond de la cellule ...[/COLOR]
Dim CouleurCellulePrécédente As Long

[COLOR="Green"]' Mettre la couleur de fond de la cellule B8 dans la variable CouleurCellulePrécédente[/COLOR]
CouleurCellulePrécédente = Range("B8").Interior.ColorIndex

[COLOR="Green"]' Donner à la cellule B9, la couleur de fond contenu dans la variable CouleurCellulePrécédente[/COLOR]
Range("B9").Interior.ColorIndex = CouleurCellulePrécédente

End Sub

Code:
Sub Couleur3()
[COLOR="Green"]' Macro enregistrée par Excel-lent
' Idem que la macro Couleur1, mais au lieu de colorier la cellule B9
' elle colorie la ligne 9 de la même couleur que celle de la cellule B8[/COLOR]

Rows(9).Interior.ColorIndex = Range("B8").Interior.ColorIndex

End Sub

Cette dernière macro correspond au mieux à ta demande, mais je t'ai mis ces autres exemples pour que tu comprenne la logique de la fonction .Interior.ColorIndex

Evidement, tu peux remplacer :
Code:
Rows(9).Interior.ColorIndex = Range("B8").Interior.ColorIndex

par :
Code:
Rows(9).Interior.ColorIndex = Rows(8).Interior.ColorIndex

Mais attention, il faut bien que TOUTE ta ligne 8 soit colorié de la couleur ... et non pas que certaines cellules!

Bon Dimanche
 
Dernière édition:

Discussions similaires

Réponses
12
Affichages
265

Statistiques des forums

Discussions
312 493
Messages
2 088 955
Membres
103 989
dernier inscrit
jralonso