Salut les Kracks,

Je souhaiterai optimiser la macro suivante, c'est à dire réduire son temps d'exécution car elle est mal consu, d'ailleurs il n'y a que les mâle qu'on sus!

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
Option Explicit
 
Sub Commentsadd()
Application.ScreenUpdating = False
 
 
Dim c1 As Range, c2 As Range
Dim plage1 As Range, plage2 As Range
 
Set plage1 = ThisWorkbook.Worksheets("Signatory_Data").Range("F2:F32632")
Set plage2 = ThisWorkbook.Worksheets("Client_list2").Range("H2:H36128")
 
For Each c1 In plage1 'c1= un champ texte string 
    For Each c2 In plage2
    ' si c2 contient c1 (parfois le nom match complètement mais parfois il est inclus seulement dans une phrase
    If c2 Like ("*" + c1 + "*") And c2.Offset(0, -7) = c1.Offset(0, -4) Then 'deuxième conditions = numéro d'identifiant commun 
    c1.Offset(0, 2).Value = c2.Offset(0, 5).Value
    Debug.Print c1.Address ' me sert pour me situer pendant l'exécution du code sachant qu'il y a + de 30000 lignes à comparer contre + de 30000
    End If
    Next c2
Next c1
Application.ScreenUpdating = True
End Sub
J'ai entendu parler de scripting.dictionary mais sans comprendre son utilité pour ce genre de code!
Pourriez-vous partager vos connaissances à se sujet?