Macro évenementielle pour alterner couleur ligne

Law

XLDnaute Junior
Bonjour le forum,

J'ai un tableau Excel avec des données, à partir de la ligne 10, et de la colonne A à O.

J'ai besoin d'une macro évènementielle qui, à chaque changement de valeur de la colonne C, me change mes lignes de couleur, et ainsi de suite, par alternance.

Ladite macro évènementielle doit s'exécuter à chaque fois qu'on modifie quelque chose dans mon tableau (par exemple si on rajoute une ligne ou si l'on en supprime une).

Les ColorIndex à alterner sont 10 et 55.

J'ai essayé avec Do While et Loop mais sans résultat, je dois mal m'y prendre.

Je joins un modèle pour mieux vous faire comprendre.
En vous remerciant par avance.
 

Pièces jointes

  • Forum.xls
    20.5 KB · Affichages: 199
  • Forum.xls
    20.5 KB · Affichages: 214
  • Forum.xls
    20.5 KB · Affichages: 213

Dull

XLDnaute Barbatruc
Re : Macro évenementielle pour alterner couleur ligne

Salut Law, le Forum

Je ne pense pas qu'une macro soit approprié pour cette mise en Forme

regarde cette MFC de JBoisgontier qui fera certainement l'affaire.

Law.jpg

Bonne Journée
 

Pièces jointes

  • Law.zip
    8 KB · Affichages: 185

Law

XLDnaute Junior
Re : Macro évenementielle pour alterner couleur ligne

Merci à tous les deux !

Je vais tester le VBA et la MFC.
Je pense que je vais choisir la MFC, car de ce que j'ai aperçu, avec le code VBA, il faut ré-exécuter la macro (en cas de rajout de ligne par exemple) pour que l'alternance de couleurs se ré-actualise. A moins de mettre ça dans une procédure événementielle, je vais regarder.

En tous cas, une fois de plus, merci beaucoup ! :)
 

Law

XLDnaute Junior
Re : Macro évenementielle pour alterner couleur ligne

Merci à tous les deux !

Je vais tester le VBA et la MFC.
Je pense que je vais choisir la MFC, car de ce que j'ai aperçu, avec le code VBA, il faut ré-exécuter la macro (en cas de rajout de ligne par exemple) pour que l'alternance de couleurs se ré-actualise. A moins de mettre ça dans une procédure événementielle, je vais regarder.

En tous cas, une fois de plus, merci beaucoup ! :)

Bon, je viens de tester et la voie MFC et la voie VBA, aucune ne correspond tout à fait à ce qu'il me faudrait.

Par exemple, avec MFC, la formule (que j'avoue bien humblement ne pas comprendre ! lol !) fonctionne... mais si par exemple j'ai :

25000/000 en vert
25000/000 en vert
45000/001 en bleu
45000/001 en bleu
45000/001 en bleu
12222/000 en vert
12222/000 en vert

et que je supprime les 3 lignes "45000/001", et bien les 2 lignes "12222/000" ne repassent pas automatiquement en bleu, et je me retrouve donc avec 2 groupes de lignes discontinues ("25000/000" et "12222/000") qui sont toutes les 2 en vert.

Avec la macro, comme je le disais, ce qui me gêne, c'est qu'il faut la ré-exécuter à chaque fois. J'ai tenté une adaptation en macro évènementielle, mais sans résultat concluant.

Bref, help again !!!!!!!! :)
Merci beaucoup.
 

ROGER2327

XLDnaute Barbatruc
Re : Macro évenementielle pour alterner couleur ligne

Bonjour à tous
Un essai de procédure événementielle :
Code:
[COLOR="DarkSlateGray"][B]Private Sub Worksheet_Change(ByVal Target As Range)
   If Target.Cells(1, 1).Column = 3 And Target.Cells(1, 1).Row > 9 Then colorie
End Sub

Private Sub colorie()
Dim l1 As Long, cl As Integer
   l1 = 10
   cl = 10
   Do
      With Range(Cells(l1, 1), Cells(l1, 15))
         If Cells(l1, 3).Value <> Cells(l1 - 1, 3) Then
            cl = cl + (1 / 2 + (cl = 55)) * 90
            With .Borders(xlEdgeTop)
               .Weight = xlThin
               .ColorIndex = xlAutomatic
            End With
         Else
            With .Borders(xlEdgeTop)
               .Weight = xlHairline
               .ColorIndex = 48
            End With
         End If
         .Font.ColorIndex = cl
      End With
      l1 = l1 + 1
   Loop Until IsEmpty(Cells(l1, 3))
End Sub[/B][/COLOR]
ROGER2327
#2540
 

Law

XLDnaute Junior
Re : Macro évenementielle pour alterner couleur ligne

Bonjour à tous
Un essai de procédure événementielle :
Code:
[COLOR="DarkSlateGray"][B]Private Sub Worksheet_Change(ByVal Target As Range)
   If Target.Cells(1, 1).Column = 3 And Target.Cells(1, 1).Row > 9 Then colorie
End Sub

