Trouver la lettre de la colonne de la cellule active

Sofhy

XLDnaute Occasionnel
Bonjour à tous,

Je cherche à extraire la lettre de la colonne de la cellule active.

Par exemple, si je fais :

Code:
Sub Ma_Macro    
Y as String
Range B1.select
Selection.End(xlToRight).Offset(1, 0).Select
y = Selection.Address [COLOR="Blue"][B]ici, il me rapporte les coordonnées complètes,
par exemple E2. Comment faire pour qu'il me rapporte uniquement "E"[/B][/COLOR]
End Sub

J'ai trouvé pour rapporter les coordonnées complètes, le numéro de la ligne, mais la lettre de la colonne ... je coince.

Merci par avance pour votre aide,
Sofhy
 
G

Guest

Guest
Re : Trouver la lettre de la colonne de la cellule active

Bonjour Sofhy

Code:
Y= Split(Selection.Address,"$")(1)

A+

[Edit] Oups, j'avais mis un ; en lieu et place de la virgule:rolleyes: C'est corrigé
 
Dernière modification par un modérateur:

pierrejean

XLDnaute Barbatruc
Re : Trouver la lettre de la colonne de la cellule active

Bonjour Sofhy

Etudies ceci

Code:
Sub Ma_Macro()
Dim Y As String
Range("B1").Select
Selection.End(xlToRight).Offset(1, 0).Select
Y = Replace(Selection.Address(0, 0), Selection.Row, "")
MsgBox (Y)
End Sub
 
edit : salut Hasco
 

Sofhy

XLDnaute Occasionnel
Re : Trouver la lettre de la colonne de la cellule active

Bonjour Hasco, Bonjour PierreJean,

Les deux fonctionnes à merveille.

@Hasco
Avant ton edit, j'avais recherché sur Internet la fonction Split et du coup j'avais pu corriger. Et j'ai vu que si je mettais (2) au lieu de (1), il rapportait le numéro de la ligne.

@PierreJean
Je n'ai rien trouvé de très probant sur internet ou l'aide Excel concernant la fonction. Je sais que Selection.Address(0, 0) permet de retirer les $$. Mais comment fonctionne replace ? (histoire de comprendre :eek:)

Merci à vous deux et bonne journée,
Sophie
 

pierrejean

XLDnaute Barbatruc
Re : Trouver la lettre de la colonne de la cellule active

Re
x=replace(A,b,c)
x vaut A dans lequel on a remplacé b par c
Dans la macro fournie
Adress(0,0) ote les $ et replace ote le numero de ligne : ne reste donc que la (ou les ) lettre(s)
ote =remplace par ""
 

CB60

XLDnaute Barbatruc
Re : Trouver la lettre de la colonne de la cellule active

Bonjour
Il y a ça aussi.
HTML:
Sub Ma_Macro()
Dim Y As String
Range("B1").Select
Selection.End(xlToRight).Offset(1, 0).Select
Y = Chr(64 + Selection.Column())
MsgBox Y
End Sub
 

CB60

XLDnaute Barbatruc
Re : Trouver la lettre de la colonne de la cellule active

re
J'ai mis les trois macro sur le fichier et elle me donne la même info??
 

Pièces jointes

  • dernierexltoright.zip
    7.7 KB · Affichages: 86
  • dernierexltoright.zip
    7.7 KB · Affichages: 90
  • dernierexltoright.zip
    7.7 KB · Affichages: 96

pierrejean

XLDnaute Barbatruc
Re : Trouver la lettre de la colonne de la cellule active

Re

@ Bruno

Teste comme ceci (la macro retourne plus d'une lettre)

@ Jean-Marcel

Valable pour Excel anterieur a 2007 (a partir de 2007 possibilité de 3 lettres ex: XFD)
 

Pièces jointes

  • dernierexltoright.zip
    14.5 KB · Affichages: 93
  • dernierexltoright.zip
    14.5 KB · Affichages: 88
  • dernierexltoright.zip
    14.5 KB · Affichages: 97
Dernière édition:

Sofhy

XLDnaute Occasionnel
Re : Trouver la lettre de la colonne de la cellule active

Bonjour à tous,

Après les explications de Pierre-Jean, je n'ai pas suivi la vie du post.
Merci CB60, Jean-Marcel et Pierre-Jean pour ces nouveaux codes.

Bonne journée,
:D Sofhy
 

Staple1600

XLDnaute Barbatruc
Re : Trouver la lettre de la colonne de la cellule active

Bonjour à tous

Histoire de faire un petit coucou à ROGER2327

Voir ici sa jolie fonction VBA (qui fonctionne aussi pour XL2K7 et XL2KX)
Lien supprimé

Un amical salut à pierrejean (qui d'ailleurs participa au fil cité ci-dessus)

et un salut groupé pour les autres
 

paoloadv

XLDnaute Nouveau
Bonjour,
Ce sujet étant atemporel (ou presque!), voici les 3 formules que j'ai concocté, sans usage de VBA...
1e formule:
Si la colonne n'excède pas la 26e (colonne Z), on peut écrire:
=INDEX({"A";"B";"C";"D";"E";"F";"G";"H";"I";"J";"K";"L";"M";"N";"O";"P";"Q";"R";"S";"T";"U";"V";"W";"X";"Y";"Z"};MIN(COLONNE();26))
La syntaxe est surtout un bon prétexte à l'usage d'une constante matricielle dans une formule.

Explication:
La fonction COLONNE() retourne l'indice de la colonne de la cellule. La fonction MIN(COLONN();26) limite à 26 la valeur de l'indice retourné. La fonction INDEX() va permettre de ressortir de la matrice des lettres de "A" à "Z" la lettre à la position indiquée par le numéro de colonne retourné (limité à la 26e). Pour avoir plus de colonne, il suffirait d'agrandir la matrice avec la suite "AA";"AB";"AC"... et d'augmenter la limitation du numéro de colonne relevé à la taille de la matrice.

2e formule, tout à fait générique:
=STXT(ADRESSE(LIGNE();COLONNE();1;1);2;TROUVE("$";ADRESSE(LIGNE();COLONNE();1;1);2)-2)

Explication:
La fonction LIGNE() retourne l'indice de la ligne de la cellule. Avec LIGNE() et COLONNE() en argument de la fonction ADRESSE(), on récupère l'adresse absolue de la cellule au format $A$1. Il suffit d'en extraire les lettres, entre deux "$" et le tour est joué! Pour ce faire, la fonction TROUVE() retourne la position du second caractère "$" recherché dans l'adresse retournée afin d'en déduire la taille de la chaine à récupérer avec la fonction STXT() (en décalant de 1 le résultat de TROUVE() pour prendre la chaine juste avant, et encore de 1 pour ne pas prendre en compte le premier caractère "$" de la chaine, d'où le -2 dans la formule).

3e formule, tout autant générique, encore plus synthétique:
=STXT(ADRESSE(LIGNE();COLONNE();1;1);2;ENT(LOG(COLONNE();27)+1))

Explication:
Cette formule est comme la précédente, mis à part que je calcule la longueur de chaine des lettres à récupérer à partir du 2e caractère (après le premier "$"), en calculant le nombre de "digits" en base 27 (26 lettres de l'alphabet + 1) par la partie entière (ENT()) du logarithme en base 27 (LOG()), augmentée de 1. En effet, en colonne AA, soit la 27e colonne, LOG(27;27)=1. Donc ENT(1+1)=2. Tandisqu'à la colonne 26 (lettre Z), LOG(26;27)<1 donc ENT(LOG(26;27)=0, et ENT(0+1)=1.

Et voilà ! ;^)
 

Discussions similaires

Statistiques des forums

Discussions
311 725
Messages
2 081 943
Membres
101 849
dernier inscrit
florentMIG