Monsieur Excel
Pour tout savoir faire sur Excel !

14 juin 2014

Temps de calcul des formules

Dans l’article précédent, nous vous avons proposé cinq formules différentes pour calculer le nombre d’absences pour cause de maladie.

Afin de comparer ces cinq solutions, nous avons successivement collé chacune des cinq formules en C2, puis recopié cette formule vers le bas jusqu’en C500001 et mesuré son temps de calcul. Pour éviter des temps de calcul trop longs, nous nous sommes mis en mode de calcul manuel, via les options de calcul de l’onglet « Formules ».

Nous avons ensuite développé la macro suivante, appelée par le bouton macro de la feuille :

Sub Temps_calcul()
Dim Time As Double
    Time = Now()
    Calculate
    Range("K2") = Range("Total").Value
    Range("Temps") = Now() - Time
End Sub

Nous avons reporté les temps de calcul observés en K3 dans le bloc G2:J6. La moyenne des temps par ligne est reprise en colonne L.


Remarque – Les couleurs des cellules en D2:D6 nous permettent d’éviter de mal interpréter les résultats de la colonne C.

Nous constatons que les formules utilisant sommeprod() et les formules matricielles donnent des résultats assez comparables. Cela prouve que sommeprod se comporte comme une formule matricielle et n’est donc pas plus performante.

La seule économie de temps de calcul notable correspond à l’utilisation de la fonction nb.si.ens() !



3 Commentaire(s):

  • Bonjour,
    Juste une remarque : éviter de donner à une variable le nom "Time" qui est celui d'une fonction intégrée de Visual Basic.
    De façon plus générale, personnellement, j'évite de donner à des variables des noms anglo-saxons qui, sauf exception, n'apportent rien à la compréhension du code source et peuvent au contraire prêter à confusion par rapport à des mots-clés de VB.

    By Anonymous cduigou, sur 9:48 AM  

  • Je confirme ce que dit Claude, je travaille dans une société ou l'anglo-saxon est la langue utilisée, et j'ai déjà fait l'erreur : un peu ardu pour trouver le problème...

    By Anonymous Aigle34, sur 8:04 PM  

  • Tout à fait d'accord, les gars. Il aurait été préférable de ne pas appeler ma variable Time !

    A ma décharge, cela marchait très bien et du coup je ne m'en étais pas soucié...

    By Blogger Hervé Thiriez, sur 7:21 AM  

Enregistrer un commentaire

<< Accueil