Ceci est une page optimisée pour les mobiles. Cliquez sur ce texte pour afficher la vraie page.
  • Initiateur de la discussion Initiateur de la discussion verd
  • Date de début Date de début

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

V

verd

Guest
Bonjour,

Pourriez-vous m'aider à rendre cette macro (c'est ma première) moins lente et l'améliorer si possible? 🙂

Sub flux()
Application.ScreenUpdating = False
Range('V2:V8761').Clear
Dim i As Integer
Dim j As Integer
Dim dQ As Double
Dim dP As Double
Dim dT As Double
Dim P As Double
Dim Tair As Double

For i = 1 To 8760
P = 0
Tair = Range('T2:T8761')(i)
Tsol = Range('U2:U8761')(i)

For j = 1 To 200
dQ = 0
dP = 0
dT = 0
dQ = ((Tsol - Tair) * Range('B29') * Range('B30')) / Range('B26')
dT = dQ / (Range('B4') * Range('B5') * Range('B31'))
Tair = Tair + dT
dP = dQ / Range('B30')
P = P + dP
Next j
Range('V2:V8761')(i) = P
Next i
Application.ScreenUpdating = False
End Sub


MERCI
 
Bonjour,
Pour répondre à vos questions:
Cette macro sert à calculer l'énergie récupérée par un tube enterré. La première boucle est la discrétisation temporelle heure par heure sur une année et la seconde, la discrétisation spatiale sur la longueur du tube.
Note: Je n'ai pas réellement besoin des 8760 valeurs (inutile de remplir la colonne V, c'est peut-etre cela qui ralentit...), mais seulement de leur somme de valeurs positives.
Bonne journée.
 
Bonjour verd, bonjour Justine, bonjour José,
bonjour à toutes et à tous 🙂

verd, sans comprendre tes calculs, je te propose une possibilité qui, si elle augmente la longueur de la procédure, devrait notablement en diminuer le temps d'exécution :


Explication : Les lectures de propriétés ralentissent l'exécution du code. L'utilisation de variables intermédiaire lorsque les propriétés sont souvent appelées (cas de tes Range().Value) a d'énormes conséquences sur la vitesse d'exécution.
Pour l'accélérer encore, le code utilise des tableaux.

En espérant que cela réponde à ta demande :unsure: . J'ai compilé sans problème mais je n'ai rien pu tester car je n'avais pas de données (et pas spécialement envie de les créer ex nihilo).

A+ 😉

Message édité par: Charly2, à: 06/06/2006 20:54
 
re José, re à tous,

C'est bien possible :whistle: . Difficile à dire sans voir les données et sans trop comprendre les calculs appliqués.

Mais malgré tout, boucler 200 fois dans chaque cellule avec une formule de calcul, bonjour les temps de recalcul :sick:

Alors ZOP ou pas :-\\ ? Let's wait a little :S

A+
 
Merci pour vos réponses.
J'ai essayé le code de Charly2, mais j'obtiens l'erreur 'l'indice n'appartient pas à la sélection' à la ligne CurrentTAir = T_Air(i)
J'ai mis en pièce jointe les données si ca peut vous aider à m'aider 🙂
Bonne soirée
 
re-re-re, etc. 🙂

Oups !!! :sick:

J'ai repéré plusieurs erreurs d'inattention :silly: :whistle:

Essaie avec le code copié dans le classeur joint (j'ai indiqué les modifs).

[file name=verd_code.zip size=6960]http://www.excel-downloads.com/components/com_simpleboard/uploaded/files/verd_code.zip[/file]

Va falloir que j'me repose, moi, à moins que j'aille tailler mes rosiers :woohoo:

Tiens-nous au courant...

A+ 😉
 

Pièces jointes

- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD
Assurez vous de marquer un message comme solution pour une meilleure transparence.

Discussions similaires

Réponses
5
Affichages
915
Réponses
4
Affichages
735
  • Question Question
Microsoft 365 worksheet_change
Réponses
29
Affichages
1 K
Réponses
7
Affichages
371
Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…