|
Publicité ' | |||||||||||||||||||||||
|
|
#1 | ||
|
Membre Expert
![]() Sylvain DevidalChef de projets Générix Inscription : février 2010 Messages : 1 517 ![]() |
Bonjour,
Pour ceux qui ont besoin de travailler avec une numérotation "alphabétique", voici une classe statique ainsi que deux méthodes d'extension afin de faire la conversion int => colonne Excel et string => indice de colonne Excel Comme les noms des méthodes d'extension le montrent, ce sera certainement le plus utile à ceux qui travaillent avec Excel, mais peut-être trouverez-vous d'autres champs d'application. J'étais initialement parti sur un changement en base 26, mais je me suis heurté à un problème de poids : dans la numérotation A, B, C... Z, AA, AB, ... ZZ, AAA... il n'y a pas de notion de "zéro". Ce n'est donc pas une base à proprement parler. Et il se produit un décallage à chaque fois qu'on devrait rencontrer un chiffre zéro (avant A, entre Z et AA, il devrait y avoir un A0, etc.) Il est certainement possible d'améliorer l'algo en utilisant des fonctions mathématiques, en prenant en compte le décalage, mais je n'ai plus assez de neurones en état de fonctionner pour chercher. L'utilisation d'une classe static pour stocker les valeurs allant de A à ZZZ permet d'éviter de ré-générer la liste, ce qui est déjà une bonne optimisation. Code complet : la première classe, qui m'a servi de test, utilise les éléments des classes suivantes, qui sont celles que vous devez reprendre dans votre code pour l'utiliser. Code :
|
||
|
|
10
|
|
|
#2 | |||
![]() ![]() ![]() ![]() Thomas LevesqueDéveloppeur .NET Inscription : février 2004 Messages : 17 839 ![]() |
Citation:
![]() J'avais déjà essayé de faire la conversion et j'avais réalisé que c'était beaucoup moins évident que ça en avait l'air... Citation:
Quelques remarques sur ton implémentation :
Enfin en tous cas, dans le principe c'est une très bonne idée, même si je ne suis pas entièrement d'accord avec la façon dont tu l'as réalisé
__________________
Pas de questions techniques par MP ! Le forum est là pour ça... |
|||
|
00
|
|
|
#3 | ||
![]() ![]() ![]() ![]() Thomas LevesqueDéveloppeur .NET Inscription : février 2004 Messages : 17 839 ![]() |
Il me semblait bien que j'avais déjà réfléchi au problème... J'ai retrouvé l'implémentation que j'avais faite :
Code :
__________________
Pas de questions techniques par MP ! Le forum est là pour ça... |
||
|
00
|
|
|
#4 | ||
|
Membre Expert
![]() Sylvain DevidalChef de projets Générix Inscription : février 2010 Messages : 1 517 ![]() |
Bonjour Tomlev.
Je pose "as this" la nouvelle implémentation. Je découvre tes commentaires en même temps, et vu que j'ai un truc urgent à faire, j'adapterai après. J'ai l'impression qu'une de mes méthodes n'est qu'une écriture différente de la tienne. Quant à l'autre, je pense que la mienne est beaucoup plus simple En revanche, je n'ai implémenté aucun mécanisme de sécurité et donc si on passe n'importe quoi comme chaîne en paramètre, ça fait n'importe quoi... Code :
|
||
|
|
00
|
|
|
#5 | ||
|
Membre Expert
![]() Sylvain DevidalChef de projets Générix Inscription : février 2010 Messages : 1 517 ![]() |
Voici la classe réécrite selon tes remarques.
J'en ai profité pour mettre des commentaires et gérer un peu mieux les erreurs. A noter que la gestion des erreurs à divisé le temps d'exécution par 10 sur ma machine Code :
|
||
|
|
00
|
|
|
#6 | ||
|
Membre Expert
![]() ![]() Mickaël Développeur .NET Inscription : octobre 2008 Messages : 490 ![]() |
Bonjour,
2-3 bricoles qui pourraient aider Code :
Cordialement !
__________________
Nous sommes tous plus ou moins geek : ce qui est inutile nous est parfaitement indispensable ( © Celira )À quelle heure dormez-vous ? Censément, quelqu'un de sensé est censé s'exprimer sensément. |
||
|
|
00
|
|
|
#7 |
|
Membre Expert
![]() Sylvain DevidalChef de projets Générix Inscription : février 2010 Messages : 1 517 ![]() |
Les this, en fait je les avais viré, car car tomlev trouvait inutile de faire ça en extension de string/int
Sinon, en effet, j'ai été très surpris par les faibles performances de la regexp... Quant au cas où ret == 0 c'est un peu le "UnexpectedException" avec un message "bon, ben là je prends ma retraite car je comprends rien" |
|
|
00
|
Copyright © 2000-2013 - www.developpez.com