OVH Cloud OVH Cloud

No Col vers nom format "A1"

6 réponses
Avatar
jlf
bonjour

pardon si la question a déjà été posée mille fois :o))

comment convertir un No de colonne (entier de 1 à n) en son identité au
format "A1"

par exemple :
col 1 = A
col 27 = AA
etc

ça fait un petit moment que je cherche et j'ai un peu de mal, si quelqu'un
avait une formule ou un bout de code ça m'avancerait bien

merci d'avance
jlf

6 réponses

Avatar
Nicolas B.
Salut,

Regarde dans les archives du forum :
http://minilien.com/?mnHLoqqBe9


A+
--
Nicolas B.

Adresse @adresse.bidon.com invalide,
E-mail : www.cerbermail.com/?gAAILfkPsC


bonjour

pardon si la question a déjà été posée mille fois :o))

comment convertir un No de colonne (entier de 1 à n) en son identité
au format "A1"

par exemple :
col 1 = A
col 27 = AA
etc

ça fait un petit moment que je cherche et j'ai un peu de mal, si
quelqu'un avait une formule ou un bout de code ça m'avancerait bien

merci d'avance
jlf


Avatar
garnote
Salut Jlf,

J'ai deux formules à te proposer :
Si à partir de C6, tu as :
1
2
3
4
.
.
.

Tu peux entrer cette formule en D6 et la recopier vers le bas.
=SUBSTITUE(SUBSTITUE(ADRESSE(1;C6);"$";"");1;"")

Et une autre plus générale, à entrer dans une cellule quelconque :
=SUBSTITUE(SUBSTITUE(ADRESSE(LIGNE(); _
COLONNE());"$";"");LIGNE();"")

Est-ce que ça te convient ?

Serge


"jlf" a écrit dans le message de news:
br748i$h55$
bonjour

pardon si la question a déjà été posée mille fois :o))

comment convertir un No de colonne (entier de 1 à n) en son identité au
format "A1"

par exemple :
col 1 = A
col 27 = AA
etc

ça fait un petit moment que je cherche et j'ai un peu de mal, si quelqu'un
avait une formule ou un bout de code ça m'avancerait bien

merci d'avance
jlf




Avatar
ru-th
Salut Serge

un peu plus réduit ;-)
=SUBSTITUE(ADRESSE(1;A1;4);1;"")

a+
rural thierry
"garnote" a écrit dans le message de news:
C8FBb.48613$
Salut Jlf,

J'ai deux formules à te proposer :
Si à partir de C6, tu as :
1
2
3
4
.
.
.

Tu peux entrer cette formule en D6 et la recopier vers le bas.
=SUBSTITUE(SUBSTITUE(ADRESSE(1;C6);"$";"");1;"")

Et une autre plus générale, à entrer dans une cellule quelconque :
=SUBSTITUE(SUBSTITUE(ADRESSE(LIGNE(); _
COLONNE());"$";"");LIGNE();"")

Est-ce que ça te convient ?

Serge


"jlf" a écrit dans le message de news:
br748i$h55$
bonjour

pardon si la question a déjà été posée mille fois :o))

comment convertir un No de colonne (entier de 1 à n) en son identité au
format "A1"

par exemple :
col 1 = A
col 27 = AA
etc

ça fait un petit moment que je cherche et j'ai un peu de mal, si
quelqu'un


avait une formule ou un bout de code ça m'avancerait bien

merci d'avance
jlf








Avatar
jlf
"garnote" a écrit
J'ai deux formules à te proposer :
Est-ce que ça te convient ?


merci à vous deux pour vos réponses
je ne savais pas qu'Excel n'acceptait que 256 colonnes, ça simplifie le
calcul mais du coup ça va me compliquer la vie car je devrais multiplier les
feuilles
tant pis :o))

s'agissant de la récup du nom de colonne depuis son No j'avais mal formulé
mon pbm

en fait Excel n'est pas forcément ouvert lorsque j'en ai besoin, en plus
comme j'y accède par OLE ce serait trop lent de l'utiliser

j'avais trouvé une soluce générale récursive avant de revenir ici consulter
les réponses

