Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

Convertir n° de colonne en notation Excel

1 réponse
Avatar
Roumegou Eric
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=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)

1 réponse

Avatar
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)