Private Sub colorie()
Dim l1 As Long, cl As Integer
   l1 = 10
   cl = 10
   Do
      With Range(Cells(l1, 1), Cells(l1, 15))
         If Cells(l1, 3).Value <> Cells(l1 - 1, 3) Then
            cl = cl + (1 / 2 + (cl = 55)) * 90
            With .Borders(xlEdgeTop)
               .Weight = xlThin
               .ColorIndex = xlAutomatic
            End With
         Else
            With .Borders(xlEdgeTop)
               .Weight = xlHairline
               .ColorIndex = 48
            End With
         End If
         .Font.ColorIndex = cl
      End With
      l1 = l1 + 1
   Loop Until IsEmpty(Cells(l1, 3))
End Sub[/B][/COLOR]
ROGER2327
#2540

Merci Roger, c'est presque ça !

Seul hic que je viens de remarquer, comme je l'indiquais dans mon exemple :
Admettons que j'ai :

25000/000 en vert
25000/000 en vert
45000/001 en bleu
45000/001 en bleu
45000/001 en bleu
12222/000 en vert
12222/000 en vert

et que je supprime les 3 lignes "45000/001", et bien les 2 lignes "12222/000" ne repassent pas automatiquement en bleu, et je me retrouve donc avec 2 groupes de lignes discontinues ("25000/000" et "12222/000") qui sont toutes les 2 en vert.

Avec ta macro, c'est le même problème, je me retrouve avec 2 paquets de la même couleur :

25000/000 en vert (cellule C10)
25000/000 en vert (cellule C11)
12222/000 en vert (cellule C12)
12222/000 en vert (cellule C13)

Si par contre en pareil cas je copie la cellule C12 et que je la colle en C12, là la macro re-fonctionne et le distinguo de couleurs s'effectue. C'est déjà cool.

Bravo également pour l'insertion des lignes permettant la distinction, c'est un plus appréciable !
 

Dull

XLDnaute Barbatruc
Re : Macro évenementielle pour alterner couleur ligne

Salut Law, Roger:), le Forum

As tu tester la Formule de Monique:) dans les liens proposés par klin89?

Sélectionne ton tableau et colle-y cette Formule en MFC

Code:
=ARRONDI(MOD(SOMMEPROD(1/NB.SI($C$10:$C10;$C$10:$C10));2);0)=0
A Tester

Bonne Journée
 

Law

XLDnaute Junior
Re : Macro évenementielle pour alterner couleur ligne

Salut Law, Roger:), le Forum

As tu tester la Formule de Monique:) dans les liens proposés par klin89?

Sélectionne ton tableau et colle-y cette Formule en MFC

Code:
=ARRONDI(MOD(SOMMEPROD(1/NB.SI($C$10:$C10;$C$10:$C10));2);0)=0
A Tester

Bonne Journée

Bonjour Dull,

Oui, j'ai essayé la MFC, le problème reste identique à celui que je décris plus haut.
Les couleurs ne se modifient pas en cas de suppression de lignes.
J'espère que je me fais comprendre :/

Edit : ah attends, j'ai oublié dans la MFC de renseigner la couleur le cas échéant... du coup je viens de refaire la manip', mais vu les 500 lignes du tableau ça rame sévère...

Je te tiens au courant...
Merci !
 
Dernière édition:

ROGER2327

XLDnaute Barbatruc
Re : Macro évenementielle pour alterner couleur ligne

Re...
Merci Roger, c'est presque ça !

Seul hic que je viens de remarquer, comme je l'indiquais dans mon exemple :
Admettons que j'ai :

25000/000 en vert
25000/000 en vert
45000/001 en bleu
45000/001 en bleu
45000/001 en bleu
12222/000 en vert
12222/000 en vert

et que je supprime les 3 lignes "45000/001", et bien les 2 lignes "12222/000" ne repassent pas automatiquement en bleu, et je me retrouve donc avec 2 groupes de lignes discontinues ("25000/000" et "12222/000") qui sont toutes les 2 en vert.
(...)
Code:
[COLOR="DarkSlateGray"][B]Private Sub Worksheet_Change(ByVal Target As Range)
   Application.Calculation = xlCalculationManual
   colorie
   Application.Calculation = xlCalculationAutomatic
End Sub[/B][/COLOR]
Le reste sans changement.​
ROGER2327
#2541
 

Law

XLDnaute Junior
Re : Macro évenementielle pour alterner couleur ligne

Re...

Code:
[COLOR="DarkSlateGray"][B]Private Sub Worksheet_Change(ByVal Target As Range)
   Application.Calculation = xlCalculationManual
   colorie
   Application.Calculation = xlCalculationAutomatic
End Sub[/B][/COLOR]
Le reste sans changement.​
ROGER2327
#2541

Bonjour Roger et le forum,

Ça m'a l'air super comme ça, je n'aurais jamais trouvé !
Merci beaucoup, et meilleurs vœux renouvelés pour 2010 !

Ciao.
 

Discussions similaires

Réponses
4
Affichages
226

Statistiques des forums

Discussions
312 489
Messages
2 088 855
Membres
103 976
dernier inscrit
kaizertv2001@gmailcom