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 : 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
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!