Bonsoir à toutes et à tous,
Je rencontre des difficultés avec un morceau de code que j'aimerai optimiser.
Mon objectif est de récupérer dans la feuille "ListeArticles" les 4 propriétés personnalisées d'environ 2000 fichiers, en fonction de la liste des fichiers qui se situe dans la colonne A de cette même feuille.
Ce code fonctionne, mais il met environ 25 secondes à s'exécuter (avec seulement 200 fichiers). Je pense qu'on peut faire beaucoup mieux avec des variables tableaux.
Après plusieurs tentatives, je suis revenu à ce qui est long mais qui fonctionne
Est ce quelqu'un aurait une idée?
Merci d'avance
Dim F As Integer
Dim debut As Date, temps As Date, fin As Date
Dim DSO As DSOFile.OleDocumentProperties
Dim D As Integer
D = Worksheets("ListeArticles").Range("A2", [A65000].End(xlUp)).Rows.Count
debut = Time
For F = 2 To D + 1
Fichier = Worksheets("ListeArticles").Range("A" & F).Value
Set DSO = New DSOFile.OleDocumentProperties
DSO.Open sfilename:=ActiveWorkbook.Path & "\Fiches articles" & "\" & Fichier
Worksheets("ListeArticles").Range("C" & F).Value = DSO.CustomProperties.Item("RefClient").Value
Worksheets("ListeArticles").Range("D" & F).Value = DSO.CustomProperties.Item("Indice").Value
Worksheets("ListeArticles").Range("E" & F).Value = DSO.CustomProperties.Item("ClientPrincipal").Value
Worksheets("ListeArticles").Range("F" & F).Value = DSO.CustomProperties.Item("Désignation").Value
DSO.Close
Next F
Je rencontre des difficultés avec un morceau de code que j'aimerai optimiser.
Mon objectif est de récupérer dans la feuille "ListeArticles" les 4 propriétés personnalisées d'environ 2000 fichiers, en fonction de la liste des fichiers qui se situe dans la colonne A de cette même feuille.
Ce code fonctionne, mais il met environ 25 secondes à s'exécuter (avec seulement 200 fichiers). Je pense qu'on peut faire beaucoup mieux avec des variables tableaux.
Après plusieurs tentatives, je suis revenu à ce qui est long mais qui fonctionne
Est ce quelqu'un aurait une idée?
Merci d'avance
Dim F As Integer
Dim debut As Date, temps As Date, fin As Date
Dim DSO As DSOFile.OleDocumentProperties
Dim D As Integer
D = Worksheets("ListeArticles").Range("A2", [A65000].End(xlUp)).Rows.Count
debut = Time
For F = 2 To D + 1
Fichier = Worksheets("ListeArticles").Range("A" & F).Value
Set DSO = New DSOFile.OleDocumentProperties
DSO.Open sfilename:=ActiveWorkbook.Path & "\Fiches articles" & "\" & Fichier
Worksheets("ListeArticles").Range("C" & F).Value = DSO.CustomProperties.Item("RefClient").Value
Worksheets("ListeArticles").Range("D" & F).Value = DSO.CustomProperties.Item("Indice").Value
Worksheets("ListeArticles").Range("E" & F).Value = DSO.CustomProperties.Item("ClientPrincipal").Value
Worksheets("ListeArticles").Range("F" & F).Value = DSO.CustomProperties.Item("Désignation").Value
DSO.Close
Next F