Microsoft 365 EXCEL VBA - Gestion de la mémoire

Excel6689

XLDnaute Nouveau
Bonjour,
je débute en VBA et j'ai lu qu'il fallait gérer la mémoire, mais où tuer les objets... ?
Et comment s'assurer que le travail a été bien fait ?
par avance merci​
 
Dernière édition:
Solution
Bonsoir Excel6689, le forum

Un peu de lecture ici
Un exemple vaut mieux qu'un discours....
VB:
Sub Exemple()
Application.ScreenUpdating = False
Dim Sh1 As Worksheet
Dim Sh2 As Worksheet

Set Sh1 = Feuil1                'Codename de la feuille
'Autre manière de faire
Set Sh2 = Worksheet("Feuil2")   'Nom de la feuille

'*******blablabla

'On a terminé on libère les objets

Set Sh1 = Nothing        'Decharge Sh1
Set Sh2 = Nothing        'Decharge Sh2

Application.ScreenUpdating = True 'Facultatif
End Sub
@Phil69970

Phil69970

XLDnaute Barbatruc
Bonsoir Excel6689, le forum

Un peu de lecture ici
Un exemple vaut mieux qu'un discours....
VB:
Sub Exemple()
Application.ScreenUpdating = False
Dim Sh1 As Worksheet
Dim Sh2 As Worksheet

Set Sh1 = Feuil1                'Codename de la feuille
'Autre manière de faire
Set Sh2 = Worksheet("Feuil2")   'Nom de la feuille

'*******blablabla

'On a terminé on libère les objets

Set Sh1 = Nothing        'Decharge Sh1
Set Sh2 = Nothing        'Decharge Sh2

Application.ScreenUpdating = True 'Facultatif
End Sub
@Phil69970
 

Excel6689

XLDnaute Nouveau
Bonsoir Phil69970, merci pour ta réponse.
Sur un projet modulaire il faut le faire sur chaque Sub ou Function ?
Et pour les range aussi apparemment ?

Il n'a pas moyen de savoir ce que "consomme" le code en mémoire en dehors du gestionnaire des tâches à supposer que cela soit fiable ?
 
Dernière édition:

Dranreb

XLDnaute Barbatruc
Bonsoir.
C'est inutile pour les variables locales, qui ne sont de toute façon plus connues une fois terminée la procédure où elles sont utilisées. VBA supprime automatiquement les ressource mobilisées par un objet dès lors que sa dernière référence est perdue. Il est essentiellement recommandé, lorsqu'on n'en a plus besoin, de faire Erase des tableaux dynamiques globaux (déclarés en tête d'un module avant toute procédure). Affectez Nothing aussi, oui, aux objets globaux, notamment les Collection et Dictionary.
C'est cependant inutile aussi dans un UserForm ou un module de classe.
 
Dernière édition:

Phil69970

XLDnaute Barbatruc
Le fil

Sans rien connaitre de ton projet et je cite :
Ne maîtrisant pas VBA c'est un peu comme me parler chinois, même si j'ai conscience qui faille y prêter attention
Je ne peux que te conseiller de la lecture :
Et de la lecture en général

@Phil69970
 

Discussions similaires

Réponses
12
Affichages
287

Statistiques des forums

Discussions
312 080
Messages
2 085 149
Membres
102 794
dernier inscrit
espinata