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

Boucles très lentes !!! bizarre...

  • Initiateur de la discussion Initiateur de la discussion hbb
  • Date de début Date de début

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

hbb

XLDnaute Occasionnel
Bonsoir à tous,

J'ai écris un code VBA qui me permets de colorier les colonnes correspondant aux jours fériés.

Je trouve que le traitement est très long !!!!
Peut-être parce que j'ai une boucle dans une autre ?

Avez-vous une idée ?

Merci,

Hbb
 

Pièces jointes

Re : Boucles très lentes !!! bizarre...

Bonsoir

Hbb t'a macro est lente pour toutes les raisons noté ci dessous dans ton code :
Code:
Sub JoursFériés()

Dim Listeferies As Date
Dim i As Long
Dim j As Long

[I] Ici tu t'es trompé c'est a la fin qu'il faut le remettre [/I]
    Application.ScreenUpdating = True

[I] c'est ici que cela ralenti enormement parceque a chaque tour de boucle tu
vas récuperer la valeur d'une cellules ListeFeries pour ensuite la comparées
avec l'une des cellules de la ligne 12[/I]

    For i = 27 To Range("F65536").End(xlUp)
        Listeferies = Cells(i, 6).Value
        For j = 10 To 19
            If Cells(12, j) = Listeferies Then
'la selection de la plage est inutile est ralenti 
                Range(Cells(12, j), Cells(15, j)).Select
                With Range(Cells(12, j), Cells(15, j))
                    With Selection.Interior
                        .ColorIndex = 0
                        .Pattern = xlLightUp
                        .PatternColorIndex = xlAutomatic
                    End With
                End With

            End If
        Next
    Next
[I] c'est au début[/I] 
    Application.ScreenUpdating = False
End Sub
Je te propose donc le code suivant ( il y a surement mieux mais bon...) qui est dans la pièces jointe:

Code:
Option Explicit
Sub JoursFériés()

Dim Listeferies As Range
Dim i As Long
Dim j As Long

    Application.ScreenUpdating = False

[I]Je charge d'un coup les Fériés[/I]
    Set Listeferies = Feuil3.Range("F27", Range("F65536").End(xlUp)).Rows
[I]La je travail avec les données en mémoire plutot que directement sur la feuille alors ça va plus vite.[/I]
    For i = 1 To Listeferies.Count
        For j = 10 To 19
            If Cells(12, j) = Listeferies(i) Then
                With Range(Cells(12, j), Cells(15, j))
[I]ici pas de select[/I]
                    With .Interior
                        .ColorIndex = 0
                        .Pattern = xlLightUp
                        .PatternColorIndex = xlAutomatic
                    End With
                End With
            End If
        Next
    Next i
    Application.ScreenUpdating = True
End Sub
 

Pièces jointes

- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD

Discussions similaires

Réponses
16
Affichages
1 K
  • Question Question
Microsoft 365 macro vba sumifs
Réponses
5
Affichages
750
Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…