Récupérer le nom de la colonne dans une feuille EXCEL [Résolu]

Signaler
Messages postés
4
Date d'inscription
mardi 15 juillet 2008
Statut
Membre
Dernière intervention
30 octobre 2009
-
Messages postés
4
Date d'inscription
mardi 15 juillet 2008
Statut
Membre
Dernière intervention
30 octobre 2009
-
Bonjour,

Je met ce bout de code pour qu'à partir d'un numéro de colonne , on récupère la/les lettres de cette colonne façon "feuille EXCEL" ( par ex : pour 27 --> AA...)

Cette fonction passe l'entier numcol (le n° de colonne lu) comme paramètre
et renvoie la(les) lettre(s) correspondantes

private
string Lettre(
int numcol)

///

///Cette fonction renvoie le nom de la colonne de la Feuille EXCEL

/// ex : n° colonne --> 27

/// chaîne renvoyée --> AA

///{

string c =
"";

char [] Alpha = {
'A',
'B',
'C',
'D',
'E',
'F',
'G',
'H',
'I',
'J',
'K',
'L',
'M',
'N',
'O',
'P',
'Q',
'R',
'S',
'T',
'U',
'V',
'W',
'X',
'Y',
'Z'};

double g = (numcol / 26);

// si le n° de colonne est supérieur à 26

// le nom de la colonne est composée de 2 lettres

if (numcol > 26){

// la première lettre : PARTIE ENTIERE du résultat de la division du n° de colonne par 26

// la seconde lettre : RESTE de la DIVISION par 26 (%26)

// dans les 2 cas, on enlève 1 pour avoir la position correcte dans le tableau Alpha[] (index : 0 à 25)c =

"" + Alpha[
Convert.ToInt32(
Math.Truncate(g))-1]+ Alpha[numcol%26-1];}

else{

c =

"" + Alpha[numcol-1];}

return c;}

J'espère avoir posté dans la bonne section. Sinon, excusez-moi, je suis nouveau par ici...  

K29

3 réponses

Messages postés
4
Date d'inscription
samedi 30 octobre 2004
Statut
Membre
Dernière intervention
20 août 2009

Excuse moi c'est pas ça en fait le problème, je me suis repenché dessus ce matin et il se trouve que finalement ton script est bon sauf quand il arrive a AZ ou BZ ou CZ etc... En clair pour les Z ton modulo trouve 0 donc moi j'ai rajouté quelque chose pour que quand le modulo est 0 sa récupère bien, voila ce qu'il faut changer dans le if(numcol>26):

 if (numcol > 26)
            {
                if ((numcol % 26) == 0)
                {
                    c = "" + Alpha[Convert.ToInt32(Math.Truncate(g)) - 2] + Alpha[(26 % numcol) - 1];
                }
                else
                {
                    c = "" + Alpha[Convert.ToInt32(Math.Truncate(g)) - 1] + Alpha[(numcol % 26) - 1];
                }

            }

J'ai testé et ça fonctionne très bien!
Messages postés
4
Date d'inscription
samedi 30 octobre 2004
Statut
Membre
Dernière intervention
20 août 2009

Merci pour ton script il m'a bien servi, sauf que j'ai détecté une erreur, au lieu de mettre numcol%26, il faut mettre 26%numcol, sinon pour la colonne 52 qui est AZ il va trouver 0.
Messages postés
4
Date d'inscription
mardi 15 juillet 2008
Statut
Membre
Dernière intervention
30 octobre 2009
1
Merci Semen !

Je viens de me replonger dans le code (que j'avais abandonné depuis la fin de mon stage en février 2009) et effectivement, il y a bien une erreur.

Merci de ton aide et de ta perspicacité !

K29CD