Bonjour,
J'ai réalisé un programme sur VBA que je souhaite optimiser car j'ai plusieurs minutes de calculs. J'utilise des feuilles Excel comme tableau et je souhaite les remplacer par des tableaux VBA. J'ai donc réaliser ce morceau de code :
Je l'ai un peu simplifier car tout ce qui est calculs fonctionne comme il faut, ce qui pose problème, c'est l'importation du tableau temporaire dans Excel. Quand j'effectue la ligne en rouge, il rempli toute la plage ("Res_Dsp_ech") avec la valeur contenue dans la première case du tableau (Tab_Tmp_Dsp(0)). J'ai cherché sur internet et j'ai trouvé un site dans lequel est traité l'optimisation et ils arrivent à le faire fonctionner. La différence est que leur tableau est un variant et non un single.
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 Option Base 0 ' Déclaration des variables locales Dim Tab_Tmp_Dsp(40) As Single, Tab_Tmp_Dsp_5S(40) As String Sub Collision...() Application.ScreenUpdating = False With Worksheets("Calculs") ' Importation des valeurs dans le classeur For i = 3 To 43 ' Réalisation des calculs -------- ' Copie du résultat dans un tableau temporaire Tab_Tmp_Dsp(i - 3) = D_sp_ech Next i ' Affichage du tableau temporaire dans une feuille Excel Worksheets("Récapitulatif_Collisions").Range("Res_Dsp_ech").Value = Tab_Tmp_Dsp ' Calculs de la valeur min Worksheets("Calage_Resume").Range("Min_Dsp_ech").Value = Application.WorksheetFunction.Min(Tab_Tmp_Dsp) End With End Sub
Quelqu'un aurait il une idée à me proposer ou la solution à mon problème?
L'intérêt de cette ligne est de m'éviter de faire une boucle for pour remplir ma feuille.
Merci d'avance pour vos réponses
PS: J'ai oublié que la dimension du tableau et celle de la plage sont les mêmes.
Partager