165 votes

Fonction pour convertir un numéro de colonne en lettre ?

Quelqu'un dispose-t-il d'une fonction Excel VBA permettant de retourner la ou les lettres de la colonne d'un nombre ?

Par exemple, en saisissant 100 devrait retourner CV .

236voto

brettdj Points 26353

Cette fonction renvoie la lettre de la colonne pour un numéro de colonne donné.

Function Col_Letter(lngCol As Long) As String
    Dim vArr
    vArr = Split(Cells(1, lngCol).Address(True, False), "$")
    Col_Letter = vArr(0)
End Function

code d'essai pour la colonne 100

Sub Test()
    MsgBox Col_Letter(100)
End Sub

100voto

robartsd Points 173

Si vous préférez ne pas utiliser un objet de gamme :

Function ColumnLetter(ColumnNumber As Long) As String
    Dim n As Long
    Dim c As Byte
    Dim s As String

    n = ColumnNumber
    Do
        c = ((n - 1) Mod 26)
        s = Chr(c + 65) & s
        n = (n - c) \ 26
    Loop While n > 0
    ColumnLetter = s
End Function

49voto

Damian Fennelly Points 51

Un truc qui marche pour moi est :

Cells(Row,Column).Address 

Cela vous renverra la référence du format $AE$1.

38voto

ashleedawg Points 12302

I'm surprised nobody suggested: **<code></code> <code>Columns(</code>***<code>Column Index</code>***<code>).Address</code> <code></code>**


Pour revenir UNIQUEMENT la lettre de la colonne (s) : Split((Columns(Column Index).Address(,0)),":")(0)


  ![More Examples](https://i.stack.imgur.com/7lg2r.gif "SURE, I may have a bit too much time on my hands...

...or maybe I saw an chance to test to see how smooth/ noticeable ScreenToGif's image fading transitions are.

After all, Stack Overflow is a place for learning, right? (and it is programming-related so I am technically on-topic!) You probably didn't even know you could add tool-tips to images in Stack Overflow posts, did ya?

You're the one that was staring at the animation long enough to notice this tool-tip - and now, look, you're still sitting here, reading it all!

Now c'mon, how 'bout a 'pity up-vote'? Ya never know, it might just earn you some valuable Karma Points! :)")


19voto

Nikolay Ivanov Points 739

Et une solution utilisant la récursion :

Function ColumnNumberToLetter(iCol As Long) As String

    Dim lAlpha As Long
    Dim lRemainder As Long

    If iCol <= 26 Then
        ColumnNumberToLetter = Chr(iCol + 64)
    Else
        lRemainder = iCol Mod 26
        lAlpha = Int(iCol / 26)
        If lRemainder = 0 Then
            lRemainder = 26
            lAlpha = lAlpha - 1
        End If
        ColumnNumberToLetter = ColumnNumberToLetter(lAlpha) & Chr(lRemainder + 64)
    End If

End Function

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X