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 :

Comment économiser la mémoire vive ? [XL-2013]


Sujet :

Macros et VBA Excel

  1. #1
    Membre régulier
    Homme Profil pro
    Ingénieur aéronautique
    Inscrit en
    Août 2017
    Messages
    363
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 57
    Localisation : France, Tarn (Midi Pyrénées)

    Informations professionnelles :
    Activité : Ingénieur aéronautique
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Août 2017
    Messages : 363
    Points : 79
    Points
    79
    Par défaut Comment économiser la mémoire vive ?
    Bonjour,
    Je dispose d'un fichier qui contient 52 colonnes et environ 400 000 lignes. Les données sont très variées (texte, date, nombres, ...).
    Je dois régulièrement telecharger ce fichier sur un emplacement sécurisé afin d avoir la version à jour de la base de données.
    A l aide d une procédure je récupère en mémoire la totalité de cette base. Quelle est la meilleure manière de procéder pour économiser la mémoire vive ? Je pensais à un enregistrement par boucles dans un tableau ?
    Une fois là base mise en mémoire je peux effectuer des calculs, des extractions, ... et n afficher dans une feuille que les résultats qui m intéressent.
    Merci par avance.

    Cdlt.
    Jérôme

  2. #2
    Expert confirmé
    Homme Profil pro
    Responsable des études
    Inscrit en
    Juillet 2014
    Messages
    2 661
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Aude (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Responsable des études
    Secteur : Santé

    Informations forums :
    Inscription : Juillet 2014
    Messages : 2 661
    Points : 5 785
    Points
    5 785
    Par défaut
    Bonjour,
    Comment économiser la mémoire vive ?
    [...]
    52 colonnes et environ 400 000 lignes
    Excel n'est pas fait pour ça, utilise une application prévue pour gérer les bases de données.
    J'aimerais bien aller vivre en Théorie, car en Théorie tout se passe bien.

  3. #3
    Membre régulier
    Homme Profil pro
    Ingénieur aéronautique
    Inscrit en
    Août 2017
    Messages
    363
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 57
    Localisation : France, Tarn (Midi Pyrénées)

    Informations professionnelles :
    Activité : Ingénieur aéronautique
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Août 2017
    Messages : 363
    Points : 79
    Points
    79
    Par défaut
    Sauf que c est un impératif imposé par mon client. La matrice est sous Excel et les différents extracts doivent également être réalisés par Excel.
    Cdlt.
    Jérôme

  4. #4
    Membre extrêmement actif
    Homme Profil pro
    aucune
    Inscrit en
    Avril 2016
    Messages
    7 563
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 82
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations professionnelles :
    Activité : aucune

    Informations forums :
    Inscription : Avril 2016
    Messages : 7 563
    Points : 12 422
    Points
    12 422
    Par défaut
    Bonjour
    Tout est dit là :
    Je dois régulièrement telecharger ce fichier sur un emplacement sécurisé
    .....
    A l aide d une procédure je récupère en mémoire la totalité de cette base.
    Pour récupérer ces données, je ne connais pas de moyens magiques qui permettraient d'éviter l'ouverture de la totalité du classeur concerné (car je suppose qu'il s'agit d'un classeur ?)
    Il restera donc en mémoire jusqu'à sa fermeture, que tu l'utilises pour extraire des données par paquets ou non .


    Je ne vois alors personnellement pas d'autres solutions que celles quelles qu'elles soient, qui seraient mises en oeuvre à la source (avant téléchargement).
    Question : peux-tu donc participer à la prise de décisions à la source ?

    PS : il est à observer que ta question aurait d'ailleurs pu être posée dans n'importe quel autre forum de ce site,, car il ne s'agit en fait pas d'un problème spécifique à Excel
    Je n'accepte pas de demande d' "amitié" individuelle. Tout développeur est pour moi un ami.
    Je n'ouvre AUCUN classeur tiers (avec ou sans macro ******). Ne m'en proposez donc pas .

    ****** : Non, non ... un classeur .xlsx ne "peut" par exemple et entre autres pas contenir un activex (de surcroît invisible) , "bien sûr" ...

    Il est illusoire de penser que l'on saurait exprimer valablement et précisément en un langage (rigide) de développement ce que l'on peine à exprimer dans le langage naturel, bien plus souple.

  5. #5
    Expert confirmé
    Homme Profil pro
    Responsable des études
    Inscrit en
    Juillet 2014
    Messages
    2 661
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Aude (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Responsable des études
    Secteur : Santé

    Informations forums :
    Inscription : Juillet 2014
    Messages : 2 661
    Points : 5 785
    Points
    5 785
    Par défaut
    Citation Envoyé par licpegpon Voir le message
    Sauf que c est un impératif imposé par mon client. La matrice est sous Excel et les différents extracts doivent également être réalisés par Excel.
    C'est malheureusement a toi d'expliquer a ton client qu'il va droit dans le mur.
    Soit ils investissent dans un ordi avec BEAUCOUP plus de mémoire vive soit dans logiciel fait pour gérer les bases de données.
    J'aimerais bien aller vivre en Théorie, car en Théorie tout se passe bien.

  6. #6
    Membre régulier
    Homme Profil pro
    Ingénieur aéronautique
    Inscrit en
    Août 2017
    Messages
    363
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 57
    Localisation : France, Tarn (Midi Pyrénées)

    Informations professionnelles :
    Activité : Ingénieur aéronautique
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Août 2017
    Messages : 363
    Points : 79
    Points
    79
    Par défaut
    Bonjour,
    Je n ai aucun pouvoir de décision. Je dois faire avec...
    Cdlt
    Jérôme.

  7. #7
    Membre extrêmement actif
    Homme Profil pro
    aucune
    Inscrit en
    Avril 2016
    Messages
    7 563
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 82
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations professionnelles :
    Activité : aucune

    Informations forums :
    Inscription : Avril 2016
    Messages : 7 563
    Points : 12 422
    Points
    12 422
    Par défaut
    Je n ai aucun pouvoir de décision. Je dois faire avec...
    Tu as alors eu ma réponse

    Ce que tu peux alors faire (et rien d'autre), c'est de n'encombrer ta mémoire que le temps nécessaire à l'allègement *** ou au morcellement du fichier téléchargé.


    **** Allègements possibles :
    - le sauvegarder après l'avoir débarrassé de toutes ses mises en forme, formules éventuelles, etc ...
    - l'exploiter pour n'en extraire que les données dans un fichier texte structuré (que tu peux ensuite décomposer en plusieurs) et traiter ensuite ces "morceaux"

    C'est à toi de voir en fonction du contexte que tu es seul à connaître

    EDIT : ce que j'ai dit plus haut pourrait au besoin être fait sur une machine "indépendante" distincte dont l'occupation de la mémoire ne gênerait pas d'autres utilisateurs et/ou taches.
    Je n'accepte pas de demande d' "amitié" individuelle. Tout développeur est pour moi un ami.
    Je n'ouvre AUCUN classeur tiers (avec ou sans macro ******). Ne m'en proposez donc pas .

    ****** : Non, non ... un classeur .xlsx ne "peut" par exemple et entre autres pas contenir un activex (de surcroît invisible) , "bien sûr" ...

    Il est illusoire de penser que l'on saurait exprimer valablement et précisément en un langage (rigide) de développement ce que l'on peine à exprimer dans le langage naturel, bien plus souple.

  8. #8
    Membre expert
    Avatar de Igloobel
    Homme Profil pro
    Développeur ERP - VBA et Formateur bureautique
    Inscrit en
    Septembre 2005
    Messages
    1 869
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loiret (Centre)

    Informations professionnelles :
    Activité : Développeur ERP - VBA et Formateur bureautique
    Secteur : Industrie

    Informations forums :
    Inscription : Septembre 2005
    Messages : 1 869
    Points : 3 442
    Points
    3 442
    Billets dans le blog
    1
    Par défaut
    Bonjour à tous

    Autre astuce

    exporter les données nécessaires dans un fichier de type Csv et utiliser Excel pour le traiter comme un fichier texte
    je sais que cela ressemble beaucoup à ce qu'à dit unparia que je salue
    - le sauvegarder après l'avoir débarrassé de toutes ses mises en forme, formules éventuelles, etc ...
    ceci dit tu travailles sur quel type de becane (OS - Mémoire RAM existante, version de PAck Office, Logiciels présent et ceux présent en mémoire ....)
    Ils ne savaient pas que c'était impossible ... du coup ils l'ont fait (Mark Twain)

    n'oubliez pas de si les messages vous aide ou sont pertinents et de mettre quand cela est !

  9. #9
    Expert éminent sénior Avatar de Menhir
    Homme Profil pro
    Ingénieur
    Inscrit en
    Juin 2007
    Messages
    16 037
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Finistère (Bretagne)

    Informations professionnelles :
    Activité : Ingénieur
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2007
    Messages : 16 037
    Points : 32 866
    Points
    32 866
    Par défaut
    Citation Envoyé par licpegpon Voir le message
    Quelle est la meilleure manière de procéder pour économiser la mémoire vive ?
    Un tableur, de par sa nature, stock en mémoire la totalité de ses données.
    Un SGDB, par contre, ne charge en mémoire que l'enregistrement courant.
    Entre les deux, il n'y a quasiment rien.

    Je plusois donc à la proposition d'halaster08 ( ) comme le ferait n'importe qui ayant un minimum d'expérience.

    Maintenant, il est toujours possible d'étudier des solutions qui pourraient, peut-être, être acceptable par ton client.

    Pour ce qui est des données de bases, s'il ne veut pas investir dans Access ou autre SGBD, du commerce, il est possible de passer par Libre Base ou Open Base.
    Une fois la base créée, il n'est pas très compliqué d'y ajouter/supprimer/modifier des enregistrement avec une petite notice.

    Il existe des passerelles entre ces bases et Excel, par exemple avec du SQL ou du VBA. Sans compter qu'il est possible d'ouvrir une telle base avec Excel. Donc, pour ton client, la base reste accessible depuis Excel.
    Il serait possible d'envisager qu'Excel chapeaute l'applicatif, lance les macros et que les résultats soient des classeurs Excel, tout en ayant des données source sous forme d'une base de données.

    Bref, il serait bon de négocier un compromis.

    Je pensais à un enregistrement par boucles dans un tableau ?
    Je ne comprends pas vraiment ce que tu veux dire, mais si ton idée est de fractionner la base en plusieurs classeurs pour les charger/fermer successivement, ça va être tellement lourd à gérer et lent dans son fonctionnement que ça sera quasiment inutilisable.
    Merci de cliquer sur pour chaque message ayant aidé puis sur pour clore cette discussion.

  10. #10
    Membre régulier
    Homme Profil pro
    Ingénieur aéronautique
    Inscrit en
    Août 2017
    Messages
    363
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 57
    Localisation : France, Tarn (Midi Pyrénées)

    Informations professionnelles :
    Activité : Ingénieur aéronautique
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Août 2017
    Messages : 363
    Points : 79
    Points
    79
    Par défaut
    Bonjour et un grand merci pour toutes vos réponses.... A discuter avec mon client.


    Cdlt.
    Jérôme

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

Discussions similaires

  1. Comment augmenter la mémoire vive allouée à Python?
    Par syrius31 dans le forum Général Python
    Réponses: 19
    Dernier message: 28/03/2011, 16h20
  2. Comment reduire la consommation de la mémoire vive
    Par souarit dans le forum Débuter
    Réponses: 3
    Dernier message: 27/12/2008, 20h37
  3. Comment liberer la mémoire vive svp ?
    Par arnofly dans le forum Windows Forms
    Réponses: 21
    Dernier message: 22/08/2007, 22h23
  4. Comment économiser de la mémoire ?
    Par Bashar dans le forum JDBC
    Réponses: 13
    Dernier message: 22/06/2007, 09h51

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