pas très utile avec la limite à 256 mais je vous la livre quand même, ça
pourra servir à quelqu'un le jour ou le nombre de colonnes sera multiplié
:o))

c'est du Pascal, mais facile à adapter dans n'importe quel language

function NoColToA1(n : integer) : string;
var reste, diviseur : integer;
const base = 26;
begin
Reste := n mod base; // modulo
diviseur := n div base; // division entière

if Reste > 0 then
Result := Chr(64 + Reste) // de A à Y
else
begin
Result := Chr(64 + Base); // Z
Dec(Diviseur); // pour réduire le 10
end;

if Diviseur > 0 then
Result := NoColToA1(Diviseur) + Result;
end;

j'ai vérifié en vitesse avec une base 3, ça semble marcher au moins jusqu'à
4 caractères (sauf pour 0 bien sûr)

bien amicalement
jlf

Avatar
garnote
Ce qui signifie donc que ma grosse formule devient :
=SUBSTITUE(ADRESSE(1;COLONNE();4);1;"")
Yep !

Serge

"ru-th" a écrit dans le message de news:

Salut Serge

un peu plus réduit ;-)
=SUBSTITUE(ADRESSE(1;A1;4);1;"")

a+
rural thierry
"garnote" a écrit dans le message de news:
C8FBb.48613$
Salut Jlf,

J'ai deux formules à te proposer :
Si à partir de C6, tu as :
1
2
3
4
.
.
.

Tu peux entrer cette formule en D6 et la recopier vers le bas.
=SUBSTITUE(SUBSTITUE(ADRESSE(1;C6);"$";"");1;"")

Et une autre plus générale, à entrer dans une cellule quelconque :
=SUBSTITUE(SUBSTITUE(ADRESSE(LIGNE(); _
COLONNE());"$";"");LIGNE();"")

Est-ce que ça te convient ?

Serge


"jlf" a écrit dans le message de news:
br748i$h55$
bonjour

pardon si la question a déjà été posée mille fois :o))

comment convertir un No de colonne (entier de 1 à n) en son identité
au



format "A1"

par exemple :
col 1 = A
col 27 = AA
etc

ça fait un petit moment que je cherche et j'ai un peu de mal, si
quelqu'un


avait une formule ou un bout de code ça m'avancerait bien

merci d'avance
jlf












Avatar
rs
En vba :
LettrecolÎlls(1,c).address(false,false)

avec c variale de 1 à 256= N° de colonne.
T'as plus qu'à subtituer le "1" à la fin de l'adresse.



"jlf" a écrit dans le message de news:
br79g0$isl$
"garnote" a écrit
J'ai deux formules à te proposer :
Est-ce que ça te convient ?


merci à vous deux pour vos réponses
je ne savais pas qu'Excel n'acceptait que 256 colonnes, ça simplifie le
calcul mais du coup ça va me compliquer la vie car je devrais multiplier
les

feuilles
tant pis :o))

s'agissant de la récup du nom de colonne depuis son No j'avais mal formulé
mon pbm

en fait Excel n'est pas forcément ouvert lorsque j'en ai besoin, en plus
comme j'y accède par OLE ce serait trop lent de l'utiliser

j'avais trouvé une soluce générale récursive avant de revenir ici
consulter

les réponses

pas très utile avec la limite à 256 mais je vous la livre quand même, ça
pourra servir à quelqu'un le jour ou le nombre de colonnes sera multiplié
:o))

c'est du Pascal, mais facile à adapter dans n'importe quel language

function NoColToA1(n : integer) : string;
var reste, diviseur : integer;
const base = 26;
begin
Reste := n mod base; // modulo
diviseur := n div base; // division entière

if Reste > 0 then
Result := Chr(64 + Reste) // de A à Y
else
begin
Result := Chr(64 + Base); // Z
Dec(Diviseur); // pour réduire le 10
end;

if Diviseur > 0 then
Result := NoColToA1(Diviseur) + Result;
end;

j'ai vérifié en vitesse avec une base 3, ça semble marcher au moins
jusqu'à

4 caractères (sauf pour 0 bien sûr)

bien amicalement
jlf