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 le Nom d'une cellule


Sujet :

Macros et VBA Excel

  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Mars 2007
    Messages
    261
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2007
    Messages : 261
    Par défaut Trouver le Nom d'une cellule
    Bonjour,

    J'essaye en Vain de trouver le nom d'une cellule que je connais sa ligne et colonne, quelqu'un peut me dire comment faire ?
    Je parle d'une cellule que je lui ai associé un nom par expl : "MaCellule" et non pas A1, A2 etc...

    J'ai essayé de faire ça,

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Cells(MyRow, MyCol + 2).name
    et ça non plus

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Range(Cells(MyRow, MyCol + 2)).Name

    rien ne marche

    j'espère que vous allez m'aider à trouver la bonne instruction

  2. #2
    Membre confirmé
    Profil pro
    Inscrit en
    Septembre 2010
    Messages
    25
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2010
    Messages : 25
    Par défaut
    Bonjour JustGreat

    Tu peux essayer au choix :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    range("A1").offset(MyRow+1, MyCol + 2+1).name
    (le .offset part de 0 il faut donc je pense ajouter +1 à ton code actuel)

    Par contre j'ai du mal à comprendre l'intérêt de récupérer le nom d'une cellule à partir de sa ligne et colonne, peux-tu nous expliquer ce que tu cherches à faire

  3. #3
    Membre Expert
    Avatar de tototiti2008
    Homme Profil pro
    Formateur/développeur
    Inscrit en
    Octobre 2008
    Messages
    1 174
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Formateur/développeur

    Informations forums :
    Inscription : Octobre 2008
    Messages : 1 174
    Billets dans le blog
    2
    Par défaut
    Bonjour à tous,

    un essai :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    Sub test()
    Dim Nam As Name, rep As String
        rep = ""
        For Each Nam In ThisWorkbook.Names
            If Cells(MyRow, MyCol + 2).Name = Nam.RefersTo Then
                rep = Nam.Name
                Exit For
            End If
        Next Nam
        MsgBox rep
    End Sub

  4. #4
    Membre confirmé
    Profil pro
    Inscrit en
    Mars 2007
    Messages
    261
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2007
    Messages : 261
    Par défaut
    Merci pour ta réponse,

    avec ton instruction j'ai exactement la même erreur,

    D'ailleurs je suis sur Office 2007/VB.NET VS 2008

    L'exception COMException n'a pas été gérée par le code utilisateur

    Exception de HRESULT : 0x800A03EC


    Je travaille sur une application en vb.net assez compliquée à expliquer pourquoi j'ai besoin de trouver le nom de cellule à partir de ces coordonnées mais en gros, je me positionne à une position X,Y à partir de la je commence à lire les cellules qui ont pour nom "RPT_variable_" et dès que ce nom change genre ça devient "RPT_toto_" j’ignore les cellules et j’arrête le traitement ...
    Pour résumer, je n'ai pas le choix, j'ai besoin de connaitre le nom des cellules que je parcourt
    ne me demande pas pourquoi, c'est fait comme ça (pas moi qui a créé l’application), et se sont des règles de gestion que je vais pas détailler, ça prend beaucoup de temps.


    Merci encore une fois à vous

    tototiti2008, merci, ton code ne donne pas la même erreur qu'avant mais ça rend tjrs "" donc peux etre ça ne rends pas exactement ce que je cherche ?

  5. #5
    Membre confirmé
    Profil pro
    Inscrit en
    Septembre 2010
    Messages
    25
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2010
    Messages : 25
    Par défaut
    Ok c'est plus clair maintenant

    Je te propose une solution avec une fonction prenant en entrée la ligne et la colonne de la cellule à tester et renvoyant le nom de cellule (ou "" si elle n'existe pas)

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
    function GetName(byval lg_Row as long, byval lg_Col as long) as string
     
    dim str_Name as string
    on error goto NO_NAME:
     
    str_Name=range("A1").offset(lg_row,lg_col).name
    GetName=str_Name
    exit function
    NO_NAME:
    GetName=""
    end function

  6. #6
    Membre Expert Avatar de rvtoulon
    Homme Profil pro
    Agent Technique
    Inscrit en
    Mars 2009
    Messages
    1 042
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 49
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Agent Technique
    Secteur : Santé

    Informations forums :
    Inscription : Mars 2009
    Messages : 1 042
    Par défaut
    Slt,
    un exemple, dans un classeur excel, tu nommes la cellules C3 de cette feuille "TOTO" et tu utilises le code de tototiti2008 dans un module standard de l'éditeur vba d'excel comme ceci :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    Sub test()
    Dim Nam As Name, rep As String
        rep = ""
        For Each Nam In ThisWorkbook.Names
            If Cells(3, 3).Name = Nam.RefersTo Then
                rep = Nam.Name
                Exit For
            End If
        Next Nam
        MsgBox rep
    End Sub
    le msgbox renvoie bien TOTO.

    tu dis :
    Je travaille sur une application en vb.net
    une question me brûle les lèvres: Tu travailles dans l'éditeur VBA de EXCEL ou tu travailles En VB.NET?
    il y a une différence entre VBA et VB.NET.
    Les codes ici sont Du VBA.

  7. #7
    Membre confirmé
    Profil pro
    Inscrit en
    Mars 2007
    Messages
    261
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2007
    Messages : 261
    Par défaut
    tototiti2008, je viens de me rendre compte que ton code c'est pas que ça plante pas, mais il rentre pas dans la boucle donc c'est normal qu'il plante pas

    dans le
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    For Each Nam In wbThisWorkbook.Names
    name est vide donc il rentre pas

  8. #8
    Membre Expert
    Avatar de tototiti2008
    Homme Profil pro
    Formateur/développeur
    Inscrit en
    Octobre 2008
    Messages
    1 174
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Formateur/développeur

    Informations forums :
    Inscription : Octobre 2008
    Messages : 1 174
    Billets dans le blog
    2
    Par défaut
    Bonjour à tous,

    Oui, on s'attend plutôt que tu essayes de les faire tourner en VBA Excel, nos codes

    Pour la conversion en VB.Net, je te laisserais regarder plus tard, moi je ne connais pas

    et en remplaçant

    par

    Comme dans mon code initial, ça donne quoi ?

  9. #9
    Membre Expert
    Homme Profil pro
    Ingénieur systèmes et réseaux
    Inscrit en
    Avril 2008
    Messages
    875
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Ingénieur systèmes et réseaux
    Secteur : Conseil

    Informations forums :
    Inscription : Avril 2008
    Messages : 875
    Par défaut
    en fait pour un objet range donné (ici obj) sa propriété name, renvoie un objet name, et les objets name ont une propriété name qui affiche le nom de l'objet sous forme de texte.

    Donc si obj est un range, le nom de ce range est

    est ce que ça marche comme ça?

  10. #10
    Membre Expert Avatar de rvtoulon
    Homme Profil pro
    Agent Technique
    Inscrit en
    Mars 2009
    Messages
    1 042
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 49
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Agent Technique
    Secteur : Santé

    Informations forums :
    Inscription : Mars 2009
    Messages : 1 042
    Par défaut
    slt,
    bien vu benjile, effectivement, si on nomme ex : la cellule C3 "TOTO" :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    MsgBox Cells(3, 3).Name.Name
    renvoie bien TOTO

  11. #11
    Membre Expert
    Homme Profil pro
    Ingénieur systèmes et réseaux
    Inscrit en
    Avril 2008
    Messages
    875
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Ingénieur systèmes et réseaux
    Secteur : Conseil

    Informations forums :
    Inscription : Avril 2008
    Messages : 875
    Par défaut

  12. #12
    Membre Expert
    Avatar de tototiti2008
    Homme Profil pro
    Formateur/développeur
    Inscrit en
    Octobre 2008
    Messages
    1 174
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Formateur/développeur

    Informations forums :
    Inscription : Octobre 2008
    Messages : 1 174
    Billets dans le blog
    2
    Par défaut
    Bonjour à tous,

    Bien vu Benjie

    Le pire est que ça me dit quelque chose, mais que j'avais oublié

  13. #13
    Membre confirmé
    Profil pro
    Inscrit en
    Mars 2007
    Messages
    261
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2007
    Messages : 261
    Par défaut
    Je viens de me rendre compte que vous m'avez répondu, je vous remercie tous, je vais essayer vos solutions

  14. #14
    Membre confirmé
    Profil pro
    Inscrit en
    Mars 2007
    Messages
    261
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2007
    Messages : 261
    Par défaut
    Finalement la solution (GetName) de AlexL. était exactement ce que je cherchai par contre ça n'a pas fonctionné qu'après avoir ajouter .name.name comme l'a recommandé Benjîle. Ainsi la syntaxe qui a fonctionné

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    str_Name=range("A1").offset(lg_row,lg_col).Name.name
    Merci beaucoup à vous tous, AlexL, tototiti2008, rvtoulon, Benjîle et les autres

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

Discussions similaires

  1. [XL-2007] Trouver le nom d'une cellule
    Par did103 dans le forum Macros et VBA Excel
    Réponses: 5
    Dernier message: 17/12/2011, 12h59
  2. [reseaux] [PERL] Trouver le nom d'une machine à partir d'une adresse IP
    Par LE NEINDRE dans le forum Programmation et administration système
    Réponses: 6
    Dernier message: 16/09/2008, 15h17
  3. VBA_Excel-Pb pour trouver un nom dans une cellule
    Par martiweb dans le forum Macros et VBA Excel
    Réponses: 13
    Dernier message: 01/06/2007, 00h04
  4. [VBA] Enregistrer un classeur avec le nom d'une cellule
    Par zouille dans le forum Macros et VBA Excel
    Réponses: 5
    Dernier message: 03/10/2006, 19h16
  5. Trouver la position d'une cellule
    Par foobar42 dans le forum Macros et VBA Excel
    Réponses: 7
    Dernier message: 10/07/2006, 18h00

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