|
Publicité ' | |||||||||||||||||||||||
|
|
#1 | ||
![]() ![]() ![]() |
Hello tous !
Dites, j'ai cherché et finallement réussi à trouver une formule dont je suis assez fier ! Sur Excel, ca donne : Code :
Qui se lance dans la réalisation de la fonction en VBA ? La meilleure fonction sera celle qui donnera le meilleur temps en VBA pour 100 000 itérations !
__________________
1formaxion, une formation de qualité, des formateurs compétents Mes tutoriels et vidéos : Tableaux croisés dynamiques, Access les Bases, et les autres ! |
||
|
00
|
|
|
#2 | ||||
![]() ![]() ![]() |
en voici une solution :
Code :
C'était juste pour lancer le challenge ! Qui fait mieux ! Allez ... j'attends les candidats voici la fonction de test : Code :
Terminé : 27 - 91 - 288 (??? va falloir que je refasse les tests moi ... ???)
__________________
1formaxion, une formation de qualité, des formateurs compétents Mes tutoriels et vidéos : Tableaux croisés dynamiques, Access les Bases, et les autres ! |
||||
|
00
|
|
|
#3 | ||
![]() ![]() michel TanguyInscription : août 2005 Messages : 3 317 ![]() |
bonjour cher Maxence
Par formule, tu peux aussi tester Code :
=NB.JOURS.OUVRES(DATE(0;1;B34+1);DATE(0;1;B34+1)+A35-1) Ce qui donnerait en VBA (mais beaucoup moins rapide que ta solution .. ;o) Code :
bonne soirée michel |
||
|
|
00
|
|
|
#4 |
![]() ![]() ![]() |
Ouaip !
Je connaissais cette fonction... Tu fais bien de la mettre en avant. mais je voulais comprendre la logique de création pour la refaire sans utiliser la bibliothèque Excel (raison pour laquelle j'ai fait ce post sur Général VBA) ce qui serait supercool, c'est qu'il y ait une solution encore plus courte et plus rapide que la mienne. Voire, carrément, que ma logique puisse être carrément refondue et améliorée. Ce qui amènerait à un algo complètement différent, et donc à un code complètement différent. Voilà où se situe ce micro-challenge Merci pour ta participation, dans tous les cas !
__________________
1formaxion, une formation de qualité, des formateurs compétents Mes tutoriels et vidéos : Tableaux croisés dynamiques, Access les Bases, et les autres ! |
|
00
|
|
|
#5 | |
![]() ![]() ![]() Christophe Warin Inscription : octobre 2004 Messages : 8 635 ![]() |
Hello,
On eput gagner dans les cas particuliers sur cette ligne : Code :
bytNbJoursAAjouter = IIf(bytNbJoursTotal Mod 7 = 6, 5, bytNbJoursTotal Mod 7) Mod 6 Citation:
A part ça, je ne vois pas comment améliorer, si ce n'est eliminer la variable bytNbJoursOuvrables, mais pas vraiment très utile. Pour une amélioration de l'algo, je ne vois pas comment avoir autre chose |
|
|
|
00
|
|
|
#6 | ||||||
|
Membre Expert
![]() ![]() Inscription : avril 2006 Messages : 1 318 ![]() |
bonjour,
une alternative : Code :
* Qualité --------- Code :
-------------- Code :
|
||||||
|
00
|
|
|
#7 |
![]() ![]() ![]() |
Bravo Philben !!!!!!
Tu es environ 2.8 fois plus rapide avec cette solution qu'avec la solution N°1 ! Tu es environ 2.6 fois plus rapide avec cette solution qu'avec la solution N° modifiée par Tof ! Chapeau ! Toutes mes félcitations ! un challengeur pour Philben qui, pour le moment remporte la palme ?
__________________
1formaxion, une formation de qualité, des formateurs compétents Mes tutoriels et vidéos : Tableaux croisés dynamiques, Access les Bases, et les autres ! |
|
00
|
|
|
#8 | ||
|
Membre Expert
![]() ![]() Inscription : avril 2006 Messages : 1 318 ![]() |
bonjour Maxence,
merci, mais comme il n'y a que 28 possibilités différentes, je me demande si une <brute force attack> via un select case ne sera pas plus rapide... je modifie en conséquence le test qualité qui évalue que les 28 solutions : Code :
Philippe |
||
|
00
|
|
|
#9 |
![]() ![]() ![]() Christophe Warin Inscription : octobre 2004 Messages : 8 635 ![]() |
véto.
La solution de philben si je ne m'abuse tiens compte de mois complets. (mais c'est peut être le but). Moi, je voyais plutot l'intéret d'avoir le nombre de jours ouvrables à partir du début de mois (voire d'une date) pendant une période. Car si on se borne à des mois complets, comme philben, je pense que le select case peut être plus rapide. |
|
|
00
|
|
|
#10 | |
|
Membre Expert
![]() ![]() Inscription : avril 2006 Messages : 1 318 ![]() |
bonjour,
Oh le coup bas de Tofalu ! ![]() les règles étaient claires, mais voici le libellé exacte pour combler les trous de mémoire... ![]() Citation:
A+ Philippe |
|
|
00
|
|
|
#11 | ||
![]() ![]() ![]() Christophe Warin Inscription : octobre 2004 Messages : 8 635 ![]() |
Citation:
Citation:
. Sinon, forcément le grând maitre maxence ne se serait servit que de la date comme indiqué plus haut... ![]() Sur ce, je file loin, très loin, en courant ... et sans me retourner
|
||
|
|
00
|
|
|
#12 | ||||||
|
Membre Expert
![]() ![]() Inscription : avril 2006 Messages : 1 318 ![]() |
Bonjour Monsieur Tofalu,
J'abats définitivement mes cartes : Code :
---------------- Code :
--------------------- Code :
![]() A+ Philippe |
||||||
|
00
|
Copyright © 2000-2012 - www.developpez.com