Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

[vba] Convertir lettre désignant une colonne en son numéro

7 réponses
Avatar
Oliv'
Bonjour,

Je souhaiterai demander à un utilisateur de désigner la lettre de la colonne
à traiter dans une macro.

J'ai besoin ensuite de convertir cette lettre dans sa valeur (integer)

Avez-vous une solution plus élégante que celle ci-dessous à me proposer ?

Merci d'avance
--
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Have a nice day
Oliv'
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~


quest1:
If Application.ReferenceStyle = xlA1 Then
verif_letColonne = InputBox(prompt:="Indiquez la lettre de la colonne où
vérifier la couleur", _
Title:="Quelle est la colonne couleur ?")

If Len(verif_letColonne) > 2 Then GoTo quest1
If Len(verif_letColonne) = 2 Then
verif_colonne = (((Asc(UCase(Left(verif_letColonne, 1))) - 64) * 26)) +
(Asc(UCase(Right(verif_letColonne, 1))) - 64)
Else
verif_colonne = (Asc(UCase(verif_letColonne)) - 64)
End If

7 réponses

Avatar
Daniel
Bonjour.
Essaie :

Sub test()
On Error Resume Next
Do
verif_letColonne = InputBox(prompt:="Indiquez la lettre de la
colonne où vérifier la couleur", _
Title:="Quelle est la colonne couleur ?")
NumeroColonne = Range(verif_letColonne & 1).Column
Loop While Err.Number <> 0
End Sub

Cordialement.
Daniel
"Oliv'" a écrit dans le message
de news:
Bonjour,

Je souhaiterai demander à un utilisateur de désigner la lettre de la
colonne à traiter dans une macro.

J'ai besoin ensuite de convertir cette lettre dans sa valeur (integer)

Avez-vous une solution plus élégante que celle ci-dessous à me proposer ?

Merci d'avance
--
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Have a nice day
Oliv'
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~


quest1:
If Application.ReferenceStyle = xlA1 Then
verif_letColonne = InputBox(prompt:="Indiquez la lettre de la colonne où
vérifier la couleur", _
Title:="Quelle est la colonne couleur ?")

If Len(verif_letColonne) > 2 Then GoTo quest1
If Len(verif_letColonne) = 2 Then
verif_colonne = (((Asc(UCase(Left(verif_letColonne, 1))) - 64) * 26)) +
(Asc(UCase(Right(verif_letColonne, 1))) - 64)
Else
verif_colonne = (Asc(UCase(verif_letColonne)) - 64)
End If



Avatar
MichDenis
De cette manière, l'usager n'a qu'à sélectionner dans la feuille une cellule de la colonne désirée :

'-----------------------------
Sub test1()
Dim Rg As Range
On Error Resume Next
Set Rg = Application.InputBox(prompt:="Sélectionner la colonne", Type:=8)
If Rg Is Nothing Then MsgBox "Boîte de dialoque annuler": Exit Sub
MsgBox Split(Rg.Address, "$")(1) & ", Numéro colonne : " & Rg.Column
End Sub
'-----------------------------



"Oliv'" a écrit dans le message de news:

Bonjour,

Je souhaiterai demander à un utilisateur de désigner la lettre de la colonne
à traiter dans une macro.

J'ai besoin ensuite de convertir cette lettre dans sa valeur (integer)

Avez-vous une solution plus élégante que celle ci-dessous à me proposer ?

Merci d'avance
--
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Have a nice day
Oliv'
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~


quest1:
If Application.ReferenceStyle = xlA1 Then
verif_letColonne = InputBox(prompt:="Indiquez la lettre de la colonne où
vérifier la couleur", _
Title:="Quelle est la colonne couleur ?")

If Len(verif_letColonne) > 2 Then GoTo quest1
If Len(verif_letColonne) = 2 Then
verif_colonne = (((Asc(UCase(Left(verif_letColonne, 1))) - 64) * 26)) +
(Asc(UCase(Right(verif_letColonne, 1))) - 64)
Else
verif_colonne = (Asc(UCase(verif_letColonne)) - 64)
End If
Avatar
papou
Bonjour
Très simplement avec ceci par exemple :
MsgBox Range(verif_letColonne & "1").Column

Cordialement
Pascal

"Oliv'" a écrit dans le message
de news:
Bonjour,

Je souhaiterai demander à un utilisateur de désigner la lettre de la
colonne à traiter dans une macro.

J'ai besoin ensuite de convertir cette lettre dans sa valeur (integer)

Avez-vous une solution plus élégante que celle ci-dessous à me proposer ?

Merci d'avance
--
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Have a nice day
Oliv'
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~


quest1:
If Application.ReferenceStyle = xlA1 Then
verif_letColonne = InputBox(prompt:="Indiquez la lettre de la colonne où
vérifier la couleur", _
Title:="Quelle est la colonne couleur ?")

