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 :

Trouver la lettre d'une colonne + 1 (coordonnées sous forme de lettre)


Sujet :

Macros et VBA Excel

  1. #1
    Membre averti
    Inscrit en
    Mai 2007
    Messages
    37
    Détails du profil
    Informations forums :
    Inscription : Mai 2007
    Messages : 37
    Par défaut Trouver la lettre d'une colonne + 1 (coordonnées sous forme de lettre)
    Salut la communauté,

    Je me trouve face à une problématique avec un fichier dont je reprends la "maintenance" et je suis face à un problème qui fait surchauffer mon cerveau de newbie Excel
    J'ai un tableau avec 2 colonnes
    La première est une date (cette info n'est pas importante pour la suite), la seconde est la coordonnée d'une colonne de cellule (sous forme de lettre) pour pouvoir trouver des infos dans une autre feuille
    Ex :
    01/01 A
    08/01 C
    15/01 E
    ....
    09/08 AH
    16/08 AJ
    ...


    Je cherche une formule ou méthode la plus courte pour connaître la coordonnée de la colonne d'à côté
    J'avais pensé convertir la lettre en code ascii puis faire +1, sauf qu'évidemment, quand on passe de Z à AA, ça ne marche plus....
    Je ne veux pas convertir la coordonnées de la cellule en chiffre mais bien arriver à trouver une méthode pour arriver à "coordonnée+1" qui, après Z me donne AA, après AJ me donne AK, ...

    Est-ce faisable ?
    Par avance, merci

  2. #2
    Expert confirmé

    Homme Profil pro
    Curieux
    Inscrit en
    Juillet 2012
    Messages
    5 169
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Curieux
    Secteur : Arts - Culture

    Informations forums :
    Inscription : Juillet 2012
    Messages : 5 169
    Billets dans le blog
    5
    Par défaut
    Bonjour,

    on peut procéder de la sorte :

    - on récupère la valeur de la cellule (la "lettre")
    - on interroge la cellule Cells(1,"la lettre") décalée d'une colonne
    - on coupe l'adresse de cette cellule décalée pour ne conserver que la partie située entre le premier et second "$" ==> ça nous donne la lettre souhaitée


    Test sur une sélection de cellules, à adapter

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    Sub toto()
    Dim Cell As Range
        For Each Cell In Selection.Cells
            Debug.Print Split(Cells(1, Cell.Value).Offset(0, 1).Address, "$")(1)
        Next Cell
    End Sub

  3. #3
    Membre averti
    Inscrit en
    Mai 2007
    Messages
    37
    Détails du profil
    Informations forums :
    Inscription : Mai 2007
    Messages : 37
    Par défaut
    Je pense ne pas être capable d'adapter ton code à ma problématique

    Je vais encore simplifier ma demande
    Une variable que je vais appeler ColLetter contient une lettre qui est la coordonnée d'une cellule sous forme de lettre

    Je souhaiterais juste une formule pour calculer quelle est la prochaine colonne avec la notation sous forme de lettre

    L'énoncé est plus simple comme ça, mais la problématique ne change pas

  4. #4
    Expert confirmé

    Homme Profil pro
    Curieux
    Inscrit en
    Juillet 2012
    Messages
    5 169
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Curieux
    Secteur : Arts - Culture

    Informations forums :
    Inscription : Juillet 2012
    Messages : 5 169
    Billets dans le blog
    5
    Par défaut
    Y'avait pas grand chose à changer

    à placer dans un module standard

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    Function ColSuivante(Source As Range) As String
        ColSuivante = Split(Cells(1, Source.Value).Offset(0, 1).Address, "$")(1)
    End Function
    Nom : dvp_02.png
Affichages : 935
Taille : 4,7 Ko

    Attention, si les lettres dépassent IU la fonction retournera une erreur (la dernière colonne possible étant IV)

  5. #5
    Membre averti
    Inscrit en
    Mai 2007
    Messages
    37
    Détails du profil
    Informations forums :
    Inscription : Mai 2007
    Messages : 37
    Par défaut
    Le offset, c'est juste parce que la fonction est appelé sur la colonne un cran à droite et qu'il faut lire la value un cran à gauche ?

    Juste pour être sûr
    Car encore une fois, je ne veux pas écrire à côté de mon table
    j'ai une variable dans ma macro qui s'appelle toto et je veux juste avoir une seconde variable tutu qui contienne la colonne suivante

  6. #6
    Expert confirmé

    Homme Profil pro
    Curieux
    Inscrit en
    Juillet 2012
    Messages
    5 169
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Curieux
    Secteur : Arts - Culture

    Informations forums :
    Inscription : Juillet 2012
    Messages : 5 169
    Billets dans le blog
    5
    Par défaut
    Fait voir ta procédure, on va aller au plus adéquat

  7. #7
    Membre averti
    Inscrit en
    Mai 2007
    Messages
    37
    Détails du profil
    Informations forums :
    Inscription : Mai 2007
    Messages : 37
    Par défaut
    Bah oublie ma procédure qui contient beaucoup plus de chose que ce que j'ai exposé (notamment parce qu'il y a une liste déroulante sur une sélection qui permet de trouver cette fameuse valeure de colonne)

    Mais je sais pas comment le dire plus simplement que :

    Colonne = x (on se fout de comment le x est récupéré, que ce soit par un input manuellement dans une boite de dialogue ou par choix à travers une liste déroule)
    (exemple : Colonne contient "Z")

    et je cherche juste à avoir ColonneSuiv = FormuleaLaNoix

    Voilà pour ma "procédure" lol

  8. #8
    Expert confirmé

    Homme Profil pro
    Curieux
    Inscrit en
    Juillet 2012
    Messages
    5 169
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Curieux
    Secteur : Arts - Culture

    Informations forums :
    Inscription : Juillet 2012
    Messages : 5 169
    Billets dans le blog
    5
    Par défaut
    ??

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    Sub toto()
    Dim Colonne As String, ColonneSuiv As String
    Colonne = "A"
    ColonneSuiv = Split(Cells(1, Colonne).Offset(0, 1).Address, "$")(1)
    End Sub
    A => B
    B => C
    ...
    AA => AB
    ...
    etc...

  9. #9
    Membre averti
    Inscrit en
    Mai 2007
    Messages
    37
    Détails du profil
    Informations forums :
    Inscription : Mai 2007
    Messages : 37
    Par défaut
    Absolument parfait

    Désolé hein pour mes aller retour alors qu'il n'y avait pas grand chose à adapter mais suis pas à l'aise avec les macros

    Faudra à l'occas que je me pense sur le décorticage de ta commande pour comprendre à quoi chaque option correspond

    Mais en tout cas, un très grand merci pour ton aide précieuse qui m'a fait gagner beaucoup de temps

  10. #10
    Expert confirmé

    Homme Profil pro
    Curieux
    Inscrit en
    Juillet 2012
    Messages
    5 169
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Curieux
    Secteur : Arts - Culture

    Informations forums :
    Inscription : Juillet 2012
    Messages : 5 169
    Billets dans le blog
    5
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Split(Cells(1, Colonne).Offset(0, 1).Address, "$")(1)

    1) Cells(1,Colonne) va renvoyer la première cellule de la colonne qu'on a indiqué (objet Range)
    2) .Offset(0,1) pour se décaler d'une colonne
    3) .Address pour obtenir l'adresse de ce Range décalé
    4) Split() est une fonction qui découpe une chaine de caractère en fonction d'un séparateur
    5) .Address renvoyant une adresse de type "$A$1" ... on split sur le caractère "$"
    6) on prend la seconde portion du split ... d'où le (1) à la toute fin de la ligne

    Split()(0) = "" (vide)
    Split()(1) = LettreColonne
    Split()(2) = Numéro de ligne

  11. #11
    Expert éminent

    Profil pro
    Conseil, Formation, Développement - Indépendant
    Inscrit en
    Février 2010
    Messages
    8 548
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Conseil, Formation, Développement - Indépendant

    Informations forums :
    Inscription : Février 2010
    Messages : 8 548
    Par défaut
    Bonjour
    Citation Envoyé par joe.levrai Voir le message
    Attention, si les lettres dépassent IU la fonction retournera une erreur (la dernière colonne possible étant IV)
    Heu sur xls oui mais depuis 2007 et xlsx c'est XFD la dernière...

  12. #12
    Expert confirmé

    Homme Profil pro
    Curieux
    Inscrit en
    Juillet 2012
    Messages
    5 169
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Curieux
    Secteur : Arts - Culture

    Informations forums :
    Inscription : Juillet 2012
    Messages : 5 169
    Billets dans le blog
    5
    Par défaut
    C'est vrai, quelle andouille

    J'étais sur un vieux xls quand j'ai posté ... no coment

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

Discussions similaires

  1. [Toutes versions] amélioration d'une fonction pour trouver la lettre de la colonne
    Par illight dans le forum Macros et VBA Excel
    Réponses: 14
    Dernier message: 16/12/2013, 15h48
  2. Trouver le max d'une colonne et l'afficher
    Par nuFox dans le forum IHM
    Réponses: 7
    Dernier message: 04/02/2009, 14h29
  3. [E-03] trouver le max d'une colonne et sa cellule associée
    Par kristoch91 dans le forum Macros et VBA Excel
    Réponses: 6
    Dernier message: 02/12/2008, 09h05
  4. trouver le maximum d'une colonne
    Par Scalpyxx dans le forum SAS Base
    Réponses: 7
    Dernier message: 03/09/2008, 17h10
  5. Trouver les tables possédant une colonne précise
    Par keumlebarbare dans le forum Oracle
    Réponses: 2
    Dernier message: 17/10/2006, 13h07

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