OVH Cloud OVH Cloud

RAZ variables -optimisation

16 réponses
Avatar
Patrick BASTARD
Bonjour à tous.

Trois questions aujourd'hui, et j'espère que vos réponses me permettront de
progresser :

Option Explicit impose la déclaration de variables, mais quand cette option
est omise, il arrive que le code fonctionne si certaines variables ne sont
pas définies.
Est-il préférable d'utiliser cette option et de déclarer toutes les
variables ?

Dans quels cas est-il nécessaire - utile - , pour libérer de la mémoire, de
remettre les variables (définies par Dim...As...) à zéro à l'issue de
l'exécution d'une procédure qui ne doit s'exécuter qu'une fois ?

Existe-t'il une commande pour remettre en une seule fois à zéro toutes les
variables d'une procédure (sans passer par Set Varxx As Nothing)?



Merci de vos réponses,

Bien cordialement,

Patrick.

6 réponses

1 2
Avatar
AV
Existe-t'il une commande pour remettre en une seule fois à zéro toutes les
variables d'une procédure (sans passer par Set Varxx As Nothing)?


Me semble que End doit faire ça
AV

Avatar
LSteph
Bonjour,
,..
End sub met fin uniquement aux variables locales pas de module.
Les variables déclarées et utilisées dans une procèdure même ne posent pas
de pb mais
la question me semblait se poser au niveau des autres portées, exemple dans
Module1
faire une saisie de variable et la rappeler:
'*****
Dim mavar As String

Sub madef()
mavar = InputBox("saisir le contenu")
End Sub

Sub Affvar()
MsgBox mavar
MsgBox pubvar
End Sub
'*****

Mais Alain a suggeré end qui effectivement marche
en faisant cette variante, par exemple:
'*****
Dim mavar As String

Sub madef()
mavar = InputBox("saisir le contenu")
End
End Sub

Sub Affvar()
MsgBox mavar
MsgBox pubvar
End Sub
'*****
Et même si la portée est Public et la déclaration dans un autre module End y
met fin.

Merci Alain.
habituellement j'utilisait end pour mettre fin à toutes procèdures qui
s'appelent,
je n'avais pas songé à cette utilité complémentaire.

;-)
lSteph


"Gaenonius" a écrit dans le message de news:
%
Existe-t'il une commande pour remettre en une seule fois à zéro toutes
les
variables d'une procédure (sans passer par Set Varxx As Nothing)?


End Sub

--
Gaenonius

Bonjour à tous.

Trois questions aujourd'hui, et j'espère que vos réponses me permettront
de progresser :

Option Explicit impose la déclaration de variables, mais quand cette
option est omise, il arrive que le code fonctionne si certaines variables
ne sont pas définies.
Est-il préférable d'utiliser cette option et de déclarer toutes les
variables ?

Dans quels cas est-il nécessaire - utile - , pour libérer de la mémoire,
de remettre les variables (définies par Dim...As...) à zéro à l'issue de
l'exécution d'une procédure qui ne doit s'exécuter qu'une fois ?

Existe-t'il une commande pour remettre en une seule fois à zéro toutes
les variables d'une procédure (sans passer par Set Varxx As Nothing)?



Merci de vos réponses,

Bien cordialement,

Patrick.




Avatar
Gaenonius
Je confirme que End Sub permet de "remettre en une seule fois à zéro toutes les
variables d'une procédure", pour reprendre la question telle qu'elle était
formulée. J'ai supposé que par "variables d'une procédure" il fallait comprendre
"variables locales", les variables globales devant être traitées autrement.
L'instruction End Sub détruit les variables locales et est censée libérer la
mémoire qui leur a été réservée.
Réinitialiser explicitement une variable objet (par Set laVar=Nothing) peut
cependant être utile dans certains cas (par exemple une collection, déclarée
publique, qui doit être vidée de son contenu dans le cours de l'exécution du
programme).

--
Gaenonius

Bonsoir, *Gaenonius*


Confirmes-tu que End Sub réinitialise les variables définies dans cette sub
?
Si oui, quelle est l'utilité de Set mavar = Nothing ?

Bien cordialement,

Patrick.





