Ceci est une page optimisée pour les mobiles. Cliquez sur ce texte pour afficher la vraie page.

Microsoft 365 Optimisation de la RAM - Exploitation de fonction ou de procédure

elgringo123456

XLDnaute Occasionnel
Supporter XLD
Bonjour,

Je me permets de vous solliciter sur le meilleur choix à utiliser en terme de minimisation de mémoire vive utilisée par Excel entre une procédure ou une fonction.
De manière générale est -il préférable d'utiliser une fonction tout le temps au lieu d'une procédure de façon à optimiser les ressources en RAM sur Excel ou plutôt l'inverse ?
Peu importe de savoir si j'ai besoin de faire appel à un paramètre de sortie grâce à une fonction mais le but est de minimiser mes ressources sous Excel.
Par contre, je me dis qu'une fonction est référencée pour être utilisée dans les cellules sous Excel donc peut être vaut-il mieux utilisé une procédure ?

merci d'avances de vos lumières (car je suis un peu dans l'obscurité)
Bien cordialement
El Gringo 123456
 
Solution
Bonjour,
D'une manière générale, je déconseil l'utilisation de variables globales elles restent par définition en mémoire.

Je préconise de définir soit en passage de paramètres d'une méthode {Sub ou Function}.
Soit par déclaration locale dans une méthode. La durée de vie d'une variable dépend de sa portée.

Notes que l'affection d'une référence à un objet via l'instruction set doit impérativement ce terminer par un set nothing affain de liberer la mémoire.
Code:
Sub test()
Dim myvar as range
Set myvar = range("A1:B12")
Msgbox AA(myvar)
Set myvar=Nothing 
End Sub
Function AA(myvar as range) as Long 
AA=myvar.rows.count
En Function

L'instruction doevent, dans le cas de boucles par exemple, peut s'avérer utile pour permettre à windows...

job75

XLDnaute Barbatruc
Bonjour elgringo123456,

En général les formules matricielles sont gourmandes en ressources, il vaut mieux les remplacer par du VBA.

Mais c'est variable, il faut étudier chaque situation.

A+
 

elgringo123456

XLDnaute Occasionnel
Supporter XLD
Bonjour job75,
Merci beaucoup de ta proposition et de ta réactivité (au niveau des formules matricielles à éviter).
Si j'utilise la procédure et si j'ai besoin d'utiliser un paramètre de sortie (et que j'utilise les paramètres d'entrées) c'est peut être moins gourmand en RAM car les fonctions ont besoin d'être indexée et accessible sur les cellules ?
Le but étant de ne pas prendre en compte d'autres critères que la déclaration d'une procédure ou d'une fonction.
Merci d'avance de vos propositions
Bien à vous
El gringo 123456
 

dysorthographie

XLDnaute Accro
Bonjour,
Part définition une procédure est une fonction qui ne retourne aucune valeur !

En langage c par exemple on définit une procédure comme void function nameFunction alors qu'une fonction qui retourne QQ chose on remplace void par le type à retourner.

Tu utilises une vielle bécane pour te soucier autant que ça de l'occupation mémoire ?
 
Dernière édition:

dysorthographie

XLDnaute Accro
Bonjour,
D'une manière générale, je déconseil l'utilisation de variables globales elles restent par définition en mémoire.

Je préconise de définir soit en passage de paramètres d'une méthode {Sub ou Function}.
Soit par déclaration locale dans une méthode. La durée de vie d'une variable dépend de sa portée.

Notes que l'affection d'une référence à un objet via l'instruction set doit impérativement ce terminer par un set nothing affain de liberer la mémoire.
Code:
Sub test()
Dim myvar as range
Set myvar = range("A1:B12")
Msgbox AA(myvar)
Set myvar=Nothing 
End Sub
Function AA(myvar as range) as Long 
AA=myvar.rows.count
En Function

L'instruction doevent, dans le cas de boucles par exemple, peut s'avérer utile pour permettre à windows de réactualiser sa pagination mémoire !
 
Dernière édition:

Discussions similaires

Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…