Ceci est une page optimisée pour les mobiles. Cliquez sur ce texte pour afficher la vraie page.

Différence de temps d'exécution entre Cells(ligne,Col) et Range("Col et Ligne")

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

néné06

XLDnaute Accro
Bonjour le Forum,

Je me suis livré à un petit test d'exécution entre Cells(Ligne,Colonne) et Range("Colonne et ligne).
De mon côté, j'ai toujours pris l'habitude d'utiliser Cells au lieu de Range et il me semble que j'ai fais le bon choix !
Regardez, testez,et envoyez vos remarques.

Merci et bonne soirée.

René
 

Pièces jointes

Re : Différence de temps d'exécution entre Cells(ligne,Col) et Range("Col et Ligne")

Bonjour René

Merci pour le test. J'utilise beaucoup cells mais pour un range de cells, c'est assez pratique.

Mais pourquoi autant de différence en le faisant plusieurs fois de suite?
 
Re : Différence de temps d'exécution entre Cells(ligne,Col) et Range("Col et Ligne")

Bonsoir Michel,

Je pense que la différence provient de la conception même du VBA , le langage machine utilisé doit plus rapidement exécuter les nombres plutôt que les lettres qu'il doit retraduire en coordonnées ???
C'est mon idée, mais sans garanties.

A+

René
 
Dernière édition:
Re : Différence de temps d'exécution entre Cells(ligne,Col) et Range("Col et Ligne")

Re René

En effet le range doit entraîner un temps de calcul plus grand.

Sinon, quelque chose de plus gênant sur les MEFC. Je n'aime pas trop les Mise en forme conditionnelles car je trouve que souvent cela ralenti le fichier Excel. Et bien figure toi que je viens d'en avoir la preuve. Avec 5000 lignes de 11 colonnes avec 3 formules sur les 3 dernières colonnes. ET bien le filtre et la MEFC active sur 2 colonnes entraîne un ralentissement plus que pénible 🙁. Du coup, j'ai du transposer le MEFC en VBA.

Donc, il faut toujours relativiser ce qu'un code nous apprend, mais plus le tester sur une véritable application et en tirer les conséquences 🙂.
 
Re : Différence de temps d'exécution entre Cells(ligne,Col) et Range("Col et Ligne")

Bonjour

J'avais soulevé cette question du range il y a longtemps https://www.excel-downloads.com/threads/vba-references-range-entre.101074/

Les écarts lors des tests n'étaient pas alors très significatifs mais peut-être que cela dépend des cas ou des versions.

Edit : question subsidiaire à MJ13. Ta plage est-elle sous forme de tableau ? Il pourrait être intéressant de vérifier si la MFC est optimisée dans les tableaux...
 
Dernière édition:
Re : Différence de temps d'exécution entre Cells(ligne,Col) et Range("Col et Ligne")

Bonsoir Chris,

J'ai essayé aussi en remplaçant a=Cells(x,y) par Cells(x,y).select et il est vrai que le gain n'est plus que de 15% ??
Comme tu le dis plus haut, cela dépend des cas.

A+

René
 
Re : Différence de temps d'exécution entre Cells(ligne,Col) et Range("Col et Ligne")

Re Chris,

Oui, les select ralentissent, mais dans mon test, j'avais donc placé autant de select dans chaque routine et je regardais la différence de temps entre cells et Range.
Voici le fichier !!

A+

René
 

Pièces jointes

Re : Différence de temps d'exécution entre Cells(ligne,Col) et Range("Col et Ligne")

Bonjour à tous,

J'ai débuté la programmation en m'aidant du livre de poche VBA (micro application) pour excel 2000 à 2003 !

Dans ce livre la programmation pour les cellules étaient ainsi faites :

exemple :
Code:
Activecell.Value=vOperationNum
ActiveCell.Offset(0,1).Value= CDate(FrmEncoder.TxtDate)
ActiveCell.Offset(0,2).Value=FrmEncoder.CmbListeTypes.Value
etc ....

Cells était inconnu dans cet exemple !

Compte tenu que les bécanes étaient lamentablement lentes, les programmeurs devaient tenir compte des performances de celles-ci ( tout un art )!

Je me souviens d'avoir eu à programmer un fichier avec Excel 5 ( Année 1995 ) sur une bécane de l'époque, je peux vous dire que l'on avait le temps de prendre un pot et de fumer une cigarette pendant que les calculs se faisaient !

Alors oui, la programmation a changer et a ainsi permis à la majoritée d'entre nous de fatiguer le microprocesseur un peu plus avec des programmes un peu lourd ( j'en fait parti, mais on a du mal à se corriger ) !

Bravo pour ce comparatif dont j'ai opté pour le cells, qui permet sur une saisie importante de gagner de précieuses minutes !

Bonne soirée à tous !
 
Re : Différence de temps d'exécution entre Cells(ligne,Col) et Range("Col et Ligne")

Re,

@ JBARBE,

Pour ma part, je parle dans ce post du langage machine car , lorsque j'avais commencé la programmation sur Apple II en 1982, j'ai dû passer sur l'assembleur car avec 1 MHZ de fréquence du processeur, ce n'était pas une cigarette, mais plutôt une cartouche que je devais griller.
J'ai, par la suite stoppé la programmation, pendant environ 10 années , mais le virus de la programmation s'est de nouveau réactivé.
Mais on recherche toujours à accélérer les programmes.

A+

René
 
Re : Différence de temps d'exécution entre Cells(ligne,Col) et Range("Col et Ligne")

Bonjour à tous

Mais on recherche toujours à accélérer les programmes.

Voici un fichier à tester sur le même principe que René avec 1 tableau qui à mon grand étonnement est très rapide ( mais à mon grand regret, je suis nul en tableau 😱).

PS: Pour Chris.j'ai testé la MEFC en transformant ma plage de 5000 lignes en tableau. Mais ce n'est vraiment pas concluant. De plus j'ai du ne pas sauvegardé le fichier car je ne pouvais plus filtrer avec le tableau. J'ai l'impression que je n'aime pas trop ces histoires de tableaux, je devrais aller plus souvent dans les musées et pourquoi c'est féminin musée 😕.
 

Pièces jointes

Dernière édition:
Re : Différence de temps d'exécution entre Cells(ligne,Col) et Range("Col et Ligne")

Bonjour

Merci Michel.

Sur cet exemple on a effectivement près de 30% d'écart mais comme dit plus haut cela dépend sans doute de ce que fait l'application.

Pour ma part j'utilise l'une ou l'autre des syntaxes dans mon code, selon les cas une instruction peut se baser sur un range("..."), pour un question de lisibilité ou de maintenance, ou sur cells ou range(cells...) sachant que j'utilise de moins en moins de références directes mais plus souvent des offset ou des références à des plages nommées.

Pour les tableaux, très mauvaise traduction de TABLE😡, Excel activant le filtre par défaut je n'ai compris ta remarque.
Ce qui m'intéresse dans les tableaux c'est qu'Excel oublie un peu la logique topologique des tableurs pour se rapprocher de celle des BD : ce qui se confirme dans 2013 où on peut établir des relations entre les tableaux.
Relations qui, pour l'instant n'ont d'intérêt, que dans les TCD...

Quand au musée de la BD, j'ai trouvé le Musée de la BD & des images mais pas le Musée de la base de données...
 
- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD

Discussions similaires

Réponses
7
Affichages
987
Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…