Passer d'une notation Excel en lettre à une notation en chiffre
4 réponses
Roumégou Eric
Bonjour,
j'ai un peu honte mais j'ai passé une ou 2 h hier à cherché un algo qui
me donnerait le n° de colonne quand je lui donnerais sa notation à la
façon par défaut d'excel (A, B, C .. AA,AB, CH ).
C'est pour un import excel, je veux que les utilisateurs localisent
leur colonne en parlant colonne A,B,C etc ... et que le programme
transcrive cela pour les fn XLSDonnées.
Le seul code que j'ai pu pondre est celui là, qui marcherait jusqu'à ZZ
(c'est suffisant, y'a des tarés avec excel mais qd même !) mais je ne
le trouve vraiment pas très clean.
PROCEDURE XLS_NotationLetversNum(pLettre="")
i,w1 est un entier
codasc est un entier=0
taillech est un entier=Taille(pLettre)
SELON taillech
CAS 1 : codasc=Asc(Majuscule(pLettre)) -64
CAS 2 :
codasc=(Asc(Majuscule(Milieu(pLettre,1,1)))-64)*26+Asc(Majuscule(Milieu(pLettre,2,1)))-64
AUTRE CAS
codasc=0
FIN
RENVOYER codasc
Avez vous qq chose de plus beau à me proposer ?
--
Eric Roumégou
Webmaster des wtabletes
http://cerbermail.com/?qE7t4Qvilo
(cliquez sur le lien ci-dessus pour me contacter en privé)
bonjour j'utilise aussi cette classe mais elle a le gros défaut d'utiliser OLE et donc de devoir avoir excel installé. Pour un serveur web, c'est embêtant.
C'est pour cela que j'utilise les fn xls du wlangage ou la classe de D.daussy qui génère du xls 2.1.
-- Eric Roumégou Webmaster des wtabletes http://cerbermail.com/?qE7t4Qvilo (cliquez sur le lien ci-dessus pour me contacter en privé)
Albert avait soumis l'idée :
Bonjour,
Pourquoi ne pas utiliser la classe CExcel qui est très conviviale
et qui utilise cette notation
Exemple de code
// [< Instanciation de la classe Excel >]
oXls est un objet CExcel
// [< Ouverture du classeur / Sélectionner la feuille >]
oXls:Ouvrir(sNomXls)
oXls:SelectionnerFeuille(sFeuille)
bonjour
j'utilise aussi cette classe mais elle a le gros défaut d'utiliser OLE
et donc de devoir avoir excel installé. Pour un serveur web, c'est
embêtant.
C'est pour cela que j'utilise les fn xls du wlangage ou la classe de
D.daussy qui génère du xls 2.1.
--
Eric Roumégou
Webmaster des wtabletes
http://cerbermail.com/?qE7t4Qvilo
(cliquez sur le lien ci-dessus pour me contacter en privé)
bonjour j'utilise aussi cette classe mais elle a le gros défaut d'utiliser OLE et donc de devoir avoir excel installé. Pour un serveur web, c'est embêtant.
C'est pour cela que j'utilise les fn xls du wlangage ou la classe de D.daussy qui génère du xls 2.1.
-- Eric Roumégou Webmaster des wtabletes http://cerbermail.com/?qE7t4Qvilo (cliquez sur le lien ci-dessus pour me contacter en privé)
Olivier P.
Hello Eric,
en fait, c'est juste une petite formule. Je me suis amusé à pondre le code :
----------- PROCEDURE NotationExcelVersChiffre(LOCAL sNomColonne est une chaîne)
sNomColonne = Majuscule(sNomColonne) nNoColonne est un entier
POUR i = 1 _A_ Taille(sNomColonne) nNoColonne = nNoColonne * 26 nNoColonne += Asc(sNomColonne[[i]]) - 64 FIN
RENVOYER nNoColonne -----------
Attention, Excel ne supporte que 256 colonnes (c'est déjà pas mal) jusqu'à la version 2003 (en 2007 c'est plus..). Ce code ne marcherait que jusqu'à ZZ.
A bientôt,
Oliv
Hello Eric,
en fait, c'est juste une petite formule. Je me suis amusé à pondre le code :
-----------
PROCEDURE NotationExcelVersChiffre(LOCAL sNomColonne est une chaîne)
sNomColonne = Majuscule(sNomColonne)
nNoColonne est un entier
POUR i = 1 _A_ Taille(sNomColonne)
nNoColonne = nNoColonne * 26
nNoColonne += Asc(sNomColonne[[i]]) - 64
FIN
RENVOYER nNoColonne
-----------
Attention, Excel ne supporte que 256 colonnes (c'est déjà pas mal) jusqu'à la version 2003 (en 2007 c'est plus..).
Ce code ne marcherait que jusqu'à ZZ.
en fait, c'est juste une petite formule. Je me suis amusé à pondre le code :
----------- PROCEDURE NotationExcelVersChiffre(LOCAL sNomColonne est une chaîne)
sNomColonne = Majuscule(sNomColonne) nNoColonne est un entier
POUR i = 1 _A_ Taille(sNomColonne) nNoColonne = nNoColonne * 26 nNoColonne += Asc(sNomColonne[[i]]) - 64 FIN
RENVOYER nNoColonne -----------
Attention, Excel ne supporte que 256 colonnes (c'est déjà pas mal) jusqu'à la version 2003 (en 2007 c'est plus..). Ce code ne marcherait que jusqu'à ZZ.
A bientôt,
Oliv
Roumégou Eric
Après mûre réflexion, Olivier P. a écrit :
Hello Eric,
en fait, c'est juste une petite formule. Je me suis amusé à pondre le code :
----------- PROCEDURE NotationExcelVersChiffre(LOCAL sNomColonne est une chaîne)
sNomColonne = Majuscule(sNomColonne) nNoColonne est un entier
POUR i = 1 _A_ Taille(sNomColonne) nNoColonne = nNoColonne * 26 nNoColonne += Asc(sNomColonne[[i]]) - 64 FIN
RENVOYER nNoColonne -----------
Attention, Excel ne supporte que 256 colonnes (c'est déjà pas mal) jusqu'à la version 2003 (en 2007 c'est plus..). Ce code ne marcherait que jusqu'à ZZ.
A bientôt,
Oliv
Bonjour, Merci de ta réponse. je crois que j'avais fait le meme code que toi sur mes premiers essais mais il ne fonctionnait pas. je vais le retester dès que j'ai un moment
-- Eric Roumégou Webmaster des wtabletes http://cerbermail.com/?qE7t4Qvilo (cliquez sur le lien ci-dessus pour me contacter en privé)
Après mûre réflexion, Olivier P. a écrit :
Hello Eric,
en fait, c'est juste une petite formule. Je me suis amusé à pondre le code :
-----------
PROCEDURE NotationExcelVersChiffre(LOCAL sNomColonne est une chaîne)
sNomColonne = Majuscule(sNomColonne)
nNoColonne est un entier
POUR i = 1 _A_ Taille(sNomColonne)
nNoColonne = nNoColonne * 26
nNoColonne += Asc(sNomColonne[[i]]) - 64
FIN
RENVOYER nNoColonne
-----------
Attention, Excel ne supporte que 256 colonnes (c'est déjà pas mal) jusqu'à la
version 2003 (en 2007 c'est plus..). Ce code ne marcherait que jusqu'à ZZ.
A bientôt,
Oliv
Bonjour,
Merci de ta réponse.
je crois que j'avais fait le meme code que toi sur mes premiers essais
mais il ne fonctionnait pas.
je vais le retester dès que j'ai un moment
--
Eric Roumégou
Webmaster des wtabletes
http://cerbermail.com/?qE7t4Qvilo
(cliquez sur le lien ci-dessus pour me contacter en privé)
en fait, c'est juste une petite formule. Je me suis amusé à pondre le code :
----------- PROCEDURE NotationExcelVersChiffre(LOCAL sNomColonne est une chaîne)
sNomColonne = Majuscule(sNomColonne) nNoColonne est un entier
POUR i = 1 _A_ Taille(sNomColonne) nNoColonne = nNoColonne * 26 nNoColonne += Asc(sNomColonne[[i]]) - 64 FIN
RENVOYER nNoColonne -----------
Attention, Excel ne supporte que 256 colonnes (c'est déjà pas mal) jusqu'à la version 2003 (en 2007 c'est plus..). Ce code ne marcherait que jusqu'à ZZ.
A bientôt,
Oliv
Bonjour, Merci de ta réponse. je crois que j'avais fait le meme code que toi sur mes premiers essais mais il ne fonctionnait pas. je vais le retester dès que j'ai un moment
-- Eric Roumégou Webmaster des wtabletes http://cerbermail.com/?qE7t4Qvilo (cliquez sur le lien ci-dessus pour me contacter en privé)