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
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
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...
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é.