IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Macros et VBA Excel Discussion :

VBA et La gestion de mémoire


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Nouveau candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Juin 2016
    Messages
    2
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Seine Saint Denis (Île de France)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Finance

    Informations forums :
    Inscription : Juin 2016
    Messages : 2
    Par défaut VBA et La gestion de mémoire
    Bonjour,

    je suis un programmeur junior en VBA. Après avoir développé ma dernière macro , je me suis heurté à une erreur de type "out of memory". après quelques recherches je me suis rendu compte que le problème venait du faite que ma macro consommait trop de ressource mémoire.
    J'ai donc décidé d'essayer de gérer de façon optimal la mémoire. cependant je me pose des questions dont je n'ai trouvé les réponses nulle part sur le web.

    Comment libérer veritablement la mémoire?
    En fait j'ai ouvert le task manager windows pour savoir la mémoire consommé par excel lorsque je lance ma macro.
    au départ dès le lancement de la macro he passait de 162.000 K à à envirion 803.000 K .
    Après avoir mis les pointeur d'objet à nothing , éviter les variable public et erase les tableaux je suis plutôt passé de 162.000K à 600.000 K.
    jusque là pas de problème.

    Mais ma question est pourquoi après que la macro ait finit de tourner le private working set reste toujours figé à 600.000K? normalement la macro ayant finit de tourné tout l'espace utilisé devrait être libéré. donc le working set devrait retomber à 162.000K .

    Aussi quand j'exécute la macro step by step , je remarque dès que je passe des argument à une fonction la mémoire utilisé augmente, les variables transmises étant déjà existante et vu que ils sont transmis byref, il ne devrait pas avoir une nouvelle mémoire consommée. comment cela est il possible?

    Pourquoi même après avoir fermer le classeur la private working set reste toujours figé à 600.000K ? ça devrait baisser normalement

    enfin , c'est quoi la limite de mémoire RAM q'une macro peut utilisée?

    Merci pour vos réponse. j'espère avoir été clair

  2. #2
    Inactif  

    Homme Profil pro
    cuisiniste
    Inscrit en
    Avril 2009
    Messages
    15 374
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : cuisiniste
    Secteur : Bâtiment

    Informations forums :
    Inscription : Avril 2009
    Messages : 15 374
    Billets dans le blog
    8
    Par défaut re
    bonjour
    c'est un défaut de conception dans ta macro en fait
    pourrait tu donner le code de ta macro ? se sera plus clair
    mes fichiers dans les contributions:
    mail avec CDO en vba et mail avec CDO en vbs dans un HTA
    survol des bouton dans userform
    prendre un cliché d'un range

    si ton problème est résolu n'oublie pas de pointer : : ça peut servir aux autres
    et n'oublie pas de voter

  3. #3
    Expert éminent
    Avatar de Marc-L
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Avril 2013
    Messages
    9 468
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2013
    Messages : 9 468
    Par défaut



    Bonjour,

    du même avis que Patrick, j'ajoute le classique oubli de libérer les variables de type objet …



    _________________________________________________________________________________________________________
    Je suis Paris, Charlie, Bruxelles, …

  4. #4
    Nouveau candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Juin 2016
    Messages
    2
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Seine Saint Denis (Île de France)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Finance

    Informations forums :
    Inscription : Juin 2016
    Messages : 2
    Par défaut
    Bonjour,

    Je ne pourrai pas publier la macro ici, car elle est protégée par le secret professionnel.
    Mais en gros disons que je récupère des données sur un serveur que j'incorpore dans des objets à moi. Ces objets sont stockés dans un dictionnaire avant d'être coller ensuite dans une feuille excel.(je colle les valeurs des propriétés). mais ensuite je set tout les pointeurs sur ces objets a nothing et je delete tous les tableaux crées lors de l'exécution de la macro. ce qui est vrai c'est que la mémoire utilisé par excel ne baisse pas même après que la macro ait finit de tourner. ou même quand je ferme le classeur excel. Comme si les données était toujours stocké quelque part en mémoire même si la macro avait finit de tourner et que le classeur qui la contient ait été fermé.

  5. #5
    Modérateur
    Avatar de AlainTech
    Homme Profil pro
    Consultant informatique
    Inscrit en
    Mai 2005
    Messages
    4 235
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 71
    Localisation : Belgique

    Informations professionnelles :
    Activité : Consultant informatique
    Secteur : Finance

    Informations forums :
    Inscription : Mai 2005
    Messages : 4 235
    Par défaut
    Bonjour,

    Ouvres-tu une nouvelle instance Excel Application dans ta macro?
    N'oubliez pas de cliquer sur quand vous avez obtenu ou trouvé vous-même la réponse à votre question.
    Si vous trouvez seul, pensez à poster votre solution. Elle peut servir à d'autres!
    Pensez aussi à voter pour les réponses qui vous ont aidés.
    ------------
    Je dois beaucoup de mes connaissances à mes erreurs!

  6. #6
    Inactif  

    Homme Profil pro
    cuisiniste
    Inscrit en
    Avril 2009
    Messages
    15 374
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : cuisiniste
    Secteur : Bâtiment

    Informations forums :
    Inscription : Avril 2009
    Messages : 15 374
    Billets dans le blog
    8
    Par défaut re
    Mais en gros disons que je récupère des données sur un serveur que j'incorpore dans des objets à moi. Ces objets sont stockés dans un dictionnaire avant d'être coller ensuite dans une feuille excel
    ???????????????

    c'est quoi ces objects a toi hein ??

    sans ta macro sa risque d'être difficile de t aider

    a ce jour les devins c'est dans les films de science fiction

    et puis a part des liens ou des logins et mots de passe je ne vois pas ce qui peut être confidentiel
    mes fichiers dans les contributions:
    mail avec CDO en vba et mail avec CDO en vbs dans un HTA
    survol des bouton dans userform
    prendre un cliché d'un range

    si ton problème est résolu n'oublie pas de pointer : : ça peut servir aux autres
    et n'oublie pas de voter

  7. #7
    Expert confirmé

    Homme Profil pro
    Curieux
    Inscrit en
    Juillet 2012
    Messages
    5 169
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Curieux
    Secteur : Arts - Culture

    Informations forums :
    Inscription : Juillet 2012
    Messages : 5 169
    Billets dans le blog
    5
    Par défaut
    Citation Envoyé par LordCommandor Voir le message
    Mais en gros disons que je récupère des données sur un serveur que j'incorpore dans des objets à moi.
    Bonjour,

    la connexion est-elle bien rompue ?

    sans code on va pas aller bien loin avec nos "lieux communs"

  8. #8
    Invité
    Invité(e)
    Par défaut
    Bonsoir,
    Il n'est pas besoin de donner le code exacte de ta macro, mais un exemple avec l'objet toto, titi, tutu sans même devoler le contenu de ces objets mais en respectant l'esprit du développement pourrait suffire!

    En fait de transposer ton problème en exemple approchant!

    Notre compréhension du problème ne dépend que de tes facultés d'le l'exprimer sens dévoiler le vrais tenants et aboutissants!

    Par exemple un
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    set MyVar as new ToTo 'ce termine inévitablement par
    Set MyVar = nothing
    Dernière modification par Invité ; 12/06/2016 à 23h48.

Discussions similaires

  1. Validité d'un code VBA+SQL pour gestion de mémoire
    Par stefposs dans le forum VBA Access
    Réponses: 2
    Dernier message: 27/09/2007, 13h32
  2. Réponses: 7
    Dernier message: 06/06/2006, 15h38
  3. [VBA-E]QueryTable et utilisation mémoire
    Par Pgs dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 03/04/2006, 09h19
  4. [VBA-E]Cbx - gestion de la valeur null
    Par Tartenpion dans le forum Macros et VBA Excel
    Réponses: 3
    Dernier message: 19/02/2006, 10h44
  5. [VBA-E] Saturation de la mémoire car trop de macros activées
    Par MrYoYo dans le forum Macros et VBA Excel
    Réponses: 10
    Dernier message: 02/12/2005, 19h01

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo