gestion de tableau en vba
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:
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 |