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 .

5voto

BrettFromLA Points 738

Il s'agit d'une fonction basée sur La réponse de @DamienFennelly ci-dessus. Si vous me donnez un pouce en l'air, donnez-lui aussi un pouce en l'air ! :P

Function outColLetterFromNumber(iCol as Integer) as String
    sAddr = Cells(1, iCol).Address
    aSplit = Split(sAddr, "$")
    outColLetterFromNumber = aSplit(1)
End Function

3voto

flaviomorgado Points 11

Il existe un moyen très simple d'utiliser la puissance d'Excel : Utilisez Range.Cells.Address la propriété, de cette façon :

strCol = Cells(1, lngRow).Address(xlRowRelative, xlColRelative)

Cela renverra l'adresse de la colonne souhaitée sur la ligne 1. Prenez-la du 1 :

strCol = Left(strCol, len(strCol) - 1)

Notez qu'il est si rapide et puissant que vous pouvez renvoyer des adresses de colonnes qui existent même !

Substitut lngRow pour le numéro de colonne souhaité en utilisant Selection.Column propriété !

2voto

SandPiper Points 2037

J'interviens donc tardivement, mais je souhaite apporter une autre réponse que personne n'a encore abordée et qui ne concerne pas les tableaux. Vous pouvez le faire avec une simple manipulation de chaînes de caractères.

Function ColLetter(Col_Index As Long) As String

    Dim ColumnLetter As String

    'Prevent errors; if you get back a number when expecting a letter, 
    '    you know you did something wrong.
    If Col_Index <= 0 Or Col_Index >= 16384 Then
        ColLetter = 0
        Exit Function
    End If

    ColumnLetter = ThisWorkbook.Sheets(1).Cells(1, Col_Index).Address     'Address in $A$1 format
    ColumnLetter = Mid(ColumnLetter, 2, InStr(2, ColumnLetter, "$") - 2)  'Extracts just the letter

    ColLetter = ColumnLetter
End Sub

Une fois que vous avez l'entrée dans le format $A$1 utilisez le Mid commencez à la position 2 pour tenir compte de la première $ puis vous trouvez où le deuxième $ apparaît dans la chaîne en utilisant InStr puis retranchez 2 pour tenir compte de cette position de départ.

Vous avez ainsi l'avantage de pouvoir vous adapter à toute la gamme des colonnes possibles. Par conséquent, ColLetter(1) rend "A", et ColLetter(16384) donne comme résultat "XFD", qui est la dernière colonne possible pour ma version d'Excel.

2voto

Syd B Points 1

Voici un exemple simple qui peut être utilisé.

ColumnLetter = Mid(Cells(Row, LastColA).Address, 2, 1)

Elle ne fonctionnera que pour une désignation de colonne à une lettre, mais elle est intéressante pour les cas simples. Si vous avez besoin que cela fonctionne exclusivement pour des désignations de 2 lettres, vous pouvez utiliser ce qui suit :

ColumnLetter = Mid(Cells(Row, LastColA).Address, 2, 2)

2voto

Codeplayer Points 11

Cela fonctionnera quelle que soit la colonne à l'intérieur de votre ligne de code pour la cellule qui est située dans la ligne X, dans la colonne Y :

Mid(Cells(X,Y).Address, 2, instr(2,Cells(X,Y).Address,"$")-2)

Si vous avez une cellule avec un nom unique défini "Cellname" :

Mid(Cells(1,val(range("Cellname").Column)).Address, 2, instr(2,Cells(1,val(range("Cellname").Column)).Address,"$")-2)

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