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 :

Optimisation lecture et stockage de valeurs


Sujet :

Macros et VBA Excel

  1. #1
    Membre chevronné Avatar de Krovax
    Profil pro
    Inscrit en
    Juillet 2008
    Messages
    1 888
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : France

    Informations forums :
    Inscription : Juillet 2008
    Messages : 1 888
    Points : 2 168
    Points
    2 168
    Par défaut Optimisation lecture et stockage de valeurs
    Bonjur,
    Je travail sur une macro qui lit un tableau de taille inconue et stock les valeurs dans une matrice.

    Pour l'instant la matrice de sortie est initialement de longeur 1 et à chaque fois que je lis une nouvelle ligne j'utilise la commande ReDim Preserve pour augmenter la longueur de 1.
    Mon fichier étant très long le temps d'ouverture est très important, je voudrais savoir s'il y a un moyen plus rapide au niveau du temps de calcul.

    J'ai pensé à créer une chaine de pointeur mais ayant besoin par la suite des données du tableau je craint perdre du temps à la lecture. Mon autre problème est que j'ignore comment réaliser une tel chaine en VBA

    Merci d'avance
    « Il n'y a pas de recette miracle qui permet aux gens d’écrire des programmes corrects sans avoir à réfléchir. Il faut apprendre aux gens comment réfléchir »

  2. #2
    Rédacteur/Modérateur

    Avatar de Jean-Philippe André
    Homme Profil pro
    Développeur VBA/C#/VB.Net/Power Platform
    Inscrit en
    Juillet 2007
    Messages
    14 594
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : Canada

    Informations professionnelles :
    Activité : Développeur VBA/C#/VB.Net/Power Platform
    Secteur : Finance

    Informations forums :
    Inscription : Juillet 2007
    Messages : 14 594
    Points : 34 263
    Points
    34 263
    Par défaut
    salut Krovax,
    quel type d'output utilises-tu en aval de ta fonction ?
    Ne peux-tu pas simplement créer un classeur tampon, que tu ouvriras/fermeras le temps de faire tes manipulations ?

    Peux-tu nous en dire un peu plus pour ta problématique d'optimisation stp ?
    Cycle de vie d'un bon programme :
    1/ ça fonctionne 2/ ça s'optimise 3/ ça se refactorise

    Pas de question technique par MP, je ne réponds pas

    Mes ouvrages :
    Apprendre à programmer avec Access 2016, Access 2019 et 2021

    Apprendre à programmer avec VBA Excel
    Prise en main de Dynamics 365 Business Central

    Pensez à consulter la FAQ Excel et la FAQ Access

    Derniers tutos
    Excel et les paramètres régionaux
    Les fichiers Excel binaires : xlsb,

    Autres tutos

  3. #3
    Membre chevronné Avatar de Krovax
    Profil pro
    Inscrit en
    Juillet 2008
    Messages
    1 888
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : France

    Informations forums :
    Inscription : Juillet 2008
    Messages : 1 888
    Points : 2 168
    Points
    2 168
    Par défaut
    J'ai un fichier contenant des coordonnée suivant un certain format
    Je doit récupérer c'est donnée pour les utiliser par la suite.
    Je lis une ligne travail le format
    Agrandi ma matrice d'une ligne et y stock mes valeurs.
    Après je ne comprend pas trop ce que tu entant par output en aval de ma fonction.

    Je débute en VBA mais un fortan je sais que l'allocation de vecteur prend un temps fous, du moins c'est ce que j'avais remarqué, je me dit qu'ici aussi le fait de réalouer a chaque fois de la mémoire pour ma matrice me fait perdre pas mal de temps.

    Sinon j'aime bien l'idée du classeur temporaire celà corespond bien a mes besoins.
    Juste pour savoir, y-t-il une différence de temps de calcul entre l'utilisation d'une valeur contenue dans un varible et celle d'une valeur contenue dans une cellule?

    J'espère avoir été un peu plus clair, mais ca ne l'est pas vraiment pour moi
    « Il n'y a pas de recette miracle qui permet aux gens d’écrire des programmes corrects sans avoir à réfléchir. Il faut apprendre aux gens comment réfléchir »

  4. #4
    Rédacteur/Modérateur

    Avatar de Jean-Philippe André
    Homme Profil pro
    Développeur VBA/C#/VB.Net/Power Platform
    Inscrit en
    Juillet 2007
    Messages
    14 594
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : Canada

    Informations professionnelles :
    Activité : Développeur VBA/C#/VB.Net/Power Platform
    Secteur : Finance

    Informations forums :
    Inscription : Juillet 2007
    Messages : 14 594
    Points : 34 263
    Points
    34 263
    Par défaut
    En terme de rapidité d'accès, la simple variable est à privilégié, dans la mesure où tu n'as pas besoin d'accéder à un emplacement spécifique dans un objet plus complexe.

    Ma question était en fait liée à l'utilisation ultérieure de ces données que tu me dis formater. Pourquoi utilises-tu une matrice au lieu de garder le fichier comme proposé précédemment ?
    Cycle de vie d'un bon programme :
    1/ ça fonctionne 2/ ça s'optimise 3/ ça se refactorise

    Pas de question technique par MP, je ne réponds pas

    Mes ouvrages :
    Apprendre à programmer avec Access 2016, Access 2019 et 2021

    Apprendre à programmer avec VBA Excel
    Prise en main de Dynamics 365 Business Central

    Pensez à consulter la FAQ Excel et la FAQ Access

    Derniers tutos
    Excel et les paramètres régionaux
    Les fichiers Excel binaires : xlsb,

    Autres tutos

  5. #5
    Membre chevronné Avatar de Krovax
    Profil pro
    Inscrit en
    Juillet 2008
    Messages
    1 888
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : France

    Informations forums :
    Inscription : Juillet 2008
    Messages : 1 888
    Points : 2 168
    Points
    2 168
    Par défaut
    En fait la macro sert d'interface entre deux logiciels qui utilise des formats différents et au passage j'utilise excel pour modifier pas mal de truc (création de nouveau point, ajout de donnée....)

    Mais concernant les chaine de pointeurs c'est efficace en VBA? Si oui comment les créer? Ou le gain sera faible et je ferais mieu de prendre le classeur temporaire?
    « Il n'y a pas de recette miracle qui permet aux gens d’écrire des programmes corrects sans avoir à réfléchir. Il faut apprendre aux gens comment réfléchir »

  6. #6
    Rédacteur/Modérateur

    Avatar de Jean-Philippe André
    Homme Profil pro
    Développeur VBA/C#/VB.Net/Power Platform
    Inscrit en
    Juillet 2007
    Messages
    14 594
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : Canada

    Informations professionnelles :
    Activité : Développeur VBA/C#/VB.Net/Power Platform
    Secteur : Finance

    Informations forums :
    Inscription : Juillet 2007
    Messages : 14 594
    Points : 34 263
    Points
    34 263
    Par défaut
    je t'avoue que les chaines de pointeurs, pour moi c'est du C, pas du VBA
    donc pour répondre à ta question, étudie les possibilités de classeur temporaire, et si nécessaire, passe par de la lecture de fichiers texte pour améliorer les performances
    Cycle de vie d'un bon programme :
    1/ ça fonctionne 2/ ça s'optimise 3/ ça se refactorise

    Pas de question technique par MP, je ne réponds pas

    Mes ouvrages :
    Apprendre à programmer avec Access 2016, Access 2019 et 2021

    Apprendre à programmer avec VBA Excel
    Prise en main de Dynamics 365 Business Central

    Pensez à consulter la FAQ Excel et la FAQ Access

    Derniers tutos
    Excel et les paramètres régionaux
    Les fichiers Excel binaires : xlsb,

    Autres tutos

  7. #7
    Membre chevronné Avatar de Krovax
    Profil pro
    Inscrit en
    Juillet 2008
    Messages
    1 888
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : France

    Informations forums :
    Inscription : Juillet 2008
    Messages : 1 888
    Points : 2 168
    Points
    2 168
    Par défaut
    Je suppose que si fortran fait des chaine de pointeur tout le monde peut en faire
    Je vais essayer le coup du classeur et voir si je gagne du temps de calcul merci bien
    « Il n'y a pas de recette miracle qui permet aux gens d’écrire des programmes corrects sans avoir à réfléchir. Il faut apprendre aux gens comment réfléchir »

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

Discussions similaires

  1. Réponses: 4
    Dernier message: 15/07/2007, 00h07
  2. optimiser lecture fichier image
    Par cheho dans le forum C++
    Réponses: 17
    Dernier message: 15/09/2006, 14h14
  3. Lecture et Stockage du contenu d'un fichier
    Par Raideman dans le forum C++
    Réponses: 9
    Dernier message: 22/08/2006, 07h12
  4. Optimisation lecture d'un fichier en binaire
    Par User dans le forum VB 6 et antérieur
    Réponses: 3
    Dernier message: 13/10/2005, 21h08

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