OVH Cloud OVH Cloud

a quoi sert la fonction set nothing dans le code vba

7 réponses
Avatar
JEAN
bsr,

a quoi sert la fonction set nothing, dans vba.

merci

7 réponses

Avatar
Hervé
Salut
Elle sert à décharger les objets en mémoire.
Hervé.

"JEAN" a écrit dans le message news:

bsr,

a quoi sert la fonction set nothing, dans vba.

merci


Avatar
JEAN
comment je peux les intégrer dans mes macros.

car mon application est ralenti, pour s'ouvrir, pour calculer.

comment fair epour liberer les objets de ma memoire

quelle code doit je mettre dans ma routine?

merci


Salut
Elle sert à décharger les objets en mémoire.
Hervé.

"JEAN" a écrit dans le message news:

bsr,

a quoi sert la fonction set nothing, dans vba.

merci







Avatar
michdenis
Bonjour Jean,

a quoi sert la fonction set nothing, dans vba

Ceci s'applique seulement aux variables "objet" déclarées dans une procédure. Un objet ce peut être "Range", Worksheets,
Sheets, Shapes, CommandBars ... et on les retrouve habituellement déclarer en début de procédure.

Exemple :

Dim Sh As Worksheet ou Dim Rg as Range

Ensuite, on utilise le mot SET pour attribuer à notre variable l'objet désigné.

Set Sh = Worksheets("Feuil1")

La variable Sh acquiert donc toutes les propriétés et les méthodes de la feuille Worksheets("Feuil1")
Exemple :

Worksheets("Feuil1").range("A1") = 10
On peut écrire la même chose en utilisant la variable
Sh.Range("A1") 

Ces variables "objet" prennent beaucoup de place en mémoire vive si l'on compare à une variable simple comme Dim A as
Integer.

À la fin de la procédure, c'est une bonne habitude de libérer l'espace mémoire que ces variables occupaient. Et pour ce
faire, on utilise cette commande :

Set Sh = Nothing

C'est une bonne habitude à prendre bien que ce ne soit pas nécessaire à l'exécution du code. Et dans les faits, à la fin
d'une procédure si la variable objet est déclarée localement, elle se vide tout seule sans cette ligne de code.
Cependant, lorsque le programme est important, cela rend la lecture du code plus facile ... au même titre que la
déclaration des variables.


Salutations!
Avatar
JEAN
si je ne déclare pas de variable objets comme:
Dim Sh As Worksheet ou Dim Rg as Range
je n'ai pas besoin d'utiliser set nothing.

merci de votre aide.




Bonjour Jean,

a quoi sert la fonction set nothing, dans vba

Ceci s'applique seulement aux variables "objet" déclarées dans une procédure. Un objet ce peut être "Range", Worksheets,
Sheets, Shapes, CommandBars ... et on les retrouve habituellement déclarer en début de procédure.

Exemple :

Dim Sh As Worksheet ou Dim Rg as Range

Ensuite, on utilise le mot SET pour attribuer à notre variable l'objet désigné.

Set Sh = Worksheets("Feuil1")

La variable Sh acquiert donc toutes les propriétés et les méthodes de la feuille Worksheets("Feuil1")
Exemple :

Worksheets("Feuil1").range("A1") = 10
On peut écrire la même chose en utilisant la variable
Sh.Range("A1") 

Ces variables "objet" prennent beaucoup de place en mémoire vive si l'on compare à une variable simple comme Dim A as
Integer.

À la fin de la procédure, c'est une bonne habitude de libérer l'espace mémoire que ces variables occupaient. Et pour ce
faire, on utilise cette commande :

Set Sh = Nothing

C'est une bonne habitude à prendre bien que ce ne soit pas nécessaire à l'exécution du code. Et dans les faits, à la fin
d'une procédure si la variable objet est déclarée localement, elle se vide tout seule sans cette ligne de code.
Cependant, lorsque le programme est important, cela rend la lecture du code plus facile ... au même titre que la
déclaration des variables.


Salutations!








Avatar
michdenis
Bonjour Jean,

