Recherche de la lettre d'une colonne

Bonsoir,

Pour diverses raisons, j'ai besoin de déterminer la lettre d'une colonne.

Je procède ainsi :

Sub Lettre_Colonne()

    Const Col As String = "Département"
    Dim Lettre_Col As String

    Rows(1).Find(What:=Col, LookAt:=xlWhole).Activate
    Lettre_Col = Split(Selection.Address, "$")(1)
    MsgBox Lettre_Col_Tri1

End Sub

Parfois j'obtiens P (sans":"), parfois j'obtiens P: (avec ":").

J'en appelle aux spécialistes.

Merci pour leur aide toujours précieuse.

... et résolu depuis la nuit des temps...

Que veux-tu exactement?

Quand vas-tu lâcher le morceau?

A+

Bonsoir Jean-Eric et Curulis57,

Je n'ai pas compris vos réponses. En tout cas, elles ne m'aide pas.

Manifestement, je vous ai énervé.

Désolé.

Je trouverai bien la solution à mon problème. Mais je pensais que ça serait sur ce site.

Merci quand même.

Salut Dach2,

on t'a déjà donné la solution mais tu ne veux pas la voir!

Donc, présente-nous un fichier avec ton problème et ce que tu cherches comme solution.

Bref, du concret pour que ça avance!

A+

OK,

Je vais reprendre les notifications précédentes.

Quand on débute, on ne comprend pas toujours bien les réponses.

Désolé de vous avoir importuné.

Merci pour le temps consacré.

Bonne nuit.

Bonjour,

comment veux-tu qu'on le sache sans savoir la sélection obtenue dans chaque cas.

Met un espion sur Selection.Address, tu fais en pas à pas et à mon avis tu auras la réponse tout de suite.

Quand on débute apprendre à déboguer est important vu qu'on fait plein d'erreurs.

(avec tout ce qu'on a dit je m'étonne de trouver encore .Select. Tu demandes mais en fait tu te moques un peu beaucoup des conseils...)

eric

Bonsoir Dach2, le forum,

je te propose d'essayer ce code VBA :

Option Explicit

Sub Lettre_Colonne()
  Const Col As String = "Département"
  Dim celX As Range
  Set celX = Rows(1).Find(What:=Col, LookAt:=xlWhole)
  If celX Is Nothing Then
    MsgBox Col & " n'a pas été trouvé"
  Else
    MsgBox Col & " a été trouvé en colonne " _
      & celX.Column & ", ligne " & celX.Row
  End If
End Sub

dhany

Bonjour à tous,

Pour avoir la colonne en lettre ...

Une variante du code de curulis57 dans ce fil : https://forum.excel-pratique.com/viewtopic.php?f=2&t=112889

Un MsgBox donnera la réponse...

Option Explicit

Sub TrouveColonneEnLettre()
Dim iCol As Integer
Dim Scol As String
Dim Cancel As Boolean

Cancel = True
On Error Resume Next
iCol = Cells.Find(What:="Département", LookAt:=xlWhole).Column
If iCol > 0 Then
    Scol = Split(Columns(iCol).Address(ColumnAbsolute:=False), ":")(1)
    MsgBox Scol
End If
On Error GoTo 0

End Sub

ric

Bonsoir Eriiic,

1 - Je ne vois pas de .Select dans le code de mon post.

2 - Si je me moquais des conseils donnés, je ne posterai pas.

Ce site serait-il réservé à une élite ?

Si je m'acharne, c'est que le conseil qui m'a été donné précédemment :

sCol = Split(Columns(Target.Column).Adress(ColumnAbsolute:=False), ":")(1)

ne fonctionne pas (erreur 424). Il est donc normal que je continue à chercher.

En revanche, j'ai fini par trouvé ceci, qui fonctionne parfaitement (j'avoue que c'est un affreux copier/coller) :

sCol = Left(ActiveCell.Address(ColumnAbsolute:=False), (ActiveCell.Column < 27) + 2)

Mais cela n'est peut-être pas très académique. Ton avis m'intéresse.

Cool.

@Dach2

lis mon message précédent : https://forum.excel-pratique.com/viewtopic.php?p=677425#p677425


puis essaye aussi cela :

Sub Essai()
  MsgBox Split(Cells(1, 256).Address, "$")(1)
End Sub

note que la cellule utilisée est en ligne 1, colonne 256, et ça retournera "IV" car c'est la lettre de colonne que tu cherches.


pour l'exemple de mon message précédent, tu peux mettre :

MsgBox Split(celX.Address, "$")(1)

ça retournera la lettre de colonne du mot Col trouvé, donc du mot "Département".

dhany

Merci Dhany, Merci Ric pour votre sollicitude.

Je crois que j'ai encore à découvrir avec l'instruction Split.

Bonne nuit.

Bonjour à tous,

Absolument, ça fonctionne bien aussi.

Sub Lettre_Colonne()
Const Col As String = "Département"
Dim celX As Range

Set celX = Rows(1).Find(What:=Col, LookAt:=xlWhole)
If celX Is Nothing Then
    MsgBox Col & " n'a pas été trouvé"
Else
    MsgBox Split(celX.Address, "$")(1)
End If
End Sub

ric

@Dach2

merci pour ton retour ! bonne nuit !

dhany

@ric

merci pour ta confirmation ! bonne nuit à toi aussi !

dhany

Bonsoir Eriiic,

1 - Je ne vois pas de .Select dans le code de mon post.

2 - Si je me moquais des conseils donnés, je ne posterai pas.

Ce site serait-il réservé à une élite ?

Que vient faire l'élite ici ? Tu as eu une remarque en ce sens ?

.Activate et .Select, même combat.

Avec A1 de sélectionné et fait [B12:C15].Activate et dis moi la différence avec .Select.

En gardant [B12:C15] de sélectionné maintenant fait [C13].Activate, là tu verras la différence.

L'un comme l'autre on ne le fait que si on est obligé (parce qu'excel le veut sinon erreur)

eric

Rechercher des sujets similaires à "recherche lettre colonne"