Comment convertir un n° de colonne en une ref excel
1=a,2=b,26=Z,27=AA,28=AB,52=AZ,53=BA ...
Après qq algos qui avaient tous leur limite, je suis allé en trouver un
en vb sur le web que j'ai converti en WD.
PROCEDURE ColXls(pNumCol)
SI pNumCol>702 ALORS
Erreur("Maxi 702 -->ZZ atteint")
RENVOYER "ZZ"
FIN
chretour est une chaîne
c est un entier
c1 est un entier
c=modulo(pNumCol,26)
c1=pNumCol/26
SI c1>0 ALORS
SI c=0 ALORS
SI c1>1 ALORS
chretour=Caract(c1+Asc("A")-2)+"Z"
SINON
chretour="Z"
FIN
SINON
chretour=Caract(c1+Asc("A")-1)+Caract(c+Asc("A")-1)
FIN
SINON
chretour=Caract(c+Asc("A")-1)
FIN
RENVOYER chretour
LE pb c'est que c'est limité à 702 soit (26 x 26) + 26 qui donne ZZ.
d'où cette verrue (meme s'il y'a peu de chance que j'aille sur ces
colonnes)
De meilleures idées sans doute ?
--
Eric Roumégou
Webmaster des Wtablettes
http://cerbermail.com/?qE7t4Qvilo
(cliquez sur le lien ci-dessus pour m'écrire)
Cette action est irreversible, confirmez la suppression du commentaire ?
Signaler le commentaire
Veuillez sélectionner un problème
Nudité
Violence
Harcèlement
Fraude
Vente illégale
Discours haineux
Terrorisme
Autre
philippe.dupas
Avec ce code (sous VB) il n'y a pas de problème pour aller jusqu'à la colonne IV. Il faut seulement veiller à ne pas dépasser 256 (nombre maxi de colonnes en entrée de fonction.
Function NumToCol(i As Integer) As String Dim c As Integer Dim c1 As Integer c = i Mod 26 c1 = Int(i / 26) If c1 > 0 Then If c = 0 Then If c1 > 1 Then NumToCol = Chr(c1 + Asc("A") - 2) + "Z" Else NumToCol = "Z" End If Else NumToCol = Chr(c1 + Asc("A") - 1) + Chr(c + Asc("A") - 1) End If Else NumToCol = Chr(c + Asc("A") - 1) End If End Function
"Roumegou Eric" a écrit dans le message de news:
Bonjour,
Apparremment simple ... mais pas tant que ça.
Comment convertir un n° de colonne en une ref excel 1=a,2=b,26=Z,27ª,28«,52=AZ,53º ...
Après qq algos qui avaient tous leur limite, je suis allé en trouver un en vb sur le web que j'ai converti en WD.
PROCEDURE ColXls(pNumCol) SI pNumCol>702 ALORS Erreur("Maxi 702 -->ZZ atteint") RENVOYER "ZZ" FIN
chretour est une chaîne c est un entier c1 est un entier c=modulo(pNumCol,26) c1=pNumCol/26 SI c1>0 ALORS SI c=0 ALORS SI c1>1 ALORS chretourÊract(c1+Asc("A")-2)+"Z" SINON chretour="Z" FIN SINON chretourÊract(c1+Asc("A")-1)+Caract(c+Asc("A")-1) FIN SINON chretourÊract(c+Asc("A")-1) FIN RENVOYER chretour
LE pb c'est que c'est limité à 702 soit (26 x 26) + 26 qui donne ZZ. d'où cette verrue (meme s'il y'a peu de chance que j'aille sur ces colonnes)
De meilleures idées sans doute ?
-- Eric Roumégou Webmaster des Wtablettes http://cerbermail.com/?qE7t4Qvilo (cliquez sur le lien ci-dessus pour m'écrire)
Avec ce code (sous VB) il n'y a pas de problème pour aller jusqu'à la
colonne IV.
Il faut seulement veiller à ne pas dépasser 256 (nombre maxi de colonnes en
entrée de fonction.
Function NumToCol(i As Integer) As String
Dim c As Integer
Dim c1 As Integer
c = i Mod 26
c1 = Int(i / 26)
If c1 > 0 Then
If c = 0 Then
If c1 > 1 Then
NumToCol = Chr(c1 + Asc("A") - 2) + "Z"
Else
NumToCol = "Z"
End If
Else
NumToCol = Chr(c1 + Asc("A") - 1) + Chr(c + Asc("A") - 1)
End If
Else
NumToCol = Chr(c + Asc("A") - 1)
End If
End Function
"Roumegou Eric" <Utilisezlelien@fin.msg> a écrit dans le message de news:
mn.e39a7d7b003b1ee7.83362@fin.msg...
Bonjour,
Apparremment simple ... mais pas tant que ça.
Comment convertir un n° de colonne en une ref excel
1=a,2=b,26=Z,27ª,28«,52=AZ,53º ...
Après qq algos qui avaient tous leur limite, je suis allé en trouver un en
vb sur le web que j'ai converti en WD.
PROCEDURE ColXls(pNumCol)
SI pNumCol>702 ALORS
Erreur("Maxi 702 -->ZZ atteint")
RENVOYER "ZZ"
FIN
chretour est une chaîne
c est un entier
c1 est un entier
c=modulo(pNumCol,26)
c1=pNumCol/26
SI c1>0 ALORS
SI c=0 ALORS
SI c1>1 ALORS
chretourÊract(c1+Asc("A")-2)+"Z"
SINON
chretour="Z"
FIN
SINON
chretourÊract(c1+Asc("A")-1)+Caract(c+Asc("A")-1)
FIN
SINON
chretourÊract(c+Asc("A")-1)
FIN
RENVOYER chretour
LE pb c'est que c'est limité à 702 soit (26 x 26) + 26 qui donne ZZ.
d'où cette verrue (meme s'il y'a peu de chance que j'aille sur ces
colonnes)
De meilleures idées sans doute ?
--
Eric Roumégou
Webmaster des Wtablettes
http://cerbermail.com/?qE7t4Qvilo
(cliquez sur le lien ci-dessus pour m'écrire)
Avec ce code (sous VB) il n'y a pas de problème pour aller jusqu'à la colonne IV. Il faut seulement veiller à ne pas dépasser 256 (nombre maxi de colonnes en entrée de fonction.
Function NumToCol(i As Integer) As String Dim c As Integer Dim c1 As Integer c = i Mod 26 c1 = Int(i / 26) If c1 > 0 Then If c = 0 Then If c1 > 1 Then NumToCol = Chr(c1 + Asc("A") - 2) + "Z" Else NumToCol = "Z" End If Else NumToCol = Chr(c1 + Asc("A") - 1) + Chr(c + Asc("A") - 1) End If Else NumToCol = Chr(c + Asc("A") - 1) End If End Function
"Roumegou Eric" a écrit dans le message de news:
Bonjour,
Apparremment simple ... mais pas tant que ça.
Comment convertir un n° de colonne en une ref excel 1=a,2=b,26=Z,27ª,28«,52=AZ,53º ...
Après qq algos qui avaient tous leur limite, je suis allé en trouver un en vb sur le web que j'ai converti en WD.
PROCEDURE ColXls(pNumCol) SI pNumCol>702 ALORS Erreur("Maxi 702 -->ZZ atteint") RENVOYER "ZZ" FIN
chretour est une chaîne c est un entier c1 est un entier c=modulo(pNumCol,26) c1=pNumCol/26 SI c1>0 ALORS SI c=0 ALORS SI c1>1 ALORS chretourÊract(c1+Asc("A")-2)+"Z" SINON chretour="Z" FIN SINON chretourÊract(c1+Asc("A")-1)+Caract(c+Asc("A")-1) FIN SINON chretourÊract(c+Asc("A")-1) FIN RENVOYER chretour
LE pb c'est que c'est limité à 702 soit (26 x 26) + 26 qui donne ZZ. d'où cette verrue (meme s'il y'a peu de chance que j'aille sur ces colonnes)
De meilleures idées sans doute ?
-- Eric Roumégou Webmaster des Wtablettes http://cerbermail.com/?qE7t4Qvilo (cliquez sur le lien ci-dessus pour m'écrire)