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
.
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
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é !
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.
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)
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 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.