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 :

Lenteur d'execution userform [XL-2007]


Sujet :

Macros et VBA Excel

  1. #1
    Futur Membre du Club
    Homme Profil pro
    Technicien maintenance
    Inscrit en
    Février 2015
    Messages
    20
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 49
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Technicien maintenance

    Informations forums :
    Inscription : Février 2015
    Messages : 20
    Points : 9
    Points
    9
    Par défaut Lenteur d'execution userform
    Bonjour à tous,
    Depuis que j'ai réussi à insérrer un code pour envoyer la somme des cases jaunes de la colonne C dans la cases G1.
    J'ai un gros de problème de lenteur sur mon userform.
    Impossible de saisir en date une seule fois
    Impossible de saisir un montant en une seule fois
    Bref ça rame.
    Que faut-il faire pour retrouver une vitesse d'execution normale.
    Merci d'avance
    Fichiers attachés Fichiers attachés

  2. #2
    Rédacteur/Modérateur


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

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

    Informations forums :
    Inscription : Novembre 2003
    Messages : 19 128
    Points : 55 940
    Points
    55 940
    Billets dans le blog
    131
    Par défaut
    Salut

    Citation Envoyé par tofies33 Voir le message
    [...]
    Depuis que j'ai réussi à insérrer un code[...]
    J'ai un gros de problème de lenteur sur mon userform[...]
    On pourrait donc raisonnablement supposer que c'est le code inséré qui pose problème... Et si tu nous le montrais, ce code?

  3. #3
    Futur Membre du Club
    Homme Profil pro
    Technicien maintenance
    Inscrit en
    Février 2015
    Messages
    20
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 49
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Technicien maintenance

    Informations forums :
    Inscription : Février 2015
    Messages : 20
    Points : 9
    Points
    9
    Par défaut
    Bonjour ,
    le code est :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    Function SommeCouleurFond(champ As Range, couleurFond)
       Application.Volatile
       Dim c, temp
       temp = 0
       For Each c In champ
         If c.Interior.ColorIndex = couleurFond Then
           If IsNumeric(c.Value) Then temp = temp + c.Value
         End If
       Next c
       SommeCouleurFond = temp
    End Function
    Que j'ai mis dans un module
    Fichiers attachés Fichiers attachés

  4. #4
    Rédacteur/Modérateur


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

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

    Informations forums :
    Inscription : Novembre 2003
    Messages : 19 128
    Points : 55 940
    Points
    55 940
    Billets dans le blog
    131
    Par défaut
    A priori, rien de spécial dans ce code... Quelle est l'étendue de Champ? Je pense que le problème pourrait venir de là. Si Champ fait référence à des colonnes entières, c'est logique que cela pose problème.

  5. #5
    Futur Membre du Club
    Homme Profil pro
    Technicien maintenance
    Inscrit en
    Février 2015
    Messages
    20
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 49
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Technicien maintenance

    Informations forums :
    Inscription : Février 2015
    Messages : 20
    Points : 9
    Points
    9
    Par défaut
    Normalement je dois uniquement faire référence à la colonne C.
    Mais étant débutant tout est possible.
    Que dois-je modifier alors pour faire uniquement référence à la colonne C ?
    Merci d'avance

  6. #6
    Rédacteur/Modérateur


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

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

    Informations forums :
    Inscription : Novembre 2003
    Messages : 19 128
    Points : 55 940
    Points
    55 940
    Billets dans le blog
    131
    Par défaut
    C'est ce que je pensais... En 2007, tu boucles sur 1.048.576 lignes... Je viens de tester et c'est effectivement très long...

    Tu aurais intérêt à mieux circonscrire ta plage (peut-être en utilisant les tableaux, comme le précise SilkyRoad dans son tuto)...

    Je viens de tester sur une colonne et je mets 22 secondes avec une bécane de la mort qui tue...

  7. #7
    Futur Membre du Club
    Homme Profil pro
    Technicien maintenance
    Inscrit en
    Février 2015
    Messages
    20
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 49
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Technicien maintenance

    Informations forums :
    Inscription : Février 2015
    Messages : 20
    Points : 9
    Points
    9
    Par défaut
    Excuse pour mes questions simpliste.
    Mais comment puis-je lui demander de le faire sur A1:A500.
    Merci

  8. #8
    Rédacteur/Modérateur


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

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

    Informations forums :
    Inscription : Novembre 2003
    Messages : 19 128
    Points : 55 940
    Points
    55 940
    Billets dans le blog
    131
    Par défaut
    Il faut voir ce qui appelle ta macro.

    Soit tu l'appelles depuis Excel (fonction dans une cellule) et donc, tu peux déterminer cette plage.
    Soit tu l'appelles par macro (une autre macro appelle cette fonction), et donc, c'est à cette macro de passer un objet Range limité au strict nécessaire...

    Dans lequel de ces contextes te situes-tu?

  9. #9
    Futur Membre du Club
    Homme Profil pro
    Technicien maintenance
    Inscrit en
    Février 2015
    Messages
    20
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 49
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Technicien maintenance

    Informations forums :
    Inscription : Février 2015
    Messages : 20
    Points : 9
    Points
    9
    Par défaut
    Fonction dans une cellule.
    Enfin je crois

    Désolé,
    mais je découvre vraiment VBA et aussi un peu Excel.
    Je viens de mettre:
    =sommeCouleurFond(C1:C500;6) au lieu de =sommeCouleurFond(C:C;6) dans G1.
    Magie même avec un PC de m... de mon Taf cela fonctionne parfaitement.
    Merci encore.
    Bonne fin de journée

  10. #10
    Rédacteur/Modérateur


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

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

    Informations forums :
    Inscription : Novembre 2003
    Messages : 19 128
    Points : 55 940
    Points
    55 940
    Billets dans le blog
    131
    Par défaut
    Ta macro travaillant en boucle, en limitant à 500 lignes par rapport à la colonne (1048576 lignes), ta macro est potentiellement 22097 fois plus rapide... Ca change la vie...

  11. #11
    Futur Membre du Club
    Homme Profil pro
    Technicien maintenance
    Inscrit en
    Février 2015
    Messages
    20
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 49
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Technicien maintenance

    Informations forums :
    Inscription : Février 2015
    Messages : 20
    Points : 9
    Points
    9
    Par défaut
    De retour à la maison surprise !
    ça tourne ...
    Sauf que cette somme de cellule jaune (en G1) ne se remet en route qu'avec un appui sur F9 .
    Quel est ce mystère ?
    C'était trop beau pour durer !!

  12. #12
    Rédacteur/Modérateur


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

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

    Informations forums :
    Inscription : Novembre 2003
    Messages : 19 128
    Points : 55 940
    Points
    55 940
    Billets dans le blog
    131
    Par défaut
    C'est normal... La modification d'une couleur n'induit pas un recalcul... Si tu modifies la valeur d'une cellule antécédente (qui induit donc un calcul) , le calcul sera forcé (avec ou sans application.volatile), mais si tu modifies la couleur d'une cellule de la plage, tu dois rafraîchir avec F9 (après avoir pris soin d'avoir mis application.volatile) car la modification d'une couleur n'induit pas de calcul.

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

Discussions similaires

  1. lenteur d'execution sur bas dorsale et frontale
    Par laurent.w dans le forum Access
    Réponses: 7
    Dernier message: 27/06/2007, 10h56
  2. lenteur d'execution d'une requette
    Par botambaoaks dans le forum Requêtes
    Réponses: 2
    Dernier message: 13/04/2007, 10h56
  3. [SQL-SERVER] Lenteur d'execution
    Par olbi dans le forum MS SQL Server
    Réponses: 2
    Dernier message: 16/02/2007, 18h45
  4. [debutant] lenteur à l'execution
    Par absolut75 dans le forum Langage
    Réponses: 3
    Dernier message: 08/12/2006, 22h14
  5. Lenteur d'execution de Jbuilder 6
    Par Tsimplice dans le forum JBuilder
    Réponses: 6
    Dernier message: 18/12/2002, 15h41

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