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 .

19voto

OSUZorba Points 56

C'est une façon supplémentaire de le faire. La réponse de Brettdj m'a fait penser à cela, mais si vous utilisez cette méthode, vous n'avez pas besoin d'utiliser un tableau de variantes, vous pouvez aller directement à une chaîne.

ColLtr = Cells(1, ColNum).Address(True, False)
ColLtr = Replace(ColLtr, "$1", "")

ou vous pouvez le rendre un peu plus compact avec ceci

ColLtr = Replace(Cells(1, ColNum).Address(True, False), "$1", "")

Remarquez que cela dépend de votre référencement de la ligne 1 dans l'objet cellules.

10voto

Jan Wijninckx Points 71

Le code de robertsd est élégante, mais pour la rendre pérenne, changez la déclaration de n en type long

Si vous voulez une formule pour éviter les macros, voici une formule qui fonctionne jusqu'à la colonne 702 incluse.

=IF(A1>26,CHAR(INT((A1-1)/26)+64),"")&CHAR(MOD(A1-1,26)+65)

où A1 est la cellule contenant le numéro de la colonne à convertir en lettres.

10voto

Alistair Collins Points 1120

Ceci est possible en utilisant une formule :

=SUBSTITUTE(ADDRESS(1,COLUMN(),4),"1","")

et peut donc également être écrit comme une fonction VBA comme demandé :

Function ColName(colNum As Integer) As String
    ColName = Split(Worksheets(1).Cells(1, colNum).Address, "$")(1)
End Function

9voto

alexanderbird Points 1979

Il s'agit d'une version de La réponse de robartsd (avec la saveur de La solution en une ligne de Jan Wijninckx ), en utilisant la récursion au lieu d'une boucle.

Public Function ColumnLetter(Column As Integer) As String
    If Column < 1 Then Exit Function
    ColumnLetter = ColumnLetter(Int((Column - 1) / 26)) & Chr(((Column - 1) Mod 26) + Asc("A"))
End Function

Je l'ai testé avec les entrées suivantes :

1   => "A"
26  => "Z"
27  => "AA"
51  => "AY"
702 => "ZZ"
703 => "AAA" 
-1  => ""
-234=> ""

7voto

mtbink.com Points 21

DERNIÈRE MISE À JOUR : Veuillez ignorer la fonction ci-dessous, @SurasinTancharoen a réussi à m'avertir qu'elle est cassée à n = 53 .
Pour ceux qui sont intéressés, voici d'autres valeurs brisées juste en dessous n = 200 :

Certain values of

Veuillez utiliser la fonction @brettdj pour tous vos besoins. Elle fonctionne même pour la dernière limite du nombre maximum de colonnes de Microsoft Excel : 16384 devrait donner XFD

enter image description here

FIN DE LA MISE À JOUR


La fonction ci-dessous est fournie par Microsoft :

Function ConvertToLetter(iCol As Integer) As String
   Dim iAlpha As Integer
   Dim iRemainder As Integer
   iAlpha = Int(iCol / 27)
   iRemainder = iCol - (iAlpha * 26)
   If iAlpha > 0 Then
      ConvertToLetter = Chr(iAlpha + 64)
   End If
   If iRemainder > 0 Then
      ConvertToLetter = ConvertToLetter & Chr(iRemainder + 64)
   End If
End Function

Source : Comment convertir les numéros de colonne d'Excel en caractères alphabétiques ?

S'APPLIQUE À

  • Microsoft Office Excel 2007
  • Microsoft Excel 2002 Edition Standard
  • Microsoft Excel 2000 Standard Edition
  • Microsoft Excel 97 Edition Standard

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