Transformer colonne en ligne: ne fonctionne pas après "AY"...

rfeuille Messages postés 6 Date d'inscription mardi 25 août 2009 Statut Membre Dernière intervention 20 octobre 2009 - 19 oct. 2009 à 16:59
rfeuille Messages postés 6 Date d'inscription mardi 25 août 2009 Statut Membre Dernière intervention 20 octobre 2009 - 20 oct. 2009 à 15:38
Voici le code que j'utilise (voir plus bas).
Il est sensé me donner le numéro correspondant à un nom de colonne donnée
(par exemple pour "V" ça donne "22")
Le problème, c'est qu'après 51(AY), le code déconne et donne pour 52 "B@"...

Quelqu'un à une idée ??

Merci !!

Rom

-------------------------------------------------
NumColTmp = Cells(1, ItemSpecificInStatsColumn).Column
ItemSpecificInStatsLetter = IIf(NumColTmp > 26, Chr(64 + NumColTmp \ 26) & Chr(64 + NumColTmp Mod 26), Chr(64 + NumColTmp))
' PROBLEM: après 51(AY), le code déconne et donne pour 52 "B@"...
A voir également:

4 réponses

cs_Jack Messages postés 14006 Date d'inscription samedi 29 décembre 2001 Statut Modérateur Dernière intervention 28 août 2015 79
19 oct. 2009 à 19:04
Salut
Non, chez moi ce petit programme fonctionne très bien et renvoie bien l n° de la colonne :
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
    MsgBox Target.Column
End Sub
Maintenant, je trouve un peu bête de demander à Excel de te donner le n° de la colonne alors que tu la connais déjà = ItemSpecificInStatsColumn

Vala
Jack, MVP VB
NB : Je ne répondrai pas aux messages privés

Le savoir est la seule matière qui s'accroit quand on la partage (Socrate)
0
bigfish_le vrai Messages postés 1835 Date d'inscription vendredi 13 mai 2005 Statut Membre Dernière intervention 20 novembre 2013 15
20 oct. 2009 à 13:56
Salut,


NumColTmp = Cells(1, ItemSpecificInStatsColumn).Column '<-- bizsard cette ligne car elle equivaut à NumColTmp=ItemSpecificInStatsColumn donc supprime la car comme te l'a déjà dit jack elle ne sert à rien

autre solution pour obtenir les lettres de colonne:

ItemSpecificInStatsLetter = Cells(1, ItemSpecificInStatsColumn).address(,false)
ItemSpecificInStatsLetter = Left$(ItemSpecificInStatsLetter, InStr(1, ItemSpecificInStatsLetter, "$", vbTextCompare) - 1)

ou, une solution dont je suis peut etre l'auteur(?) car je ne l'ai jamais vu dans un forum:

Dim ItemSpecificInStatsLetter() As String
ItemSpecificInStatsLetter = Split(Columns(ItemSpecificInStatsColumn).Address(, False), ":", , vbTextCompare)
MsgBox ItemSpecificInStatsLetter(1)

A+
0
bigfish_le vrai Messages postés 1835 Date d'inscription vendredi 13 mai 2005 Statut Membre Dernière intervention 20 novembre 2013 15
20 oct. 2009 à 14:00
re,

je vous le refais avec les balises ce sera plus lisible (désolé pour la répétition)


NumColTmp = Cells(1, ItemSpecificInStatsColumn).Column '<-- bizsard cette ligne car elle equivaut à
'NumColTmp=ItemSpecificInStatsColumn donc supprime la car comme te l'a déjà dit jack elle ne sert à rien


autre solution pour obtenir les lettres de colonne:

ItemSpecificInStatsLetter = Cells(1, ItemSpecificInStatsColumn).address(,false)
ItemSpecificInStatsLetter = Left$(ItemSpecificInStatsLetter, InStr(1, ItemSpecificInStatsLetter, "$", vbTextCompare) - 1)


ou, une solution dont je suis peut etre l'auteur(?) car je ne l'ai jamais vu dans un forum:

Dim ItemSpecificInStatsLetter() As String
ItemSpecificInStatsLetter = Split(Columns(ItemSpecificInStatsColumn).Address(, False), ":", , vbTextCompare)
MsgBox ItemSpecificInStatsLetter(1)


A+
0
rfeuille Messages postés 6 Date d'inscription mardi 25 août 2009 Statut Membre Dernière intervention 20 octobre 2009
20 oct. 2009 à 15:38
Trop fort !!

Ca marche nickel ! Merci bigfish, tu me sauves avec ta solution

Merci beaucoup.

Rom
0
Rejoignez-nous