Bonjour,

J'ai deux macros que j'aimerai optimiser dans une feuille excel.
J'ai pres de 77000 lignes
J'aimerai faire l'execution de la macro que si la premiere colonne (A) est non vide et que et qu'une autre colonne est vide ceci pour réduire le temps de traitement.


j'ai deux boucles suivante :

Premiere boucle

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
Sub Formule_Category()
 
Dim tableau(96, 1) As String
'Le nombre de lignes de la page Erreurs doit aller jusqu'à la ligne 96, sinon, adapter la valeur ci-dessus
Dim dated
 
dated = Time
'Alimentation tableau
j = 0
While Not IsEmpty(Worksheets("Erreurs").Range("A" & j + 1))
    tableau(j, 0) = Worksheets("Erreurs").Range("A" & j + 1).Text
    tableau(j, 1) = Worksheets("Erreurs").Range("B" & j + 1).Text
    j = j + 1
Wend
MsgBox "Tableau de correspondances rempli... OK pour continuer"
 
Sheets("INCIDENTS").Select
i = 2
While Not IsEmpty(Range("A" & i))
j = 0
  corresp = 0
  While corresp = 0
     If Range("J" & i) = "XXXXX" Or Range("J" & i) = "YYYYYY" Then
        Range("L" & i) = "ASSISTANCE MATERIELLE"
        corresp = 1
     Else
        If InStr((LCase(Range("D" & i).Text)), LCase(tableau(j, 0))) Then
              Range("L" & i) = tableau(j, 1)
              corresp = 1
        End If
     End If
     j = j + 1
   Wend
i = i + 1
Wend
MsgBox "Fin: " & Time
 
End Sub
j'aimerai faire la boucle sur 2 critères si la Colonne A est non vide et si la colonne L est vide


Deuxieme boucle


Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
Sub Formule_wsi()
 
Worksheets("INCIDENTS").Select
 
    For Each C In Range([B2], Cells(Rows.Count, 2).End(xlUp))
        If C <> "" And Cells(C.Row, 1) <> "" Then
            Cells(C.Row, 13).FormulaLocal = "=(Texte(B" & C.Row & "; ""aaaa-mm""))"
            Cells(C.Row, 13).Value = Cells(C.Row, 13).Value
 
 
        End If
    Next C
j'aimerai faire la boucle sur 2 critères si la Colonne A est non vide et si la colonne M est vide