Demande optimisation macro qui colorre 2 ligne sur 2 automatiquement

yannoch

XLDnaute Junior
Bonjour à tous,

ayant besoin de faire ressortir mes informations sur un fichier, je souhaitai que mes lignes change de couleur toutes les deux lignes à partir de la ligne 3.
J'ai essayé une mise en forme conditionnelle ce qui répond au besoin mais au bout de plusieurs mois d'utilisation, il s'est passé un effet pervers.
En effet, c'est un fichier où il y a très fréquemment du couper/copier/coller de cellule et bien que la MFC d'origine ait été appliqué sur toutes les feuilles, lorsqu'on copie une cellule, Excel créé derrière une nouvelle MFC en plus de celle d'origine.
Et donc au bout de plusieurs mois d'utilisation, mon fichier met plusieurs dizaines de secondes à s'ouvrir avec Excel 2010 car il est bourré de MFC.
En effectuant une purge de ces MFC, le fichier se remet à fonctionner correctement.

J'en suis donc venu à faire une macro qui elle ne se dupliquera pas si je fait des changements dans le fichier.
En effectuant des recherches et en bricolant/associant ce que j'ai trouvé, j'ai obtenu la macro ci-dessous qui fonctionne comme je le souhaite.
Cependant, n'étant pas très familier des routines et du mode de fonctionnement des macros, elle met énormément de temps à s'appliquer.

C'est pourquoi je requiert votre aide pour savoir si elle peut être optimisé pour s'appliquer plus rapidement :
Code:
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
Dim lastRow0 As Long
Dim lastRow As Long
For lastRow0 = 3 To 62
 For Each Cell In Range("B3:S" & lastRow0)
            Cell.Interior.ColorIndex = xlNone
        Next Cell
        Next
lastRow = Range("B3").End(xlDown).Row

For lastRow = 3 To 62
    For Each Cell In Range("B3:S" & lastRow)
       If Cell.Row Mod 4 = 1 Then
            Cell.Interior.ColorIndex = xlNone
          
        Else
            Cell.Interior.ColorIndex = 17
        End If
        If Cell.Row Mod 4 = 2 Then
          Cell.Interior.ColorIndex = xlNone
        End If
        Next Cell
Next
End Sub

Je vous remercie par avance pour vos réponses.

PS : Je pense que la macro ne doit pas être très jolie pour les experts présents sur ce forum :rolleyes:
 

camarchepas

XLDnaute Barbatruc
Re : Demande optimisation macro qui colorre 2 ligne sur 2 automatiquement

Bonjour Yannoch,

Essai comme ça , et oui c'est déjà fini

Code:
Private Sub Worksheet_SelectionChange(ByVal Target As Range)

Dim LigneFin As Long
Dim Tourne As Long

'Désactive les évenementiels , afin de finir le travail
 Application.EnableEvents = False

'Calcul de la dernière ligne
 LigneFin = Range("B3").End(xlDown).Row

'Pour exemple si pas d'info dans feuille
 If LigneFin = 1 Then LigneFin = 62

   'Boucle comptant de 4 en 4
    For Tourne = 3 To 62 Step 4
     'Colore la zone de B tourne à S tourne +1
      Range("B" & Tourne & ":S" & Tourne + 1).Interior.ColorIndex = 17
     'Supprime la coloration sur la 3 et 4 ° ligne
      Range(" B" & Tourne + 2 & ":S" & Tourne + 3).Interior.ColorIndex = xlNone
    Next

'Réactive les évenementiels
 Application.EnableEvents = True
End Sub
 

Efgé

XLDnaute Barbatruc
Re : Demande optimisation macro qui colorre 2 ligne sur 2 automatiquement

Bonjour yannoch, Lancer la macro à chaque selection n'est peut être pas vraiment utile. Une autre proposition qui ne se lance q'à chaque changement de la feuille. Le code est raccourci. Cordialement EDIT Bonjour camarchepas, pas rafraichi... :)
 

Pièces jointes

  • yannoch(1).xls
    21.5 KB · Affichages: 39
Dernière édition:

yannoch

XLDnaute Junior
Re : Demande optimisation macro qui colorre 2 ligne sur 2 automatiquement

Effectivement, la macro se déclenche à chaque sélection, c'était pour mes tests.
Mon intention ensuite était de la faire déclencher sur un changement de la feuille et vous m'avez devancé.

Un grand merci à vous deux.
 

Discussions similaires

Statistiques des forums

Discussions
312 108
Messages
2 085 377
Membres
102 876
dernier inscrit
BouteilleMan