If Len(verif_letColonne) > 2 Then GoTo quest1
If Len(verif_letColonne) = 2 Then
verif_colonne = (((Asc(UCase(Left(verif_letColonne, 1))) - 64) * 26)) +
(Asc(UCase(Right(verif_letColonne, 1))) - 64)
Else
verif_colonne = (Asc(UCase(verif_letColonne)) - 64)
End If



Avatar
selegorn
Bonjour,

J'ai une fonction qui est élégante et qui pourrait peut être convenir à ce
que tu cherches à faire :

Public Function Number2Letter(N As Long) As String
'// Dana DeLouis
If N > 0 And N < 257 Then
Number2Letter = Split(Cells(N).Address, "$")(1)
Else
Number2Letter = Error(9) '> Subscript out of range
End If
End Function

Salutations.


Bonjour,

Je souhaiterai demander à un utilisateur de désigner la lettre de la colonne
à traiter dans une macro.

J'ai besoin ensuite de convertir cette lettre dans sa valeur (integer)

Avez-vous une solution plus élégante que celle ci-dessous à me proposer ?

Merci d'avance
--
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Have a nice day
Oliv'
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~


quest1:
If Application.ReferenceStyle = xlA1 Then
verif_letColonne = InputBox(prompt:="Indiquez la lettre de la colonne où
vérifier la couleur", _
Title:="Quelle est la colonne couleur ?")

If Len(verif_letColonne) > 2 Then GoTo quest1
If Len(verif_letColonne) = 2 Then
verif_colonne = (((Asc(UCase(Left(verif_letColonne, 1))) - 64) * 26)) +
(Asc(UCase(Right(verif_letColonne, 1))) - 64)
Else
verif_colonne = (Asc(UCase(verif_letColonne)) - 64)
End If





Avatar
papou
Oups !
J'avais pas vu que Daniel avait proposé exactement la même chose, désolé ;-)

Cordialement
Pascal

"papou" <cestpasbon@çanonplus44.fr> a écrit dans le message de news:

Bonjour
Très simplement avec ceci par exemple :
MsgBox Range(verif_letColonne & "1").Column

Cordialement
Pascal

"Oliv'" a écrit dans le
message de news:
Bonjour,

Je souhaiterai demander à un utilisateur de désigner la lettre de la
colonne à traiter dans une macro.

J'ai besoin ensuite de convertir cette lettre dans sa valeur (integer)

Avez-vous une solution plus élégante que celle ci-dessous à me proposer ?

Merci d'avance
--
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Have a nice day
Oliv'
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~


quest1:
If Application.ReferenceStyle = xlA1 Then
verif_letColonne = InputBox(prompt:="Indiquez la lettre de la colonne où
vérifier la couleur", _
Title:="Quelle est la colonne couleur ?")

If Len(verif_letColonne) > 2 Then GoTo quest1
If Len(verif_letColonne) = 2 Then
verif_colonne = (((Asc(UCase(Left(verif_letColonne, 1))) - 64) * 26)) +
(Asc(UCase(Right(verif_letColonne, 1))) - 64)
Else
verif_colonne = (Asc(UCase(verif_letColonne)) - 64)
End If







Avatar
Oliv'
Merci à tous pour vos codes.

--
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Have a nice day
Oliv'
Outlook : http://faq.outlook.free.fr/
les archives : http://groups.google.com/group/microsoft.public.fr.outlook
Dernière chance http://www.outlookcode.com/
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Avatar
Ange Ounis
Elle est en effet très élégante (Dana DeLouis est bien connu pour ses solutions
originales et élégantes) mais elle fait exactement l'inverse de ce dont Oliv' a
besoin ;)

----------
Ange Ounis
----------

Bonjour,

J'ai une fonction qui est élégante et qui pourrait peut être convenir à ce
que tu cherches à faire :

Public Function Number2Letter(N As Long) As String
'// Dana DeLouis
If N > 0 And N < 257 Then
Number2Letter = Split(Cells(N).Address, "$")(1)
Else
Number2Letter = Error(9) '> Subscript out of range
End If
End Function

Salutations.


Bonjour,

Je souhaiterai demander à un utilisateur de désigner la lettre de la colonne
à traiter dans une macro.

J'ai besoin ensuite de convertir cette lettre dans sa valeur (integer)

Avez-vous une solution plus élégante que celle ci-dessous à me proposer ?

Merci d'avance
--
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Have a nice day
Oliv'
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~


quest1:
If Application.ReferenceStyle = xlA1 Then
verif_letColonne = InputBox(prompt:="Indiquez la lettre de la colonne où
vérifier la couleur", _
Title:="Quelle est la colonne couleur ?")

If Len(verif_letColonne) > 2 Then GoTo quest1
If Len(verif_letColonne) = 2 Then
verif_colonne = (((Asc(UCase(Left(verif_letColonne, 1))) - 64) * 26)) +
(Asc(UCase(Right(verif_letColonne, 1))) - 64)
Else
verif_colonne = (Asc(UCase(verif_letColonne)) - 64)
End If