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
.
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
.
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.
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.
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=> ""
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
:
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 À
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.