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 enregistrement saisie [XL-2007]


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Homme Profil pro
    Retraité actif passionné
    Inscrit en
    Janvier 2011
    Messages
    78
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Retraité actif passionné

    Informations forums :
    Inscription : Janvier 2011
    Messages : 78
    Par défaut Temps enregistrement saisie
    Bonjour,

    Je gère une base de données de contacts (donc dans une feuille de calcul sans aucune formule) à l'aide d'un formulaire composé d'un listview affichant les contacts, des zones de saisies, et commande Enregistrer, modifier etc...

    Ma proc d'enregistrement écrit les nouvelles données dans la table, mets à jour le listview et rafraîchit le formulaire avec les dernières données.

    Tout se passe bien sauf dans le cas de saisies en boucle où les temps d'enregistrement évoluent de façon exponentielle, je n'ai pas chronométré mais schématiquement ça donne à peu près ça :
    La première opération d'enregistrement dure moins d'une seconde
    La seconde 2 secondes
    La troisière 4 secondes

    Quelle est l'explication et éventuellement la solution à ce problème ?

    Merci

  2. #2
    Expert confirmé Avatar de jfontaine
    Homme Profil pro
    Contrôleur de Gestion
    Inscrit en
    Juin 2006
    Messages
    4 756
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 52
    Localisation : France, Sarthe (Pays de la Loire)

    Informations professionnelles :
    Activité : Contrôleur de Gestion

    Informations forums :
    Inscription : Juin 2006
    Messages : 4 756
    Par défaut
    Bonjour,

    Ma proc d'enregistrement écrit les nouvelles données dans la table, mets à jour le listview et rafraîchit le formulaire avec les dernières données.
    Peux tu poster le code de la proc

  3. #3
    Membre confirmé
    Homme Profil pro
    Retraité actif passionné
    Inscrit en
    Janvier 2011
    Messages
    78
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Retraité actif passionné

    Informations forums :
    Inscription : Janvier 2011
    Messages : 78
    Par défaut
    Bonjour,

    Je te le mets en pièce jointe
    Merci
    Fichiers attachés Fichiers attachés

  4. #4
    Expert confirmé Avatar de jfontaine
    Homme Profil pro
    Contrôleur de Gestion
    Inscrit en
    Juin 2006
    Messages
    4 756
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 52
    Localisation : France, Sarthe (Pays de la Loire)

    Informations professionnelles :
    Activité : Contrôleur de Gestion

    Informations forums :
    Inscription : Juin 2006
    Messages : 4 756
    Par défaut
    Pour commencer, connais tu la procédure qui pose problème (Enregistrer, MajListingClients, ChargeFiche)
    Si tu ne sais pas, une solution consiste a mesurer les délais en l'appel et le retour de chacune des procédures et de stockées les résultats dans un onglet de mesure
    Comme cela tu sauras le temps d'exécution de chacune d'elles a chaque tour

  5. #5
    Membre confirmé
    Homme Profil pro
    Retraité actif passionné
    Inscrit en
    Janvier 2011
    Messages
    78
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Retraité actif passionné

    Informations forums :
    Inscription : Janvier 2011
    Messages : 78
    Par défaut
    Je vais chercher comment faire pour mesurer les temps, mais comment expliques tu qu'une chaine d'opérations identiques puisse voir son temps de traitement doubler, voire tripler, à chaque répétition ?
    La suppression de ThisWorkbook.Save en fin d'enregistrement a sensiblement diminué la durée mais pas l'exponentialité.
    Merci

  6. #6
    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 heu
    Bonjour
    une idée

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    Sub truc()
    oldnow = Now 'en debut de macro
    For i = 1 To 100000000
    'c 'est une boucle plus ou moins longue
    Next
    newnow = Now ' en fin de macro
     
    MsgBox Now - oldnow 'l' asoustraction du old au new te donne la différence
    End Sub
    au plaisir
    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

  7. #7
    Membre confirmé
    Homme Profil pro
    Retraité actif passionné
    Inscrit en
    Janvier 2011
    Messages
    78
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Retraité actif passionné

    Informations forums :
    Inscription : Janvier 2011
    Messages : 78
    Par défaut
    Jérome,

    C'est la proc ComboFill qui est en cause, les temps des autres proc sont constants.
    ComboFill
    Nb Enr Temps Ecart
    1 0.27
    2 0.48 0.21
    3 0.77 0.29
    4 1.21 0.44
    5 1.80 0.59
    6 2.63 0.83
    7 3.80 1.17
    Donc j'ai revisité le code et je crois avoir trouvé :
    Je ne décharge pas mes listes (ListeType etc...) et je les recharge d'autant d'enregistrements !
    Je n'ai pas pu tester cette solution car je n'ai pas trouvé comment vider ces collections. Si tu as encore quelques instants à me consacrer pour me dire comment faire, merci.
    Daniel

    Bonjour Patrick,

    Merci d'avoir planché pour moi.
    J'ai utilisé ça :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    TimeIn= Timer
    MajListingClients 'ma procédure
    Time = Timer - Timein
    vMessage = "MajListingClients " & Round(sngTotalTime, 2) & " seconds"
    Cordialement
    Daniel

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

Discussions similaires

  1. Réponses: 13
    Dernier message: 21/08/2009, 17h56
  2. Réponses: 2
    Dernier message: 07/12/2008, 15h32
  3. Réponses: 2
    Dernier message: 21/12/2006, 09h26
  4. lecture stdin non bloquante et temps de saisie
    Par TabrisLeFol dans le forum C
    Réponses: 10
    Dernier message: 29/11/2006, 16h46
  5. [debutant]Limiter le temps de saisi
    Par Nasky dans le forum C
    Réponses: 5
    Dernier message: 17/03/2003, 15h47

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