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 :

Rcupérer adresse d'une cellule dans un tableau


Sujet :

Macros et VBA Excel

  1. #1
    Membre habitué Avatar de texas2607
    Homme Profil pro
    Inscrit en
    Juillet 2006
    Messages
    344
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Drôme (Rhône Alpes)

    Informations forums :
    Inscription : Juillet 2006
    Messages : 344
    Points : 159
    Points
    159
    Par défaut Rcupérer adresse d'une cellule dans un tableau
    Bonjour,
    J'ai plusieurs tableau sur une feuille, je sais comment récupérer le nom de chaque tableau en VBA mais j'aurais besoin de récupérer une adresse d'une cellule particulière

    Si je fais la formule :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    ActiveWorkbook.Worksheets("Numéros").ListObjects(1).DataBodyRange.Address
    Dans mon cas cela me donne : $B$4:$E$53 (tableau sans prendre en compte les entetes) c'est OK

    Mais je tourne en rond pour arriver à extraire uniquement le E53 (1ère ligne / dernière colonne de mon tableau)

    Merci pour votre aide
    Loi des Évolutions synchronisées : Les logiciels deviennent de plus en plus lent, et ceci plus vite que le hardware ne devient plus rapide.

  2. #2
    Rédacteur
    Avatar de Philippe Tulliez
    Homme Profil pro
    Formateur, développeur et consultant Excel, Access, Word et VBA
    Inscrit en
    Janvier 2010
    Messages
    12 773
    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 : 12 773
    Points : 28 637
    Points
    28 637
    Billets dans le blog
    53
    Par défaut
    Bonjour,
    Sauf erreur de ma part et selon ton exemple E53, c'est l'adresse de la cellule se trouvant en dernière ligne, dernière colonne du tableau

    Dans l'exemple ci-dessous, le programme affiche la valeur de la cellule se trouvant à la dernière ligne, dernière colonne du tableau structuré nommé tableau1. Il te suffit de remplacer la propriété Value par Address
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    Sub t1()
      '
      Dim oList As ListObject
      Dim NumberOfRows As Long
      Dim NumberOfColumns As Integer
      Set oList = Range("tableau1").ListObject 
      ' 
      With oList
        NumberOfRows = .ListRows.Count: NumberOfColumns = .ListColumns.Count
        With .DataBodyRange
         MsgBox .Cells(NumberOfRows, NumberOfColumns).Value
        End With
      End With
    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

  3. #3
    Membre habitué Avatar de texas2607
    Homme Profil pro
    Inscrit en
    Juillet 2006
    Messages
    344
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Drôme (Rhône Alpes)

    Informations forums :
    Inscription : Juillet 2006
    Messages : 344
    Points : 159
    Points
    159
    Par défaut
    Bonjour et merci de intéresser à mon souci
    Sur mon tableau B4:E53 alors E53 est bien la cellule de la dernière ligne / dernière colonne.

    En fait je me suis mis dedans en faisant ma demande,
    Citation Envoyé par texas2607 Voir le message
    Mais je tourne en rond pour arriver à extraire uniquement le E53 (1ère ligne / dernière colonne de mon tableau)
    C'est pas E53 mais E4. j'ai besoin de trouver l'adresse de la cellule de la 1ere ligne / dernière colonne sans tenir compte des entetes (E4 dans l'exemple)

    Mais j'ai besoin de sortir 3 choses :
    - La colonne (E dans l'exemple)
    - La ligne (4 dans l'exemple)
    - L'adresse (E4 dans l'exemple)

    Sachant que je vais adapter ce code pour d'autres tableaux qui n'ont pas du tout les même nombres de lignes/colonnes mais sur lesquels je dois ressortir les mêmes choses.

    Merci
    Loi des Évolutions synchronisées : Les logiciels deviennent de plus en plus lent, et ceci plus vite que le hardware ne devient plus rapide.

  4. #4
    Rédacteur
    Avatar de Philippe Tulliez
    Homme Profil pro
    Formateur, développeur et consultant Excel, Access, Word et VBA
    Inscrit en
    Janvier 2010
    Messages
    12 773
    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 : 12 773
    Points : 28 637
    Points
    28 637
    Billets dans le blog
    53
    Par défaut
    Bonjour,
    L'exemple que je t'ai donné n'était pas suffisant ?

    Dans l'exemple ci-dessous oList est une variable objet ListObject et on affiche donc l'adresse de la cellule se trouvant en ligne 4, colonne 3 du tableau structuré représenté par la variable objet oList
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    MsgBox oList.DataBodyRange.Cells(4, 3).Address
    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

  5. #5
    Membre habitué Avatar de texas2607
    Homme Profil pro
    Inscrit en
    Juillet 2006
    Messages
    344
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Drôme (Rhône Alpes)

    Informations forums :
    Inscription : Juillet 2006
    Messages : 344
    Points : 159
    Points
    159
    Par défaut
    Citation Envoyé par Philippe Tulliez Voir le message
    et on affiche donc l'adresse de la cellule se trouvant en ligne 4, colonne 3 du tableau structuré représenté par la variable objet oList
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    MsgBox oList.DataBodyRange.Cells(4, 3).Address
    Oui mais si je comprend bien c'est dans le cas où je connais le nombre de colonnes du tableau.
    J'ai des tableaux avec 3, 4, 5, 8 colonnes et +, et sur chacun je veux extraire la cellule de la 1ere ligne/ dernière colonne.
    Je pensais possible d'avoir une formule qui vient me chercher cette cellule quelque soit la taille su tableau.
    je regardai du coté de DataBodyRange.Offset mais j'ai un peu de mal a trouver la bonne syntaxe générique.
    Loi des Évolutions synchronisées : Les logiciels deviennent de plus en plus lent, et ceci plus vite que le hardware ne devient plus rapide.

  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
    12 773
    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 : 12 773
    Points : 28 637
    Points
    28 637
    Billets dans le blog
    53
    Par défaut
    Bonjour,
    Dans ma première réponse, je t'ai montré comment connaître la dernière ligne d'un tableau et sa dernière colonne.
    Que faire de plus.
    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 habitué Avatar de texas2607
    Homme Profil pro
    Inscrit en
    Juillet 2006
    Messages
    344
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Drôme (Rhône Alpes)

    Informations forums :
    Inscription : Juillet 2006
    Messages : 344
    Points : 159
    Points
    159
    Par défaut
    Citation Envoyé par Philippe Tulliez Voir le message
    Bonjour,
    Dans ma première réponse, je t'ai montré comment connaître la dernière ligne d'un tableau et sa dernière colonne.
    Que faire de plus.
    C'est la 1ere ligne / dernière colonne que je cherche


    Edit :
    J'ai modifié en
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    oList.DataBodyRange.Cells(1, NumberOfColumns).Address
    Et ça fonctionne.


    Juste une chose, comment sortir la lettre de la dernière colonne ?
    La formule ci-dessus me sort par exemple $E$4 et je dois sortir le E tout seul.

    Merci
    Loi des Évolutions synchronisées : Les logiciels deviennent de plus en plus lent, et ceci plus vite que le hardware ne devient plus rapide.

  8. #8
    Rédacteur
    Avatar de Philippe Tulliez
    Homme Profil pro
    Formateur, développeur et consultant Excel, Access, Word et VBA
    Inscrit en
    Janvier 2010
    Messages
    12 773
    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 : 12 773
    Points : 28 637
    Points
    28 637
    Billets dans le blog
    53
    Par défaut
    Bonjour,
    La formule ci-dessus me sort par exemple $E$4 et je dois sortir le E tout seul.
    J'avoue ne pas comprendre l'intérêt d'obtenir la lettre de la colonne d'une cellule (son numéro n'est-il pas suffisant ?)

    Bref, il te suffit de définir l'argument ColumnAbsolute de la propriété Address à False et à l'aide des fonctions Instr et left tu pourras extraire la lettre ou encore la fonction Split qui te construira une table qui te permettra de prendre le premier élément de celle-ci.

    Exemple
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    Dim txt As String
    txt = Range("AF50").Address(Columnabsolute:=False)
    MsgBox Left(txt, InStr(txt, "$") - 1)
    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

  9. #9
    Expert confirmé Avatar de Patrice740
    Homme Profil pro
    Retraité
    Inscrit en
    Mars 2007
    Messages
    2 475
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 70
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Retraité
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Mars 2007
    Messages : 2 475
    Points : 5 630
    Points
    5 630
    Par défaut
    Bonjour le fil,
    Citation Envoyé par texas2607 Voir le message
    j'ai besoin de sortir 3 choses :
    - La colonne (E dans l'exemple)
    - La ligne (4 dans l'exemple)
    - L'adresse (E4 dans l'exemple)
    Comme ça :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    Option Explicit
    Sub test()
    Dim oLO As ListObject
    Dim adr As String
    Dim col As String
    Dim lig As Long
      Set oLO = Range("tableau1").ListObject
      With oLO.DataBodyRange
        adr = Split(.Address(0, 0), ":")(0)
        col = Split(Split(.Address, ":")(0), "$")(1)
        lig = Split(Split(.Address, ":")(0), "$")(2)
      End With
    End Sub
    Cordialement,
    Patrice
    Personne ne peut détenir tout le savoir, c'est pour ça qu'on le partage.

    Pour dire merci, cliquer sur et quand la discussion est finie, penser à cliquer sur

Discussions similaires

  1. Récupérer position relative d'une cellule dans un tableau
    Par c.piette dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 24/04/2015, 14h22
  2. Réponses: 3
    Dernier message: 22/03/2007, 13h09
  3. Réponses: 4
    Dernier message: 11/09/2006, 08h29
  4. [VBA] Problème récup texte d'une cellule dans un tableau
    Par Marco le Pouillot dans le forum Macros et VBA Excel
    Réponses: 11
    Dernier message: 30/01/2006, 17h06

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