bonjour
j'ai 2 tableaux,un de 1 800 lignes et un autre de 300 lignes environ

pour chacune des 300 lignes du 2° tableau, je dois checker chaque lignes du 1° tableau(1800 lignes) pour faire des comparaisons

j'ai désactivé tous ce que je pouvais, mais ma procédure prend 40 secondes pour s'exécuter

je sais qu'il y a moyen de créer "des tableaux virtuels", mais je ne maîtrise pas ce type d'élément

est ce que quelqu'un pourrait me donner un coût de main

voici mon code actuel

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 recherche_des_casiers_et_des_palettes_carton()
Dim ligne, ligne_movex, ligne_suivi_atdec As Variant
 
 
'recherche des lot/ref identique
  For ligne_suivi_atdec = 1 To Workbooks("StkPF.xls").Worksheets("Sheet1").Range("an65536").End(xlUp).Row + 1
    'If ligne_suivi_atdec = 86 Then Stop
 
   If Workbooks("StkPF.xls").Worksheets("Sheet1").Range("am" & ligne_suivi_atdec) <> "" Then
 
     For ligne_movex = 1 To Workbooks("StkPF.xls").Worksheets("Sheet1").Range("j65536").End(xlUp).Row + 1
      'If ligne_movex = 242 Then Stop
 
     'lot et ref identique
      If Val(Left(Workbooks("StkPF.xls").Worksheets("Sheet1").Range("j" & ligne_movex), 8)) = Val(Left(Workbooks("StkPF.xls").Worksheets("Sheet1").Range("am" & ligne_suivi_atdec), 8)) And Val(Workbooks("StkPF.xls").Worksheets("Sheet1").Range("an" & ligne_suivi_atdec)) = Val(Workbooks("StkPF.xls").Worksheets("Sheet1").Range("s" & ligne_movex)) Then
 
        If Workbooks("StkPF.xls").Worksheets("Sheet1").Range("ao" & ligne_suivi_atdec) <> "" Then Workbooks("StkPF.xls").Worksheets("Sheet1").Range("ao" & ligne_suivi_atdec) = Workbooks("StkPF.xls").Worksheets("Sheet1").Range("ao" & ligne_suivi_atdec) & " ou " & Workbooks("StkPF.xls").Worksheets("Sheet1").Range("u" & ligne_movex)
 
        If Workbooks("StkPF.xls").Worksheets("Sheet1").Range("ao" & ligne_suivi_atdec) = "" Then Workbooks("StkPF.xls").Worksheets("Sheet1").Range("ao" & ligne_suivi_atdec) = Workbooks("StkPF.xls").Worksheets("Sheet1").Range("u" & ligne_movex)
        'statut
        Workbooks("StkPF.xls").Worksheets("Sheet1").Range("as" & ligne_suivi_atdec) = Workbooks("StkPF.xls").Worksheets("Sheet1").Range("p" & ligne_movex)
 
        'palette carton
        If Left(Right(Workbooks("StkPF.xls").Worksheets("Sheet1").Range("j" & ligne_movex), 5), 1) = 9 Or Left(Right(Workbooks("StkPF.xls").Worksheets("Sheet1").Range("j" & ligne_movex), 2), 1) = 9 Then
         Workbooks("StkPF.xls").Worksheets("Sheet1").Range("ao" & ligne_suivi_atdec) = Workbooks("StkPF.xls").Worksheets("Sheet1").Range("ao" & ligne_suivi_atdec) & "\C"
        End If
 
        'ref
        Workbooks("StkPF.xls").Worksheets("Sheet1").Range("am" & ligne_suivi_atdec) = Workbooks("StkPF.xls").Worksheets("Sheet1").Range("j" & ligne_movex)
        'quantité
        Workbooks("StkPF.xls").Worksheets("Sheet1").Range("ap" & ligne_suivi_atdec) = Workbooks("StkPF.xls").Worksheets("Sheet1").Range("w" & ligne_movex)
        'check movex
        Workbooks("StkPF.xls").Worksheets("Sheet1").Range("ab" & ligne_movex) = "OK"
 
     End If
 
    Next ligne_movex
 
   End If
 
  Next ligne_suivi_atdec
 
End Sub