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 :

Problème allocation ressources macros excel vba


Sujet :

Macros et VBA Excel

  1. #1
    Nouveau membre du Club
    Homme Profil pro
    Chef de projet MOA
    Inscrit en
    Février 2015
    Messages
    6
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Chef de projet MOA
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Février 2015
    Messages : 6
    Par défaut Problème allocation ressources macros excel vba
    Bonjour à tous,

    je me heurte a un probleme que je n'arrive pas a résoudre : j'ai fait un tableau de bord avec pas mal de macros pour extraire et traiter des données .
    Plusieurs macros sont a activer et Je suis obligé de fermer le fichier excel a chaque fois pour allé jusqu'au bout .
    Un message d'erreur : "excel ne peut pas terminer l'action car manque de ressources" ,
    J'ai l'impression que la mémoire tampon sature lorsque je selectionne une plage et la supprime.


    J'ai essaye en vain de vider le presse papier, de mettre des range ....
    Merci d'avance pour votre aide ,

    Damien P.

  2. #2
    Invité
    Invité(e)
    Par défaut
    bonjour,
    difficile de répondre à cette question sans un minimum de code, sauf dire des généralités!

    1) si tu affectes des objet par références (set MyObject = range("A1:Z12"), il faut libérer l'objet après utilisation (Set MyObject = Nothing)
    2) rendre de temps en temps la main à Windows pour lui permettre de faire le ménage (Doevents)
    3) effectivement libérer le presse papier
    Dernière modification par Invité ; 24/02/2015 à 16h20. Motif: Ajout des balises [C] ... [/C]

  3. #3
    Nouveau membre du Club
    Homme Profil pro
    Chef de projet MOA
    Inscrit en
    Février 2015
    Messages
    6
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Chef de projet MOA
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Février 2015
    Messages : 6
    Par défaut
    Re bonjour ,

    Merci beaucoup d'avoir répondu
    Pour être plus précis : j'ai fait les points 1,2,3 sans succès .
    J'ai une macro que j'appelle plusieurs fois au bout de la deuxième fois elle plante .
    l'instruction suivante semble être la source du problème :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    ActiveWorkbook.Sheets(ref).Rows("6:" & 10 + compteurPDC).Delete
    avec compteur PDC = 160 environ.
    on dirait qu'il n'y a plus assez de mémoire, j'ai essaye de définir la plage comme un range puis de le mettre à "nothing" mais ça ne change rien.

    Merci d'avance ,

  4. #4
    Rédacteur/Modérateur


    Homme Profil pro
    Formateur et développeur chez EXCELLEZ.net
    Inscrit en
    Novembre 2003
    Messages
    19 125
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 58
    Localisation : Belgique

    Informations professionnelles :
    Activité : Formateur et développeur chez EXCELLEZ.net
    Secteur : Enseignement

    Informations forums :
    Inscription : Novembre 2003
    Messages : 19 125
    Billets dans le blog
    131
    Par défaut
    Salut.

    Cinq autres pistes, à essayer concomitamment:
    • Désactiver le calcul automatique avant la suppression (voire en début de macro);
    • Désactiver le rafraichissement de l'affichage en début de macro;
    • Désactiver les événements parce que si tu supprimes des lignes avec un événement sur Change, c'est pas le top;
    • Désactiver les alertes;
    • Fermer les autres classeurs, surtout s'il y a des liaisons avec celui que tu manipules


    Important: Ne pas oublier de réactiver en fin de macro ce que tu as désactivé (pour faire bien, avec gestion d'erreur pour être certain de réactiver même si bug...) et ne JAMAIS stopper l'exécution du code lors d'un bug, mais pointer vers la gestion d'erreur, car la gestion des événements et l'affichage des alertes ne se "réveillent" pas tous seuls en fin de macro.
    "Plus les hommes seront éclairés, plus ils seront libres" (Voltaire)
    ---------------
    Mes billets de blog sur DVP
    Mes remarques et critiques sont purement techniques. Ne les prenez jamais pour des attaques personnelles...
    Pensez à utiliser les tableaux structurés. Ils vous simplifieront la vie, tant en Excel qu'en VBA ==> mon tuto
    Le VBA ne palliera jamais une mauvaise conception de classeur ou un manque de connaissances des outils natifs d'Excel...
    Ce ne sont pas des bonnes pratiques parce que ce sont les miennes, ce sont les miennes parce que ce sont des bonnes pratiques
    VBA pour Excel? Pensez D'ABORD en EXCEL avant de penser en VBA...
    ---------------

  5. #5
    Nouveau membre du Club
    Homme Profil pro
    Chef de projet MOA
    Inscrit en
    Février 2015
    Messages
    6
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Chef de projet MOA
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Février 2015
    Messages : 6
    Par défaut
    Merci
    Je viens de faire tout ça, ça a l'air d'aller un peu mieux néanmoins ça plante au bout de 3 ou 4 itérations..
    En fait c'est la mémoire physique libre ( ctrl + supr=> performance) qui tend vers 0 ...

    y a t il un moyen en vba de remettre cette mémoire physique libre a son niveau max?

    Merci !

  6. #6
    Rédacteur/Modérateur


    Homme Profil pro
    Formateur et développeur chez EXCELLEZ.net
    Inscrit en
    Novembre 2003
    Messages
    19 125
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 58
    Localisation : Belgique

    Informations professionnelles :
    Activité : Formateur et développeur chez EXCELLEZ.net
    Secteur : Enseignement

    Informations forums :
    Inscription : Novembre 2003
    Messages : 19 125
    Billets dans le blog
    131
    Par défaut
    A ma connaissance, pas moyen de jouer avec la mémoire physique en VBA...

    Sauf examen détaillé du code (peux-tu le donner ici?), je ne vois pas trop de pistes...
    "Plus les hommes seront éclairés, plus ils seront libres" (Voltaire)
    ---------------
    Mes billets de blog sur DVP
    Mes remarques et critiques sont purement techniques. Ne les prenez jamais pour des attaques personnelles...
    Pensez à utiliser les tableaux structurés. Ils vous simplifieront la vie, tant en Excel qu'en VBA ==> mon tuto
    Le VBA ne palliera jamais une mauvaise conception de classeur ou un manque de connaissances des outils natifs d'Excel...
    Ce ne sont pas des bonnes pratiques parce que ce sont les miennes, ce sont les miennes parce que ce sont des bonnes pratiques
    VBA pour Excel? Pensez D'ABORD en EXCEL avant de penser en VBA...
    ---------------

  7. #7
    Invité
    Invité(e)
    Par défaut
    Oui, vba laisse Windows gérer la mémoire, les seules leviers que nous disposons Pierre et moi te les ont exposé!

    si ton pc de dispose pas de mémoire suffisante(si il dispose de 160 Go, y a un gros problème de code ),tu peux regarde vers la taille de la mémoire virtuelle (panneau de configuration).

  8. #8
    Nouveau membre du Club
    Homme Profil pro
    Chef de projet MOA
    Inscrit en
    Février 2015
    Messages
    6
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Chef de projet MOA
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Février 2015
    Messages : 6
    Par défaut
    8GB de RAM, je pense que c'est le PC qui n'est pas assez puissant , ca plus le fait je ne suis pas un maitre es VBA

    en tout cas merci pour les infos !
    Bonne fin de journée ,

  9. #9
    Rédacteur/Modérateur


    Homme Profil pro
    Formateur et développeur chez EXCELLEZ.net
    Inscrit en
    Novembre 2003
    Messages
    19 125
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 58
    Localisation : Belgique

    Informations professionnelles :
    Activité : Formateur et développeur chez EXCELLEZ.net
    Secteur : Enseignement

    Informations forums :
    Inscription : Novembre 2003
    Messages : 19 125
    Billets dans le blog
    131
    Par défaut
    Il faut déjà méchamment solliciter Excel pour que le pc ne soit pas assez puissant. (Ceci dit, 8Gb de ram, si tu es en Windows 32 bits, je pense que ça ne sert à rien)...

    Tu ne peux pas nous mettre le code vba ici, qu'on y jette un œil?
    "Plus les hommes seront éclairés, plus ils seront libres" (Voltaire)
    ---------------
    Mes billets de blog sur DVP
    Mes remarques et critiques sont purement techniques. Ne les prenez jamais pour des attaques personnelles...
    Pensez à utiliser les tableaux structurés. Ils vous simplifieront la vie, tant en Excel qu'en VBA ==> mon tuto
    Le VBA ne palliera jamais une mauvaise conception de classeur ou un manque de connaissances des outils natifs d'Excel...
    Ce ne sont pas des bonnes pratiques parce que ce sont les miennes, ce sont les miennes parce que ce sont des bonnes pratiques
    VBA pour Excel? Pensez D'ABORD en EXCEL avant de penser en VBA...
    ---------------

  10. #10
    Nouveau membre du Club
    Homme Profil pro
    Chef de projet MOA
    Inscrit en
    Février 2015
    Messages
    6
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Chef de projet MOA
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Février 2015
    Messages : 6
    Par défaut
    Si je peux mais le code est lourd , si vous me donnez votre mail , je peux vous envoyer le fichier et vous verrez en direct le pb ..

  11. #11
    Rédacteur/Modérateur


    Homme Profil pro
    Formateur et développeur chez EXCELLEZ.net
    Inscrit en
    Novembre 2003
    Messages
    19 125
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 58
    Localisation : Belgique

    Informations professionnelles :
    Activité : Formateur et développeur chez EXCELLEZ.net
    Secteur : Enseignement

    Informations forums :
    Inscription : Novembre 2003
    Messages : 19 125
    Billets dans le blog
    131
    Par défaut
    Hum... Déjà, si le code est lourd, c'est mauvais signe...

    On continue dans les idées à creuser:
    Supprimer les plage.SELECT dans ton code (je parie qu'il y en a) et privilégier les accès directs...

    Cela dit, un code lourd au point qu'on ne puisse pas le copier-coller... (ce n'est que du texte...), ça me laisse perplexe...
    "Plus les hommes seront éclairés, plus ils seront libres" (Voltaire)
    ---------------
    Mes billets de blog sur DVP
    Mes remarques et critiques sont purement techniques. Ne les prenez jamais pour des attaques personnelles...
    Pensez à utiliser les tableaux structurés. Ils vous simplifieront la vie, tant en Excel qu'en VBA ==> mon tuto
    Le VBA ne palliera jamais une mauvaise conception de classeur ou un manque de connaissances des outils natifs d'Excel...
    Ce ne sont pas des bonnes pratiques parce que ce sont les miennes, ce sont les miennes parce que ce sont des bonnes pratiques
    VBA pour Excel? Pensez D'ABORD en EXCEL avant de penser en VBA...
    ---------------

  12. #12
    Expert confirmé
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mai 2013
    Messages
    3 609
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Alimentation

    Informations forums :
    Inscription : Mai 2013
    Messages : 3 609
    Par défaut
    Quelle est la version d'Excel que tu utilises ?

  13. #13
    Nouveau membre du Club
    Homme Profil pro
    Chef de projet MOA
    Inscrit en
    Février 2015
    Messages
    6
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Chef de projet MOA
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Février 2015
    Messages : 6
    Par défaut
    @Pierre Fauconnier

    Je peux vous copier le code mais 300 lignes ca commence a faire ..
    Comme je vous ai dit je ne suis pas un expert et je suis sur qu'il y a moyen d'optimiser , le plus simple serait que je vous envoie le fichier mais je vous ai déja assez embété comme ca .
    Les macros fonctionnent il faut juste que je ferme le fichier à chaque fois que j'active la macro.

    Merci encore pour votre temps .

    Damien P.

    @parmi

    Je travaille chez SAFT BATTERIES et ces macros servent à gérer des tableaux de bord , version utilisée : 2010 standard 32 bits

  14. #14
    Rédacteur/Modérateur


    Homme Profil pro
    Formateur et développeur chez EXCELLEZ.net
    Inscrit en
    Novembre 2003
    Messages
    19 125
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 58
    Localisation : Belgique

    Informations professionnelles :
    Activité : Formateur et développeur chez EXCELLEZ.net
    Secteur : Enseignement

    Informations forums :
    Inscription : Novembre 2003
    Messages : 19 125
    Billets dans le blog
    131
    Par défaut
    Autre idée:
    As-tu des boucles dans ton code? Si oui, as-tu bien cadré leur périmètre?

    Je dis cela parce que je rencontre parfois ceci:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    dim c as range
    for each c in range("c:c")
    ...
    Next
    En 2003, ça occasionnait 65536 boucles, mais en 2007 et suivantes, ça réalise 1.048.576 boucles....

    Et alors, ça fait TRES mal...
    "Plus les hommes seront éclairés, plus ils seront libres" (Voltaire)
    ---------------
    Mes billets de blog sur DVP
    Mes remarques et critiques sont purement techniques. Ne les prenez jamais pour des attaques personnelles...
    Pensez à utiliser les tableaux structurés. Ils vous simplifieront la vie, tant en Excel qu'en VBA ==> mon tuto
    Le VBA ne palliera jamais une mauvaise conception de classeur ou un manque de connaissances des outils natifs d'Excel...
    Ce ne sont pas des bonnes pratiques parce que ce sont les miennes, ce sont les miennes parce que ce sont des bonnes pratiques
    VBA pour Excel? Pensez D'ABORD en EXCEL avant de penser en VBA...
    ---------------

  15. #15
    Expert confirmé
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mai 2013
    Messages
    3 609
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Alimentation

    Informations forums :
    Inscription : Mai 2013
    Messages : 3 609
    Par défaut
    Exact,

    C'est la raison de ma question de version.
    Il m'est arrivé la même chose ou presque sous 2013 (365).
    J'avais des formules qui lisaient toutes les colonnes, du genre SOMME.SI(A:A; "blabla"; C:C).
    Quand il y en a beaucoup, impossible d'ouvrir le fichier ou plantage s'il s'ouvre.
    J'ai donc dû refaire ces formules pour qu'elles soient moins gourmandes.

    Plus bizarre, sous 2007 aucun plantage. Même nombre de lignes et colonnes...
    Je sais que 2013 utilise un maximum de 2 gb de mémoire (2010, je ne sais pas)
    La mémoire pourrait devenir saturée s'il y a trop de formules ou si ces formules considèrent beaucoup de cellules.

    Tout de même étrange pour un programme qui sert principalement à calculer des formules...

Discussions similaires

  1. Appeler une dll ou un autre module vba depuis une macro excel vba
    Par technobiz dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 20/11/2008, 14h24
  2. Réponses: 3
    Dernier message: 19/03/2008, 21h44
  3. Macro Excel VBA : création automatique de 140 graphes/graphiques
    Par techneric dans le forum Macros et VBA Excel
    Réponses: 1
    Dernier message: 11/02/2007, 10h13
  4. macro excel vba
    Par fildupa dans le forum Macros et VBA Excel
    Réponses: 3
    Dernier message: 20/12/2006, 21h29

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