Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

récupération mémoire dans un module VBA *ACH*

3 réponses
Avatar
alain chatellier
Bonjour,
Voici mon problème :

Quand j'ouvre un fichier Excel 2002 et execute une macro relativement
lourde, la macro s'éxecute à une vitesse raisonnable.
Si je relance la même macro, le temps d'execution peut-être multilplié par 3
ou 4.

Existe t'il dans VBA une fonction à éxécuter avant de sortir des macro qui
permettrais de libérer la place occupée par les variables et ainsi libererait
de la mémoire ?

Cordialement

3 réponses

Avatar
lSteph
Bonjour,
- la portée d'une variable ordinaire s'arrête à End Sub.
- une variable globale conserve sa valeur durant la session, sauf si
un évennement interrompt comme par exemple
la présence d'une instruction End ou la réinitialisation de code dans
VBE.
-une variable objet (définie avec Set) est conservée en mémoire sauf
si on prévoit
de la libèrer Set myObj =Nothing


lSteph

On 18 juin, 09:27, alain chatellier
wrote:
Bonjour,
Voici mon problème :

Quand j'ouvre un fichier Excel 2002 et execute une macro relativement
lourde, la macro s'éxecute à une vitesse raisonnable.
Si je relance la même macro, le temps d'execution peut-être multilpli é par 3
ou 4.

Existe t'il dans VBA une fonction à éxécuter avant de sortir des ma cro qui
permettrais de libérer la place occupée par les variables et ainsi li bererait
de la mémoire ?

Cordialement


Avatar
lSteph
.. j'oubliais une variable ordinaire est conservée aussi si elle est
définie en haut du module et non dans une sub.

Cf différence entre montext1 et montext2
''''''''''''''''''''''''''''''''''''''''''''
Dim montext1 As String

Sub fixation()
Dim montext2 As String

montext1 = "Niveau module"
montext2 = "Niveau procèdure"

MsgBox montext1
MsgBox montext2
End If
End Sub
Sub test()
On Error Resume Next
If mavar Then
MsgBox montext1
MsgBox montext2
End If
On Error GoTo 0
End Sub
''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''

On 18 juin, 11:33, lSteph wrote:
Bonjour,
- la portée d'une variable ordinaire s'arrête à End Sub.
- une variable globale conserve sa valeur durant la session, sauf si
un évennement interrompt comme par exemple
la présence d'une instruction End ou la réinitialisation de code dans
VBE.
-une variable objet (définie avec Set) est conservée en mémoire sauf
si on prévoit
de la libèrer Set myObj =Nothing

lSteph

On 18 juin, 09:27, alain chatellier

wrote:
Bonjour,
Voici mon problème :

Quand j'ouvre un fichier Excel 2002 et execute une macro relativement
lourde, la macro s'éxecute à une vitesse raisonnable.
Si je relance la même macro, le temps d'execution peut-être multilp lié par 3
ou 4.

Existe t'il dans VBA une fonction à éxécuter avant de sortir des macro qui
permettrais de libérer la place occupée par les variables et ainsi libererait
de la mémoire ?

Cordialement




Avatar
lSteph
...oupss (j'ai oublié d'enlever un truc par rapport à mon exemple
d'origine)

Dim montext1 As String

Sub fixation()
Dim montext2 As String

montext1 = "Niveau module"
montext2 = "Niveau procèdure"

MsgBox montext1
MsgBox montext2
End If
End Sub

Sub test()
On Error Resume Next

MsgBox montext1
MsgBox montext2

On Error GoTo 0
End Sub


On 18 juin, 11:41, lSteph wrote:
.. j'oubliais une variable ordinaire est conservée aussi si elle est
définie en haut du module et non dans une sub.

Cf différence entre montext1 et montext2
''''''''''''''''''''''''''''''''''''''''''''
Dim montext1 As String

Sub fixation()
Dim montext2 As String

montext1 = "Niveau module"
montext2 = "Niveau procèdure"

MsgBox montext1
MsgBox montext2
End If
End Sub
Sub test()
On Error Resume Next
If mavar Then
MsgBox montext1
MsgBox montext2
End If
On Error GoTo 0
End Sub
''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''

On 18 juin, 11:33, lSteph wrote:

Bonjour,
- la portée d'une variable ordinaire s'arrête à End Sub.
- une variable globale conserve sa valeur durant la session, sauf si
un évennement interrompt comme par exemple
la présence d'une instruction End ou la réinitialisation de code da ns
VBE.
-une variable objet (définie avec Set) est conservée en mémoire s auf
si on prévoit
de la libèrer Set myObj =Nothing

lSteph

On 18 juin, 09:27, alain chatellier

wrote:
Bonjour,
Voici mon problème :

Quand j'ouvre un fichier Excel 2002 et execute une macro relativement
lourde, la macro s'éxecute à une vitesse raisonnable.
Si je relance la même macro, le temps d'execution peut-être multi lplié par 3
ou 4.

Existe t'il dans VBA une fonction à éxécuter avant de sortir de s macro qui
permettrais de libérer la place occupée par les variables et ains i libererait
de la mémoire ?

Cordialement