Pour maximiser l'efficience et l'efficacité du code et des formules d'une application, cela requiert beaucoup d'années
d'expérience. Il n'y a pas un truc particulier mais un ensemble de petites choses qui finissent par avoir un effet
notable sur "la vitesse" d'une l'application.

Je ne crois pas que ce type de problématique peut être résolu facilement par question-réponse sur un forum à moins que
tu veuilles débattre d'un point précis de ton application.


Salutations!



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

comment je peux les intégrer dans mes macros.

car mon application est ralenti, pour s'ouvrir, pour calculer.

comment fair epour liberer les objets de ma memoire

quelle code doit je mettre dans ma routine?

merci


Salut
Elle sert à décharger les objets en mémoire.
Hervé.

"JEAN" a écrit dans le message news:

bsr,

a quoi sert la fonction set nothing, dans vba.

merci







Avatar
JEAN
oui pourquoi quand j'ouvre mon fichier a chaque fois j'ai recalcul en bas qui
prend du temps et du coup fait ralentir, mon appli
comment contourner ceci

et du coup si j'ai pas de variables d'objets.

j'ai pas besoin d'utiliser set nothing?

merci


Bonjour Jean,

Pour maximiser l'efficience et l'efficacité du code et des formules d'une application, cela requiert beaucoup d'années
d'expérience. Il n'y a pas un truc particulier mais un ensemble de petites choses qui finissent par avoir un effet
notable sur "la vitesse" d'une l'application.

Je ne crois pas que ce type de problématique peut être résolu facilement par question-réponse sur un forum à moins que
tu veuilles débattre d'un point précis de ton application.


Salutations!



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

comment je peux les intégrer dans mes macros.

car mon application est ralenti, pour s'ouvrir, pour calculer.

comment fair epour liberer les objets de ma memoire

quelle code doit je mettre dans ma routine?

merci


Salut
Elle sert à décharger les objets en mémoire.
Hervé.

"JEAN" a écrit dans le message news:

bsr,

a quoi sert la fonction set nothing, dans vba.

merci












Avatar
michdenis
Bonjour Jean,

Quand tu ouvres ton fichier, excel exécute le recalcul de toutes les cellules qui utilises une fonction "Volatile"
appartenant à l'application Excel elle-même.

Ces fonctions sont : Zones(), Aleas(), Index(), Decaler(), Cellule(), Indirect(), Lignes(), Colonnes(), Maintenant(),
et Aujourdhui().

Comme certaines de ces fonctions sont souvent utilisées dans des formules matricielles....il est normal que cela prenne
un certain à calculer. Pour contrer le fait qu'excel rééavalue ces cellules si elles font références à une de ces
fonctions, il n'y a aucune parade, rien à faire ....à moins de vouloir utiliser l'option Calcul Manuel ou sur ordre
plutôt qu'un calcul automatique du classeur.

La mémoire est gérée par windows... il est plutôt très rare que l'usager doive intervenir à ce niveau là .


Salutations!





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

oui pourquoi quand j'ouvre mon fichier a chaque fois j'ai recalcul en bas qui
prend du temps et du coup fait ralentir, mon appli
comment contourner ceci

et du coup si j'ai pas de variables d'objets.

j'ai pas besoin d'utiliser set nothing?

merci


Bonjour Jean,

Pour maximiser l'efficience et l'efficacité du code et des formules d'une application, cela requiert beaucoup d'années
d'expérience. Il n'y a pas un truc particulier mais un ensemble de petites choses qui finissent par avoir un effet
notable sur "la vitesse" d'une l'application.

Je ne crois pas que ce type de problématique peut être résolu facilement par question-réponse sur un forum à moins que
tu veuilles débattre d'un point précis de ton application.


Salutations!



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

comment je peux les intégrer dans mes macros.

car mon application est ralenti, pour s'ouvrir, pour calculer.

comment fair epour liberer les objets de ma memoire

quelle code doit je mettre dans ma routine?

merci


Salut
Elle sert à décharger les objets en mémoire.
Hervé.

"JEAN" a écrit dans le message news:

bsr,

a quoi sert la fonction set nothing, dans vba.

merci