Hello je vous expose mon souci.

Je cherche a faire une macro qui prends une valeur dans la colonne a et recherche le nombre de fois que cette valeur est presente dans la colonne g

Mon probleme avec cette macro c'est que dès que j'ai plus de 2000 lignes, ça prend un temps monstrueux.

Comment optimiser ce code pour que les temps de traitement soit de l'ordre de 5 ou 10 min max ?

Merci !!

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 recherche(feuil As String, a As Variant, b As Variant, mac As Variant)
 
hdeb = Timer
 
Sheets(feuil).Select
 
Columns("I:I").Select
Selection.ClearContents
Columns("b:b").Select
Selection.ClearContents
 
Range("b1").Value = "nombre occurrence"
y = Range("G65536").End(xlUp).Row
x = Range("A65536").End(xlUp).Row
 
Sheets("resultats").Select
Range("e" & a & "").Value = x - 1
Range("e" & b & "").Value = y - 1
Sheets(feuil).Select
 
'recherche presence instrument A dans colonne G
 
compt = 0
tot = 0
For i = 2 To x
rech = Range("a" & i & "").Value
Range("h1").Value = rech
For j = 2 To y
If Range("G" & j & "").Value = Range("h1").Value Then tot = tot + 1
Next j
compt = compt + 1
Range("h2").Value = compt
Range("b" & i & "").Value = tot
tot = 0
Next i
 
 
hfin = Timer]