Comment étendre l'action d'une macro à 3 plages de colonnes?

Halffy

XLDnaute Occasionnel
Bonjour le Forum,
Heureux de constater que les habitués sont toujours fidèles au poste :eek:
de toute façon, que faire d'autre... il pleut (ici en Normandie) :D
Un nouveau problème à vous suggérer avec votre permission; j'ai une macro qui me permet de trier & d'alterner des lignes de couleurs, pour une colonne nommée ==> ça marche très bien :)
Mais comment étendre l'action de la macro à des plages de colonnes? Et là ça marche moins bien :(
Un fichier joint pour plus amples explications / alors si vous aviez un peu de temps à me consacrer; je vous en remercierais par avance, et vous souhaite une bonne journée.
Halffy /.
 

Pièces jointes

  • Classeur1.xlsm
    18.3 KB · Affichages: 74
  • Classeur1.xlsm
    18.3 KB · Affichages: 87
  • Classeur1.xlsm
    18.3 KB · Affichages: 87
Dernière édition:

Fred0o

XLDnaute Barbatruc
Re : Comment étendre l'action d'une macro à 3 plages de colonnes?

Bonjour Halfy,

Voici un code qui me semble-t-il fonctionne bien :
VB:
Sub coloriage()
    Application.ScreenUpdating = False
    Couleur = 6
    For i = 16 To [B65000].End(xlUp).Row
        If Cells(i, 2) <> Cells(i - 1, 2) Then Couleur = IIf(Couleur = 36, 6, 36)
        Union(Range("B" & i & ":G" & i), Range("I" & i), Range("K" & i & ":M" & i)).Interior.ColorIndex = Couleur
    Next i
    Application.ScreenUpdating = True
End Sub

A+
 

gilbert_RGI

XLDnaute Barbatruc
Re : Comment étendre l'action d'une macro à 3 plages de colonnes?

bonjour

comme ceci peut-être
Code:
Sub coloriage()
Application.ScreenUpdating = False
Couleur = 6
For i = 16 To [B65000].End(xlUp).Row
If Cells(i, 2) <> Cells(i - 1, 2) Then Couleur = IIf(Couleur = 36, 6, 36)
Range(Cells(i, 2), Cells(i, 7)).Interior.ColorIndex = Couleur
Cells(i, 9).Interior.ColorIndex = Couleur
Range(Cells(i, 11), Cells(i, 13)).Interior.ColorIndex = Couleur
Next i
Application.ScreenUpdating = True
End Sub
 

kjin

XLDnaute Barbatruc
Re : Comment étendre l'action d'une macro à 3 plages de colonnes?

Bonjour,
Dans la macro changes cette lignes
Code:
If Cells(i, 2) <> Cells(i - 1, 2) Then Couleur = IIf(Couleur = 36, 6, 36)
Intersect(Range("B:G, I:I, K:M"), Rows(i)).Interior.ColorIndex = Couleur 'ici
Next i
A+
kjin
 

Dranreb

XLDnaute Barbatruc
Re : Comment étendre l'action d'une macro à 3 plages de colonnes?

Bonjour.
Avec un bouton de commande nommé "BtTriCoul" plutôt que le bouton de formulaire qui n'a pas fonctionné :
VB:
Option Explicit
'
Private Sub BtTriCoul_Click()
Dim Couleur As Long, I As Long
Application.ScreenUpdating = False
Couleur = 6
For I = 16 To [B65000].End(xlUp).Row
   If Cells(I, 2) <> Cells(I - 1, 2) Then Couleur = IIf(Couleur = 36, 6, 36)
   Cells(I, 2).Resize(, 6).Interior.ColorIndex = Couleur
   Cells(I, 11).Resize(, 3).Interior.ColorIndex = Couleur
   Next I
Application.ScreenUpdating = True
End Sub
Mais une mise en forme conditionnelle avec comme formule "=MOD($B16;2)=0" est peut être plus satisfaisant...
{A +
 

Halffy

XLDnaute Occasionnel
Re : Comment étendre l'action d'une macro à 3 plages de colonnes?

Re, à tous: Fred0o, Gilbert_RGI, Kjin, Dranreb
Merci, Merci Messieurs de vos contributions, elles fonctionnent toutes très bien (les unes plus ou moins longues que les autres, mais elles fonctionnent parfaitement) & Je vous remercie du temps consacré :cool:
Une précision tout de même: Dranreb, je ne voulais pas passer par de la MFC car les fonctionnalités de mon fichier sont plus complexes que ce "bout de programme", et demande plus de subtilités; toutefois ta solution marche également.
Et surtout vos macro fonctionnent en harmonie avec les miennes.
Alors encore Merci, et bon Week-End à tous.
Halffy /.
 

Discussions similaires