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 de calcul pour pointer sur une cellule [Toutes versions]


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
    Inscrit en
    Mars 2008
    Messages
    203
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Mars 2008
    Messages : 203
    Par défaut Temps de calcul pour pointer sur une cellule
    Bonjour à tous les experts.

    Sauriez vous me dire l'écriture la plus rapide en temps d'exécution de code ?
    ou
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    .Range("A" & ligne).Offset(0, colonne)
    ou
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    .Range("A1").Offset(ligne-1, colonne)
    Et/ou, existe-t-il un moyen pour calculer le temps d'exécution d'un calcul, afin de déterminer la meilleure écriture possible d'une instruction ?

  2. #2
    Expert éminent
    Avatar de Marc-L
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Avril 2013
    Messages
    9 468
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2013
    Messages : 9 468
    Par défaut


    Bonjour,

    la première vu qu'il n'y a qu'une seule instruction ! N'aura une incidence qu'au sein de boucle énorme.

    Sinon pour calculer un temps d'exécution j'utilise la fonction Timer


    _________________________________________________________________________________________________________
    Je suis Paris, Nice, Bruxelles, Charlie, …

  3. #3
    Expert confirmé
    Homme Profil pro
    aucune
    Inscrit en
    Avril 2016
    Messages
    7 563
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 84
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations professionnelles :
    Activité : aucune

    Informations forums :
    Inscription : Avril 2016
    Messages : 7 563
    Par défaut
    Bonjour
    existe-t-il un moyen pour calculer le temps d'exécution d'un calcul, afin de déterminer la meilleure écriture possible d'une instruction
    Oui : tout simple :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    dim deb as double
    deb = timer
    for i = 1 to un_grand_nombre_de_ fois
    ' ton instruction
    next
    msgbox timer - deb
    Pour le reste, je te laisse faire tes essais et en tirer tes conclusions...

  4. #4
    Invité
    Invité(e)
    Par défaut
    Bonjour,
    La méthode la plus rapide est d'affecter ta plage à une variable tableau en mémoire.

    Ensuite il te suffis de balayer le tableau.

    Maniant la destination du traitement n'est pas anodin, car chaque écriture dans un cellule entraine des événements qui grève le tems de traitement. Si tu inhibe les évènements tu gagnes en rapidité.

    Pareil pur le rafraîchissement de l'écran!

  5. #5
    Membre confirmé
    Homme Profil pro
    Inscrit en
    Mars 2008
    Messages
    203
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Mars 2008
    Messages : 203
    Par défaut
    Merci pour la fonction Timer.
    C'est vrai que je l'avais déjà utilisée pour indiquer le temps de calcul en fin d'exec...
    Calculer le temps ainsi est un peu faux car la boucle "consomme" elle aussi.
    Mais je n'ai pas besoin d'être puriste !

    The winner is :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    .Range("A1").Offset(ligne-1, colonne)
    Et donc Marc, ce n'est pas l'écriture qu'on pourrait croire...

    PS: ma boucle est effectivement conséquente car elle traduit en plusieurs langues tous les mots de plusieurs feuilles par search/replace

  6. #6
    Membre confirmé
    Homme Profil pro
    Inscrit en
    Mars 2008
    Messages
    203
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Mars 2008
    Messages : 203
    Par défaut @rdurupt
    Merci également.
    Je vais essayer aussi de passer par un tableau de variables, c'est pas bête...
    J'ai déjà stoppé le calcul et le rafraichissement page.
    Je n'avais pas pensé aux évènements :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Application.EnableEvents = False

  7. #7
    Membre confirmé
    Homme Profil pro
    Inscrit en
    Mars 2008
    Messages
    203
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Mars 2008
    Messages : 203
    Par défaut Masquage évènements
    Ah mais ça change le résultat !

    Marc a raison, c'est la 1ère écriture qui est plus rapide :
    Je rends à César les honneurs qui lui sont dus !

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

Discussions similaires

  1. Réponses: 3
    Dernier message: 17/02/2014, 11h13
  2. Réponses: 0
    Dernier message: 16/02/2014, 22h30
  3. Pointer sur une cellule et non son contenu
    Par MiXinG dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 30/04/2009, 12h04
  4. Pointer sur une cellule fusionnée en Vba Excel
    Par NEC14 dans le forum Macros et VBA Excel
    Réponses: 56
    Dernier message: 03/02/2009, 11h48
  5. [HTML, CSS, JS] Clic sur une cellule d'un tableau pour changer sa class CSS
    Par Nyphel dans le forum Balisage (X)HTML et validation W3C
    Réponses: 3
    Dernier message: 21/08/2007, 13h18

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