Bonjour,

J'ai un module qui appelle consécutivement 5 modules qui se présentent ainsi (avec des instructions un peu différentes mais la structure est la même):
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
Sub Bascule()
 
Dim b As Long
Dim c As Long
Dim e As Long
Dim f As Long
Dim q As Long
Dim v As Long
Dim I As Long
 
    Worksheets("Suivi").Select
    v = Application.WorksheetFunction.CountA(Columns(5)) + 1
 
    Worksheets("Liste des besoins").Select
    With Worksheets("Liste des besoins")
 
    q = Application.WorksheetFunction.CountA(Columns(1)) + 1
 
        For b = 3 To q
            If Worksheets("Liste des besoins").Cells(b, 26).Value = "Basculé en att. inscription" Then
 
                With Worksheets("Suivi")
                    For e = 2 To v
                        For I = 2 To q
                            If Worksheets("Suivi").Cells(e, 17).Value = Worksheets("Liste des besoins").Cells(b, 17).Value Then
                            Worksheets("Suivi").Rows(e).Interior.Color = RGB(255, 255, 255)
                            Worksheets("Suivi").Cells(e, 24) = "Basculé en att. Inscription"
                            End If
                        Next
                    Next
                End With
            End If
        Next
    End With
 
b = 0
c = 0
e = 0
f = 0
q = 0
v = 0
I = 0
End Sub
Cela fonctionne très bien, le problème étant que ma macro tourne pendant 2 heures (et une journée sur les PC de mes collègues sans SSD....).
Je pense que c'est le fait d'avoir un bouclage sur chaque cellule qui est long et qu'il faudrait faire plutôt une fonction Set. Qu'en pensez-vous svp?

A noter que j'ai les instructions suivantes dans mon module "mère":
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
 Application.DisplayAlerts = False 'messages excel
    Application.DisplayStatusBar = True ' info avancement macro dans barre d'infos en bas écran
    Application.StatusBar = "Synthèse PEPS en cours"
    Application.ScreenUpdating = False 'rafraichissement ecran (pour ne pas voir défiler les macros)
    Application.Cursor = xlWait 'sablier
    Application.Calculation = xlCalculationManual ' supprime calcul auto EXCEL pour gagner du temps.  A remettre dans fin_sub
merci de votre aide,

Alain