Bonjour,
J'ai un soucis de RAM sur l'utilisation de ma macro.
La partie de code bloquant est une boucle for dans une boucle for avec un if.
Mon but est de savoir pour chaque valeur dans TabRef savoir si elle est présente dans une colonne du classeur ou pas.
Ma boucle for Z permet de défiler dans la colonne du classeur et la boucle for I de passer à la valeur suivante de TabRef.
La boucle finis par consommer 1.3go de RAM et plante.
TabRef est un tableau 1 dimension du même nombre d'element que la boucle for environ 3500.
La boucle For Z va de 0 à environ 3500 éléments (cela augmente rapidement au fil des mois)
La boucle For i va de 0 à environ 1000 élément maximum
Cordialement,
J'ai un soucis de RAM sur l'utilisation de ma macro.
La partie de code bloquant est une boucle for dans une boucle for avec un if.
Mon but est de savoir pour chaque valeur dans TabRef savoir si elle est présente dans une colonne du classeur ou pas.
Ma boucle for Z permet de défiler dans la colonne du classeur et la boucle for I de passer à la valeur suivante de TabRef.
La boucle finis par consommer 1.3go de RAM et plante.
TabRef est un tableau 1 dimension du même nombre d'element que la boucle for environ 3500.
La boucle For Z va de 0 à environ 3500 éléments (cela augmente rapidement au fil des mois)
La boucle For i va de 0 à environ 1000 élément maximum
Code:
For Z = 0 To (LastRw - FirstRw)
For i = 0 To (LastRwRéf - FirstRwRéf)
If TabRef(i) = Workbooks(tata).Sheets("toto").Cells(FirstRwRéfVar + Z, ColonneRef).Text Then 'Si valeur trouvée
TabDoublon(x, 0) = Workbooks(tata).Sheets("toto").Cells(FirstRwRéfVar + Z, ColonneArt)
TabDoublon(x, 1) = Workbooks(tata).Sheets("toto").Cells(FirstRwRéfVar + Z, ColonneRef)
TabDoublon(x, 2) = Workbooks(tata).Sheets("toto").Cells(FirstRwRéfVar + Z, ColonneDate)
TabDoublon(x, 3) = Workbooks(tata).Sheets("toto").Cells(FirstRwRéfVar + Z, ColonneQTY)
x = x + 1
Exit For
ElseIf (i = (LastRwRéf - FirstRwRéf)) Then
TabImport(y, 0) = Workbooks(tata).Sheets("toto").Cells(FirstRwRéfVar + Z, ColonneArt)
TabImport(y, 1) = Workbooks(tata).Sheets("toto").Cells(FirstRwRéfVar + Z, ColonneRef)
TabImport(y, 2) = Workbooks(tata).Sheets("toto").Cells(FirstRwRéfVar + Z, ColonneDate)
TabImport(y, 3) = Workbooks(tata).Sheets("toto").Cells(FirstRwRéfVar + Z, ColonneQTY)
Workbooks(tata).Sheets("toto").Rows(Z + 2).Interior.Color = vbGreen
y = y + 1
End If
Next
Next
Cordialement,
Dernière édition: