vba Convertir lettre en numéro de colonne

C@thy

XLDnaute Barbatruc
Bonjour le forum,

dans le temps jadis (= avant la V2007) j'avais cette macro :
Code:
Sub ConvertirLettrColonne()
quest1:
 If Application.ReferenceStyle = xlA1 Then
letColonne = InputBox("Indiquez la lettre de la colonne")
If Len(letColonne) > 2 Then GoTo quest1
 If Len(letColonne) = 2 Then
 verif_colonne = (((Asc(UCase(Left(letColonne, 1))) - 64) * 26)) + (Asc(UCase(Right(letColonne, 1))) - 64)
 Else
 verif_colonne = (Asc(UCase(letColonne)) - 64)
 End If
 End If
MsgBox verif_colonne
End Sub
mais, évidemment ça ne marche pas avec les colonnes à 3 lettres (ex. AAA doit donner 703...)

Je suis sûre que vous avez une idée...

Merci à vous.

Bises

C@thy
 

Iznogood1

XLDnaute Impliqué
Re : vba Convertir lettre en numéro de colonne

Comme ça, vite fait :

Code:
Sub ConvertirLettrColonne()
  Dim r As Range
  Dim letColonne
  letColonne = InputBox("Indiquez la lettre de la colonne")
  If letColonne <> "" Then
    On Error Resume Next
    Set r = Range(letColonne & "1")
    If Err <> 0 Then
      MsgBox ("Colonne non valide")
    Else
      MsgBox r.Column
    End If
    On Error GoTo 0
  End If
End Sub
 

Paf

XLDnaute Barbatruc
Re : vba Convertir lettre en numéro de colonne

Bonjour à tous

j'avais sensiblement la même en moins sécurisé

Code:
ColAlpha = InputBox(prompt:="Indiquez la lettre de la colonne ")
NumCol = Range(ColAlpha & 1).Column
MsgBox NumCol

A+
 

job75

XLDnaute Barbatruc
Re : vba Convertir lettre en numéro de colonne

Re,

J'utiliserai plutôt :

Code:
Sub ConvertirLettresColonne()
Dim lettre$, colonne%
1 lettre = InputBox("Indiquez la ou les lettres de la colonne")
If lettre = "" Then Exit Sub
For colonne = 1 To Columns.Count
  If Split(Columns(colonne).Address(0, 0), ":")(0) = UCase(lettre) Then
    MsgBox colonne
    Exit Sub
  End If
Next
GoTo 1
End Sub
A+
 

job75

XLDnaute Barbatruc
Re : vba Convertir lettre en numéro de colonne

Re,

J'ai testé la macro précédente sur 16384 colonnes (Excel 2010).

En entrant une colonne inexistante - "zzz" - toutes les colonnes sont étudiées en 0,20 seconde, c'est rapide.

Quelle drôle d'idée d'avoir des plages nommées au nom de références de cellule

Voyons on ne peut pas nommer une plage du nom d'une référence de cellule...

A+
 

laurent950

XLDnaute Accro
Re : vba Convertir lettre en numéro de colonne

Bonjour les experts,

Une petite ruse

voici le code :

VB:
Sub test()

letColonne = InputBox("Indiquez la lettre de la colonne")

Dim cor As Range
Set cor = Range(Cells(1, 1), Cells(1, 16384))
'MsgBox cor.Count
'MsgBox Split(cor(1, 1).Address, "$")(1)
For i = 1 To cor.Count
If Split(cor(1, i).Address, "$")(1) = UCase(letColonne) Then
    MsgBox letColonne
    MsgBox i
    Exit For
End If

Next i

End Sub

Ps : 16384 c'est la dernier colonne non vide de la feuille
a tester sur une feuille vierge avec une variable
pour avoir ce nombre = adaptable a toute version xls

laurent
 

Paf

XLDnaute Barbatruc
Re : vba Convertir lettre en numéro de colonne

Re ou bonjour à tous

Code:
Do
ColAlpha = InputBox(prompt:="Indiquez la lettre de la colonne ")
test = IsError(Evaluate("= " & ColAlpha & "1"))
If test Then
     MsgBox "la colonne n'existe pas"
Else
    NumCol = Range(ColAlpha & 1).Column
    MsgBox NumCol
End If
Loop Until Not test

Ca fonctionne sur les 2 versions

A+
 

Dranreb

XLDnaute Barbatruc
Re : vba Convertir lettre en numéro de colonne

Bonjour.

Ma version:
VB:
Function EntCol(ByVal N As Long) As String
Do: N = N - 1: EntCol = Chr$(N Mod 26 + 65) & EntCol: N = N \ 26: Loop Until N = 0
End Function
Function ColEnt(ByVal C As String) As Long
Dim P As Long: For P = 1 To Len(C): ColEnt = ColEnt * 26 + Asc(Mid$(C, P, 1)) - 64: Next P
End Function
VB:
Sub ConvertirLettrColonne()
MsgBox ColEnt(UCase(InputBox("Indiquez la lettre de la colonne")))
End Sub
 
Dernière édition:

ROGER2327

XLDnaute Barbatruc
Re : vba Convertir lettre en numéro de colonne

Bonjour à tous.


Pas très claire cette demande faite dans la section Excel2010 par une utilisatrice d'Excel2003 ...
Mais on pardonne eu égard au grand âge.

À tout hasard, quelques fonctions dans le classeur joint.​


Bonne journée.


ℝOGER2327
#7726


Mercredi 4 Gueules 142 (*Sainte Goule ou Gudule, institutrice - fête Suprême Quarte)
10 Pluviôse An CCXXIII, 6,4286h - cognée
2015-W05-4T15:25:43Z
 

Pièces jointes

  • Rang de colonne.xlsm
    20 KB · Affichages: 46
  • Rang de colonne.xls
    43.5 KB · Affichages: 59

job75

XLDnaute Barbatruc
Re : vba Convertir lettre en numéro de colonne

Bonjour Bernard, Roger,

Autre solution :

Code:
Sub ConvertirLettresColonne()
Dim lettre$, colonne%
1 lettre = InputBox("Indiquez la ou les lettres de la colonne")
If lettre = "" Then Exit Sub
On Error Resume Next
colonne = Columns(lettre).Column
If colonne = 0 Then GoTo 1
MsgBox colonne
End Sub
Il n'y a pas de problème avec les noms définis car Columns ne les accepte pas, contrairement à Range.

A+
 

Discussions similaires

Réponses
19
Affichages
2 K
Réponses
8
Affichages
649

Statistiques des forums

Discussions
312 177
Messages
2 085 972
Membres
103 073
dernier inscrit
MSCHOE16