IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Macros et VBA Excel Discussion :

Récupérer la lettre d’une colonne [XL-2016]


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Homme Profil pro
    Directeur de projet
    Inscrit en
    Juillet 2018
    Messages
    50
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Directeur de projet
    Secteur : Distribution

    Informations forums :
    Inscription : Juillet 2018
    Messages : 50
    Par défaut Récupérer la lettre d’une colonne
    Bonjour,

    J’ai une feuille « Marge », avec X colonnes exemple « Tx1, Tx2 etc. »
    Dans une variable, j’ai le nom d’une colonne qui peut changer à tout moment.

    Je voudrais savoir comment en VBA, on peut récupérer la lettre de la colonne en fonction de ma variable ?

    Bien cordialement.

    MamaB

  2. #2
    Expert confirmé Avatar de BENNASR
    Homme Profil pro
    Responsable comptable & financier
    Inscrit en
    Décembre 2013
    Messages
    2 974
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Tunisie

    Informations professionnelles :
    Activité : Responsable comptable & financier
    Secteur : Finance

    Informations forums :
    Inscription : Décembre 2013
    Messages : 2 974
    Par défaut
    bonjour
    pas claire du tout au moins pour moi
    à reformuler ta demande et si nécessaire un capture écran des données de départ et un capture écran du résultat souhaité
    entre temps si vous aurez une réponse je n'ai que te souhaite la bonne journée

  3. #3
    Membre confirmé
    Homme Profil pro
    Directeur de projet
    Inscrit en
    Juillet 2018
    Messages
    50
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Directeur de projet
    Secteur : Distribution

    Informations forums :
    Inscription : Juillet 2018
    Messages : 50
    Par défaut Récupérer la lettre d’une colonne
    Je m’explique, j’ai une feuille qui s’appelle « Marge », cette feuille contient X colonne, chaque colonne porte un nom :
    Exemple Colonne A contient en ligne 1 le nom TX1
    Colonne B contient en ligne 1 le nom TX2
    Etc.,

    Je voudrais mettre en place une macro qui en fonction du nom de la colonne en ligne 1(via une variable), me ramène la lettre de la colonne concernée pour d’autres traitement.

  4. #4
    Expert confirmé Avatar de BENNASR
    Homme Profil pro
    Responsable comptable & financier
    Inscrit en
    Décembre 2013
    Messages
    2 974
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Tunisie

    Informations professionnelles :
    Activité : Responsable comptable & financier
    Secteur : Finance

    Informations forums :
    Inscription : Décembre 2013
    Messages : 2 974
    Par défaut
    Bonjour
    Si les titres de colonnes en ligne 1 pour récupérer le nom des colonnes :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    Sub récupNomCol()
     
    Dim dercol As Long
    dercol = Cells(1, Cells.Columns.Count).End(xlToLeft).Column
    For i = 1 To dercol
    A = Cells(1, i)
    MsgBox A
    Next i
    End Sub

  5. #5
    Expert éminent Avatar de Menhir
    Homme Profil pro
    Ingénieur
    Inscrit en
    Juin 2007
    Messages
    16 037
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Finistère (Bretagne)

    Informations professionnelles :
    Activité : Ingénieur
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2007
    Messages : 16 037
    Par défaut
    Citation Envoyé par MamaB Voir le message
    Je voudrais mettre en place une macro qui en fonction du nom de la colonne en ligne 1(via une variable), me ramène la lettre de la colonne concernée pour d’autres traitement.
    Es-tu sûr que pour ces "autres traitements", le NUMERO de colonne ne suffirait pas ? Je demande ça parce qu'alors le problème serait beaucoup plus simple.

    Si tu persistes, tu peux essayer ça :
    En supposant que MaCellule est une variable de type Range :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    MaLettre = Split(MaCellule.Address, "$")(1)

  6. #6
    Rédacteur
    Avatar de Philippe Tulliez
    Homme Profil pro
    Formateur, développeur et consultant Excel, Access, Word et VBA
    Inscrit en
    Janvier 2010
    Messages
    13 176
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Formateur, développeur et consultant Excel, Access, Word et VBA

    Informations forums :
    Inscription : Janvier 2010
    Messages : 13 176
    Billets dans le blog
    53
    Par défaut
    Bonjour,
    Je suis du même avis que Menhir. Le numéro de la colonne devrait être suffisant.
    Voici une fonction qui renvoie le numéro de l'étiquette de colonne. La gestion des erreurs n'est pas incluse (Si l'étiquette n'est pas présente)
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    Function LabelColumnNumber(LabelName As String, rngSource As Range) As Integer
      Dim fx As WorksheetFunction
      Set fx = Application.WorksheetFunction
      LabelColumnNumber = fx.Match(LabelName, rngSource.Rows(1), 0)
    End Function
    Exemple d'utilisation shtData est le CodeName de la feuille où se trouve la table nommée tblProject
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    Sub TestLabelColumnNumber()
      Dim rng As Range
      Set rng = shtData.ListObjects("tblProject").Range
      MsgBox "Numéro de la colonne = " & LabelColumnNumber("Projet", rng)
    End Sub
    Philippe Tulliez
    Ce que l'on conçoit bien s'énonce clairement, et les mots pour le dire arrivent aisément. (Nicolas Boileau)
    Lorsque vous avez la réponse à votre question, n'oubliez pas de cliquer sur et si celle-ci est pertinente pensez à voter
    Mes tutoriels : Utilisation de l'assistant « Insertion de fonction », Les filtres avancés ou élaborés dans Excel
    Mon dernier billet : Utilisation de la fonction Dir en VBA pour vérifier l'existence d'un fichier

  7. #7
    Membre Expert
    Homme Profil pro
    PAO
    Inscrit en
    Octobre 2014
    Messages
    2 576
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : PAO
    Secteur : Communication - Médias

    Informations forums :
    Inscription : Octobre 2014
    Messages : 2 576
    Par défaut
    Bonjour à tous,

    Dans le cas où tu veux absolument la lettre voilà une autre méthode :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    Sub LettreColonne()
    Dim MaVarCol As String, AdrCol As Range, Col As String
        MaVarCol = "TX1" ' à tester : "TXT1"
        Set AdrCol = Sheets("Marge").Range("A1:M1").Find(What:=MaVarCol, LookIn:=XlValues, LookAt:=XlWhole)
        If Not AdrCol Is Nothing Then Col = Split(AdrCol.Address, "$")(1) _
                Else MsgBox "Valeur de la variable MaVarCol (Nom : " & MaVarCol & ")  non valide": Exit Sub
        MsgBox Col
        Set AdrCol = Nothing
    End Sub
    Cordialement
    Ryu

    La connaissance s’acquiert par l’expérience, tout le reste n’est que de l’information. – Albert Einstein

    Pensez à la Balise [ CODE][/CODE ] - à utiliser via le bouton # => Exemple

    Une fois votre problème solutionné pensez à mettre :resolu: en n'oubliant pas d'indiquer qu'elle est la solution finale choisie ;)

  8. #8
    Inactif  

    Homme Profil pro
    cuisiniste
    Inscrit en
    Avril 2009
    Messages
    15 374
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : cuisiniste
    Secteur : Bâtiment

    Informations forums :
    Inscription : Avril 2009
    Messages : 15 374
    Billets dans le blog
    8
    Par défaut re
    re
    Citation Envoyé par MamaB Voir le message
    Bonjour,

    J’ai une feuille « Marge », avec X colonnes exemple « Tx1, Tx2 etc. »
    Dans une variable, j’ai le nom d’une colonne qui peut changer à tout moment.

    Je voudrais savoir comment en VBA, on peut récupérer la lettre de la colonne en fonction de ma variable ?

    Bien cordialement.

    MamaB
    perso j'ai rien pigé a la demande
    1. on est sur quoi un tableau structuré ou un range
    2. on parle de quoi de la ligne 1 ou des entetes colonne d'un sheets
    3. tu veux quoi les lettres de la ligne 1 ou celle des entetes colonne du sheets


    la facon dont tu a fait ta demande est ambigues sur ces points et se sont ces memes points qui vont determiner la marche a suivre
    mes fichiers dans les contributions:
    mail avec CDO en vba et mail avec CDO en vbs dans un HTA
    survol des bouton dans userform
    prendre un cliché d'un range

    si ton problème est résolu n'oublie pas de pointer : : ça peut servir aux autres
    et n'oublie pas de voter

  9. #9
    Membre Expert
    Homme Profil pro
    PAO
    Inscrit en
    Octobre 2014
    Messages
    2 576
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : PAO
    Secteur : Communication - Médias

    Informations forums :
    Inscription : Octobre 2014
    Messages : 2 576
    Par défaut
    bonsoir,

    Afin que cela soit prolifique pour tout le monde il serait bien d'expliquer les -1.
    Et si une solution est plus appropriée, merci de nous la faire partager

    Merci
    Cordialement
    Ryu

    La connaissance s’acquiert par l’expérience, tout le reste n’est que de l’information. – Albert Einstein

    Pensez à la Balise [ CODE][/CODE ] - à utiliser via le bouton # => Exemple

    Une fois votre problème solutionné pensez à mettre :resolu: en n'oubliant pas d'indiquer qu'elle est la solution finale choisie ;)

  10. #10
    Expert éminent Avatar de Menhir
    Homme Profil pro
    Ingénieur
    Inscrit en
    Juin 2007
    Messages
    16 037
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Finistère (Bretagne)

    Informations professionnelles :
    Activité : Ingénieur
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2007
    Messages : 16 037
    Par défaut
    Citation Envoyé par RyuAutodidacte Voir le message
    Afin que cela soit prolifique pour tout le monde il serait bien d'expliquer les -1.
    Sans trop m'avancer, je dirais qu'à mon avis, le demandeur n'a pas bien compris la finalité de ces votes.

    Pour info (et pour que ce soit profitable à d'autres), on n'appuie pas sur pour une solution non retenue mais pour une intervention ayant eu un effet négatif sur le sujet ou pour montrer une forte désapprobation.

    Comme ce n'est pas le cas des interventions qui ont été fustigées ici et qu'il serait dommage que des réels efforts soient pénalisés, je plusois pour compenser.

  11. #11
    Expert confirmé
    Homme Profil pro
    Inscrit en
    Août 2010
    Messages
    3 453
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Août 2010
    Messages : 3 453
    Par défaut
    Bonjour,

    Une piste avec recherche de la variable dans la ligne 1 et si trouvée, retour du numéro de colonne et de la ou des lettres de cette dernière :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
     
    Sub Test()
     
        Dim Plage As Range
        Dim Cel As Range
        Dim MaVar As String
     
        MaVar = "Tx8"
     
        With ActiveSheet: Set Plage = .Range(.Cells(1, 1), .Cells(1, .Columns.Count).End(xlToLeft)): End With
     
        Set Cel = Plage.Find(MaVar, , xlValues, xlWhole)
     
        If Not Cel Is Nothing Then
     
            MsgBox "Numéro de colonne : " & Cel.Column _
                   & vbCrLf & _
                   "Lettre(s) de la colonne : " & Split(Cel.Address, "$")(1)
     
        End If
     
    End Sub

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 1
    Dernier message: 17/10/2012, 16h18
  2. Réponses: 2
    Dernier message: 01/10/2008, 11h45
  3. Comment obtenir la lettre-code d’une colonne
    Par RéviAT dans le forum Macros et VBA Excel
    Réponses: 4
    Dernier message: 03/06/2008, 13h53
  4. Réponses: 1
    Dernier message: 10/04/2008, 09h47
  5. Récupérer les « choix » d’une colonne de type choix.
    Par souldav dans le forum SharePoint
    Réponses: 5
    Dernier message: 28/03/2008, 18h59

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo