Set variable = Nothing

[Résolu]
Signaler
Messages postés
693
Date d'inscription
samedi 18 mai 2002
Statut
Membre
Dernière intervention
17 avril 2017
-
Messages postés
693
Date d'inscription
samedi 18 mai 2002
Statut
Membre
Dernière intervention
17 avril 2017
-
Bonjour,

Ma question sera brève :
Dans le cas ci-dessous est-il nécessaire de mettre la variable 'pos' à Nothing ?
   Dim pos As Range
   Set pos = Range("AG1:AG400").Find(What:=ActiveCell.Value, LookIn:=xlValues)
      '  traitement
   Set pos = Nothing '  ???

Merci et bonne journée

Cheyenne

6 réponses

Messages postés
1835
Date d'inscription
vendredi 13 mai 2005
Statut
Membre
Dernière intervention
20 novembre 2013
10
Salut,

à priori et jusqu'a preuve du contraire, pour le VBA non et en tout cas pas pour ce type d'objet.

A+
Messages postés
18038
Date d'inscription
lundi 7 décembre 2009
Statut
Modérateur
Dernière intervention
11 avril 2018
239
on peut toujours trouver un cas particulier mais de façon général ce n'est pas une action recommandée, même si cela ne fait pas de mal

Pas vraiment d'accord avc toi, bigfish,
Les "cas particuliers", j'en ai vu une floppée + 15 et ne sont pas vraiment si "particuliers".

Voilà en tout état de cause ce qu'en dit l'aide VBA, quel que soit l'objet affecté à une vraiable objet

Nothing Facultatif. Met fin à l'association entre objectvar et un objet donné. L'attribution de la valeur Nothing à l'argument objectvar libère l'ensemble des ressources système et mémoire associées à l'objet anciennement référencé lorsqu'aucune autre variable ne le désigne.

Je ne cherche pas à entamer une polémique. Juste à éclairer les choix à faire.
____________________
Réponse exacte ? => "REPONSE ACCEPTEE" pour faciliter les recherches d'autres forumeurs.
Pas d'aide en ligne installée ? ==> ne comptez pas sur moi pour simplement vous dire ce qu'elle contient
Messages postés
693
Date d'inscription
samedi 18 mai 2002
Statut
Membre
Dernière intervention
17 avril 2017
2
Bonjour bigfish_ le vrai,

Merci pour ta réponse rapide.

Bonne continuation,

Cheyenne
Messages postés
18038
Date d'inscription
lundi 7 décembre 2009
Statut
Modérateur
Dernière intervention
11 avril 2018
239
Bonjour,
Voilà le genre de situation dans laquelle ont peut se trouver, en ne déclarant pas à Nothing.

 Dim plage As Range
 Set plage = Range("A1:B10")
' traitement sur la plage plage (n'importe lesquels
' puis
' on veut rechercher dans n'importe quelle autre plage si cellules avec commentaires
' il nous faut alors ce On Error, sans quoi ===>> plantage si aucun commentaire
' mais voilà ! pas de chance ! aucun commentaire n'est là !
 On Error Resume Next
 Set plage = Range("A1:A2").SpecialCells(xlCellTypeComments)
 On Error GoTo 0
' traitement sur plage (imaginons le pire : delete !
' car regardons ce que contient encore plage :
 If Not plage Is Nothing Then MsgBox plage.Address


Je ne prends personnellement jamais de tels risques dans mes applkis ===>> en mettant systématiquement à Nothing : d'une pierre 2 coups : je décharge la mémoire et je me préserve de ce genre de mauvaise plaisanterie.
Et cela ne mange pas de pain !

____________________
Réponse exacte ? => "REPONSE ACCEPTEE" pour faciliter les recherches d'autres forumeurs.
Pas d'aide en ligne installée ? ==> ne comptez pas sur moi pour simplement vous dire ce qu'elle contient
Messages postés
1835
Date d'inscription
vendredi 13 mai 2005
Statut
Membre
Dernière intervention
20 novembre 2013
10
re,

on peut toujours trouver un cas particulier mais de façon général ce n'est pas une action recommandée, même si cela ne fait pas de mal, comme cela peu l'être dans d'autre langage comme le VB6 ou les variables objet peuvent persister en mémoire même après fermeture de l'appli.
Ce n'est pas le cas avec excel qui vide la mémoire lorsqu'on le ferme.

C'est bien dans ce contexte que j'ai répondu.

A+
Messages postés
693
Date d'inscription
samedi 18 mai 2002
Statut
Membre
Dernière intervention
17 avril 2017
2
Re,

Merci à vous deux pour le complément d'informations.

Bonne soirée,

Cheyenne