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

K29CD 4 Messages postés mardi 15 juillet 2008Date d'inscription 30 octobre 2009 Dernière intervention - 10 mars 2009 à 09:57 - Dernière réponse : K29CD 4 Messages postés mardi 15 juillet 2008Date d'inscription 30 octobre 2009 Dernière intervention
- 30 oct. 2009 à 00:14
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
Afficher la suite 

3 réponses

Répondre au sujet
cs_semen 4 Messages postés samedi 30 octobre 2004Date d'inscription 20 août 2009 Dernière intervention - 20 août 2009 à 08:14
+3
Utile
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!
Cette réponse vous a-t-elle aidé ?  
Commenter la réponse de cs_semen
cs_semen 4 Messages postés samedi 30 octobre 2004Date d'inscription 20 août 2009 Dernière intervention - 19 août 2009 à 13:59
0
Utile
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.
Commenter la réponse de cs_semen
K29CD 4 Messages postés mardi 15 juillet 2008Date d'inscription 30 octobre 2009 Dernière intervention - 30 oct. 2009 à 00:14
0
Utile
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
Commenter la réponse de K29CD

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.