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 :

Gestion memoire VBA [XL-2010]


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Homme Profil pro
    Assistant aux utilisateurs
    Inscrit en
    Mars 2014
    Messages
    72
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Assistant aux utilisateurs
    Secteur : Transports

    Informations forums :
    Inscription : Mars 2014
    Messages : 72
    Par défaut Gestion memoire VBA
    Bonjour

    J'ai une feuille de données d'un côté et la macro sur une autre. La macro, pour le traitement ouvre et ferme plusieurs fois le fichier données. Le problème est que petit à petit, la mémoire sature et une erreur s'affiche : pas assez de mémoire !
    Pour faire simple :

    action mémoire affiché dans gestionnaire de mémoire windows après action Taille du fichier
    ouverture excel 10,6Mo
    ouverture fichier macro 16Mo 950Ko
    ouverture fichier données test 345Mo 127Mo
    Fermeture fichier données 25Mo

    Malgrés cette opération "blanche", il y a au final un différentiel de 9Mo (25Mo - 16Mo). Qu'est-ce que cela représente et surtout y a-t'il moyen de gérer cela en VBA, c'est à dire supprimer ces 9M, qui s'accumule au fur et à mesure du traitement ?

  2. #2
    Invité
    Invité(e)
    Par défaut Bojour,
    quand j'ouvre un fichier je l’affect a un variable objet et je traite la macro avec. que je referme je libère la variable objet pour libérer la mémoire. je redonne la main à Windows de temps en temps pour lui permettre sa gestion de pagination mémoire!
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    Sub TEST()
    Dim wb As Workbook
    Dim ws As Worksheet
    Set wb = Workbooks.Open(Fichier) 'l’affect le classeur à une variable objet
    For I = 1 To wb.Sheets.Count
        Set ws = wb.Sheets(I) 'l’affect la feuille à une variable objet
        ws.Cells.Delete
        Set ws = Nothing 'libérer la mémoire.
        doevent 'je redonne la main à Windows
    Next
    wb.Save
    wb.Close fale
    Set wb = Nothing 'libérer la mémoire.
    End Sub

  3. #3
    Membre confirmé
    Homme Profil pro
    Assistant aux utilisateurs
    Inscrit en
    Mars 2014
    Messages
    72
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Assistant aux utilisateurs
    Secteur : Transports

    Informations forums :
    Inscription : Mars 2014
    Messages : 72
    Par défaut
    Le résultat n'est pas concluant.

    Je ne vois aucune modification de la gestion de la mémoire côté processus avec le DoEvents.
    Le fait de déclarer les objets en nothing ne changent rien non plus.

    Le "problème" semble être la gestion de la mémoire par Excel (voire windows), et non par ma macro. Dans l'exemple précité, il n'y a aucun traitement d'effectué, pourtant il y a un delta de 9Mo. Que contiennent ces 9Mo ? Comment les enlever pour éviter qu'ils s'accumulent au fur et à mesure du traitement macro ? (qui je le rappelle ouvre et ferme plusieurs fois un fichier)

  4. #4
    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,

    et après avoir fermé Excel ?


  5. #5
    Membre confirmé
    Homme Profil pro
    Assistant aux utilisateurs
    Inscrit en
    Mars 2014
    Messages
    72
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Assistant aux utilisateurs
    Secteur : Transports

    Informations forums :
    Inscription : Mars 2014
    Messages : 72
    Par défaut
    Bonjour Marc-L

    Après avoir fermé Excel, si je réouvre excel derrière, la taille mémoire a augmenté aussi.
    Mais, hum, , je ne vois pas trop comment exécuter une macro si je ferme Excel.

  6. #6
    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





    C'était pour vérifier si c'est Excel qui verrouillait la mémoire, maintenant t'es fixé !



+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 16
    Dernier message: 20/04/2006, 14h11
  2. [NetBeans] Probleme de Processus IDE(Gestion mémoire)
    Par sniperseb dans le forum NetBeans
    Réponses: 3
    Dernier message: 01/02/2006, 19h22
  3. Gestion en vba des fichiers excel en mode multiutilisateurs
    Par kernel57 dans le forum Macros et VBA Excel
    Réponses: 6
    Dernier message: 08/12/2005, 16h06
  4. Question Basique Gestion Erreur VBA ...
    Par Le_Phasme dans le forum Access
    Réponses: 2
    Dernier message: 11/10/2005, 13h42
  5. [JVM]Gestion mémoire : Bizarre
    Par elitost dans le forum Général Java
    Réponses: 2
    Dernier message: 28/09/2005, 20h34

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