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

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
de toute façon, que faire d'autre... il pleut (ici en Normandie)
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é
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

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