Lenteur mise en forme par VBA
Bonjour à tous,
Je ne suis pas sûr de m'adresser dans la bonne section du forum car ma question est à cheval sur du VBA access et excel, mais elle n'est pas dénuée de lien avec cette rubrique.
En fait, je m'exaspère de l'effroyable lenteur liée à la mise en forme de bordures de tableau sous excel. Au sein d'une fonction sous access, j'exporte des données formalisées dans un tableur excel, et ce fichier ainsi que sa mise en forme sont générées automatiquement.
Je ne suis pas certain d'utiliser la méthode la plus efficace, car pour la création un fichier de 200 lignes et 200 colonnes il me faut environ 20 secondes d'exécution.
Voici une partie de mon code, je suis sûr que ce n'est pas très efficace, donc si vous voyez des améliorations n'hésitez pas :
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
| Do While Not rstTemp.EOF
'Ecriture de l'origine
'rstTemp.MoveNext
j = ligne_debut
'Boucle qui regarde si c'est la première fourniture de ce type pour ce pays ou non
Do While rstTemp.Fields(2).Value <> xlSheet.Cells(j, 4) And j < i
j = j + 1
Loop
'Si c'est la première alors j = i, et on insère les informations de ligne
If j = i Then
If a_pays <> rstTemp.Fields(16).Value Then
xlSheet.Cells(i, 1) = rstTemp.Fields(16).Value
a_pays = rstTemp.Fields(16).Value
End If
xlSheet.Cells(i, 2) = rstTemp.Fields(17).Value
xlSheet.Cells(i, 3) = rstTemp.Fields(1).Value
xlSheet.Cells(j, 4) = rstTemp.Fields(2).Value 'Fourniture
xlSheet.Cells(j, 5) = rstTemp.Fields(3).Value ' Nature
xlSheet.Cells(j, 6) = rstTemp.Fields(7).Value ' Scénario
i = i + 1
For k = 1 To 79
xlSheet.Cells(i - 1, k).Borders(xlEdgeRight).LineStyle = xlContinuous
xlSheet.Cells(i - 1, k).Borders(xlEdgeRight).Weight = xlThin
Next
End If
rstTemp.MoveNext
Loop |
Merci!