Existe-t'il une commande pour remettre en une seule fois à zéro
toutes les variables d'une procédure (sans passer par Set Varxx As
Nothing)?


End Sub









Avatar
Gaenonius
Apparemment, nous n'avons pas eu la même lecture de la question.

--
Gaenonius

???

'lSteph

"Gaenonius" a écrit dans le message de news:
%

Existe-t'il une commande pour remettre en une seule fois à zéro toutes
les
variables d'une procédure (sans passer par Set Varxx As Nothing)?


End Sub

--
Gaenonius


Bonjour à tous.

Trois questions aujourd'hui, et j'espère que vos réponses me permettront
de progresser :

Option Explicit impose la déclaration de variables, mais quand cette
option est omise, il arrive que le code fonctionne si certaines variables
ne sont pas définies.
Est-il préférable d'utiliser cette option et de déclarer toutes les
variables ?

Dans quels cas est-il nécessaire - utile - , pour libérer de la mémoire,
de remettre les variables (définies par Dim...As...) à zéro à l'issue de
l'exécution d'une procédure qui ne doit s'exécuter qu'une fois ?

Existe-t'il une commande pour remettre en une seule fois à zéro toutes
les variables d'une procédure (sans passer par Set Varxx As Nothing)?



Merci de vos réponses,

Bien cordialement,

Patrick.









Avatar
LSteph
Bonjour Gaenonius,
Pas de souci. Telle que la question était posée elle n'envisageait qu'un cas
qui ne poserait pas le pb.
Je n'ai rien à ajouter au vu de ton explication à Patrick aussi la solution
donnée par Alain convient très bien avec une portée de module et
même avec une portée globale : End.

Bonne journée à toi.

'lSteph


"Gaenonius" a écrit dans le message de news:

Apparemment, nous n'avons pas eu la même lecture de la question.

--
Gaenonius

???

'lSteph

"Gaenonius" a écrit dans le message de news:
%

Existe-t'il une commande pour remettre en une seule fois à zéro toutes
les
variables d'une procédure (sans passer par Set Varxx As Nothing)?


End Sub

--
Gaenonius


Bonjour à tous.

Trois questions aujourd'hui, et j'espère que vos réponses me permettront
de progresser :

Option Explicit impose la déclaration de variables, mais quand cette
option est omise, il arrive que le code fonctionne si certaines
variables ne sont pas définies.
Est-il préférable d'utiliser cette option et de déclarer toutes les
variables ?

Dans quels cas est-il nécessaire - utile - , pour libérer de la mémoire,
de remettre les variables (définies par Dim...As...) à zéro à l'issue de
l'exécution d'une procédure qui ne doit s'exécuter qu'une fois ?

Existe-t'il une commande pour remettre en une seule fois à zéro toutes
les variables d'une procédure (sans passer par Set Varxx As Nothing)?



Merci de vos réponses,

Bien cordialement,

Patrick.










Avatar
Patrick BASTARD
Bonjour, *Gaenonius*

Avec les infos que tu me communiques, ajoutées aux précisions d'Eric, et la
bénédiction Urbi Et Orbi de Alain, me voilà rassuré.

Soyez-en tous remerciés, mes frères,
;-)

Bon dimanche à vous

Bien cordialement,

Patrick.


Je confirme que End Sub permet de "remettre en une seule fois à zéro
toutes les variables d'une procédure", pour reprendre la question
telle qu'elle était formulée. J'ai supposé que par "variables d'une
procédure" il fallait comprendre "variables locales", les variables
globales devant être traitées autrement. L'instruction End Sub
détruit les variables locales et est censée libérer la mémoire qui
leur a été réservée. Réinitialiser explicitement une variable objet (par
Set
laVar=Nothing) peut cependant être utile dans certains cas (par
exemple une collection, déclarée publique, qui doit être vidée de son
contenu dans le cours de l'exécution du programme).


Bonsoir, *Gaenonius*


Confirmes-tu que End Sub réinitialise les variables définies dans
cette sub ?
Si oui, quelle est l'utilité de Set mavar = Nothing ?

Bien cordialement,

Patrick.





Existe-t'il une commande pour remettre en une seule fois à zéro
toutes les variables d'une procédure (sans passer par Set Varxx As
Nothing)?


End Sub







1 2