Ceci est une page optimisée pour les mobiles. Cliquez sur ce texte pour afficher la vraie page.

vba Convertir lettre en numéro de colonne

  • Initiateur de la discussion Initiateur de la discussion C@thy
  • Date de début Date de début

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

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
 
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
 
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+
 
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+
 
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+
 
Re : vba Convertir lettre en numéro de colonne

Re

on pourrait aussi rajouter un test pour voir si on est au delà de la limite If UCase(lettre)) > "XFD" Then ... pour éviter la plage nommée ZZZ

A+
 
Re : vba Convertir lettre en numéro de colonne

Re

Et flûte, il faudrait aussi tester la longueur de la saisie, et la version d'Excel,( mais la question initiale concerne XL 2007).

A+
 
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
 
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+
 
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:
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

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+
 
- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD

Discussions similaires

Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…