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 :

Temps anormal d'exécution de procédures. [XL-2007]


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Homme Profil pro
    Étudiant
    Inscrit en
    Juillet 2016
    Messages
    26
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juillet 2016
    Messages : 26
    Par défaut Temps anormal d'exécution de procédures.
    Bonjour [

    Nouveau sur le forum, il m'a été fortement conseillé pour la qualité des conseils qui y sont donnés.

    Je programme un outil sous VBA. Je l'ai conçu par morceaux et me voici maintenant dans la phase ou je les assemble bout à bout.
    Plus le programme avance, plus son exécution est anormalement chronophage .
    Concrètement j'ai plusieurs morceaux de programme. J'illustrerai le phénomène en en ciblant deux d'entre-eux En les testant de la manière suivante : j'ouvre Excel, lance le premier qui analyse et traite en 25s. Je ferme excel, je réouvre Excel et le second fonctionne en 1 minute 10s. Si je les exécute à la suite (sans fermer Excel) je suis à 30 minutes soit près de 20 fois plus longtemps.

    C'est un programme pour le boulot et je n'ai pas réussi à le simplifier sans enlever la mension confidentielle tout en conservant le problème , désolé pour ça!

    J'ai longuement cherché sur ce forum pour trouver des solutions qui se sont révélées sans efficacité. J'incriminerai la déclaration des variables (il y a pourtant Option Explicit d'employé) ou l'utilisation de la mémoire.

    Comment puis-je faire un suivi de la mémoire à plusieurs étapes du programme pour en être certain?

    Avez-vous d'autres suggestions de pistes à explorer?

    Merci d'avance pour vos conseils qui me sortiraient d'une bien délicate situation

    Edit : Mon système d'exploitation est Win7 Professionnel 64 bits, un processeur de 2 GHz pour 4Go de RAM.

  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
    re
    bonjour
    en grande partie et même très souvent des app fait de bout a bouts comme tu dis sont bardées de activate et select a tout va alors qu'a 99% ils ne sont pas nécessaire
    après très souvent aussi les débutants utilisent des boucles alors qu'une variable de type tableau(variant) peut faire le lardon

    ensuite comme on n'a pas de code ni de fichier en exemple et comme j'ai casser ma boule de cristal je ne peut t'en dire plus
    A mediter
    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
    Membre averti
    Homme Profil pro
    Étudiant
    Inscrit en
    Juillet 2016
    Messages
    26
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juillet 2016
    Messages : 26
    Par défaut
    Bonsoir Patrick,

    En effet j'ai pas mal de Select et d'activate pour naviguer entre les différentes feuilles du classeur et pour tester la valeur des cellules.
    Je n'ai pas vu d'exemples dans mon auto-apprentissage du VBA de tableau(Variant), saurai-tu me diriger vers un fichier exemple de ce type de programmation.

    Quant aux boucles elles sont principalement en While avec des Find. Le principe est d'identifier une valeur dans un feuille et de trouver la même valeur dans une autre feuille. Du coup pour tester la valeur je suis en activate et Select. Si elle est trouvée alors j'extrais les données. Je traite des feuilles à 37000, 18000 & 10000 lignes.

    Je vais y méditer et j'y médite

  4. #4
    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
    Quant aux boucles elles sont principalement en While avec des Find. Le principe est d'identifier une valeur dans un feuille et de trouver la même valeur dans une autre feuille. Du coup pour tester la valeur je suis en activate et Select. Si elle est trouvée alors j'extrais les données. Je traite des feuilles à 37000, 18000 & 10000 lignes.
    c'est bien ce que je pensait
    pour faire tout cela ca n'est pas nécessaire
    on peut très bien se passer des select et activâtes pour cherché une valeur d'une feuille dans une autre

    mais vu ta réponse je crois que tu es tellement parti dans le mauvais sens que pour t'aider il me faudrait un fichier model

    exemple j'ai "toto" en C1 dans la feuille "Feuil1"

    je la cherche dans la feuille "feuil2" dans la plage A1:F10
    on procède comme suit
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    dim valeur as string 
    valeur =sheets("feuil1").range("C1").value
    with sheets("Feuil2")
    set cellule=.range("A1:F10").find(valeur,lookin:=xlvalues)
    end with 
    if not cellule is nothing then msgbox cellule.address
    et il y en a bien d'autre mais je crois que tu a sauter des étapes avant de te le lancer dans la conception d'une application
    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

  5. #5
    Membre averti
    Homme Profil pro
    Étudiant
    Inscrit en
    Juillet 2016
    Messages
    26
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juillet 2016
    Messages : 26
    Par défaut
    Je n'aurai le fichier à modifier pour t'indiquer les méthodes que j'ai employé que demain matin. En revanche, d'après le bout de code que tu as mis dans ton dernier message, une grande partie est dans la même logique que ce que j'utilise.
    Je vais ferai un fichier demain pour te montrer les lignes de code exemple mis en place pour répondre à mon besoin.

    Si je m'exprime mal j'en suis désolé et je comprends tout à fait que sans support c'est quasi impossible. Je reste quand même perplexe qu'indépendamment ça tourne de manière acceptable alors que mis bout à bout c'est très long

  6. #6
    Expert confirmé
    Avatar de kiki29
    Homme Profil pro
    ex Observeur CGG / Analyste prog.
    Inscrit en
    Juin 2006
    Messages
    6 132
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Finistère (Bretagne)

    Informations professionnelles :
    Activité : ex Observeur CGG / Analyste prog.

    Informations forums :
    Inscription : Juin 2006
    Messages : 6 132
    Par défaut
    Salut, malheureusement si c'est mal conçu au départ, on gagne souvent à tout virer et recommencer à partir de zéro. Car là cela restera du bricolage du genre emplâtre sur une jambe de bois. Mais pour cela il faut avoir acquis de bonnes pratiques et les appliquer. Difficile avec un langage aussi permissif que le VBA.

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

Discussions similaires

  1. [WD19] Exécuter plusieurs procédures en même temps
    Par lololebricoleur dans le forum WinDev
    Réponses: 2
    Dernier message: 30/01/2014, 12h39
  2. Une seule instance de l'appli et exécuter une procédure
    Par Manic dans le forum API, COM et SDKs
    Réponses: 11
    Dernier message: 08/03/2006, 12h52
  3. [SQL-Server] Exécution de procédures stockées
    Par sylvkin dans le forum PHP & Base de données
    Réponses: 2
    Dernier message: 26/09/2005, 13h00
  4. [Oracle] Exécuter une procédure PL/SQL en PHP?
    Par Cerberes dans le forum PHP & Base de données
    Réponses: 11
    Dernier message: 25/02/2005, 15h11
  5. DBLink et exécution de procédure stockée
    Par DBS dans le forum Oracle
    Réponses: 8
    Dernier message: 01/02/2005, 14h50

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