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 :

Tester l'existence d'un tableau sur une feuille


Sujet :

Macros et VBA Excel

  1. #1
    Membre régulier Avatar de Markos22
    Homme Profil pro
    Développeur Java
    Inscrit en
    Juillet 2016
    Messages
    198
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 59
    Localisation : France, Val d'Oise (Île de France)

    Informations professionnelles :
    Activité : Développeur Java

    Informations forums :
    Inscription : Juillet 2016
    Messages : 198
    Points : 84
    Points
    84
    Par défaut Tester l'existence d'un tableau sur une feuille
    Bonjour à tous,

    Afin de copier et traiter des données dans une plage Excel, je souhaite la transformer en tableau. Je fais donc :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    ActiveSheet.ListObjects.Add(xlSrcRange).Name = "Tableau1"
    Ça marche parfaitement. Le problème survient lorsque je veux réutiliser la même macro quand ce tableau est déjà créé. Je souhaite donc dire quelque chose comme :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    If Not Exists Range("Tableau1")
         ActiveSheet.ListObjects.Add(xlSrcRange).Name = "Tableau1"
    End If
    Mais ce code n'existe pas. Comment dois-je faire ?

    Merci de votre aide.

  2. #2
    Expert éminent

    Homme Profil pro
    Curieux
    Inscrit en
    Juillet 2012
    Messages
    5 073
    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 073
    Points : 9 853
    Points
    9 853
    Billets dans le blog
    5
    Par défaut
    Bonjour,

    si ta feuille ne possède qu'un tableau (ou zéro), tu peux interroger ainsi :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    ActiveSheet.ListObjects.Count
    renvoie le nombre de tableaux de la feuille active

    et pour une fonction personnalisée

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    Function TabExiste(LaFeuille As Worksheet) As Boolean
        TabExiste = LaFeuille.ListObjects.Count > 0
    End Function
    qui renverra FAUX s'il n'y a aucun tableau sur LaFeuille

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    If Not TabExiste(ActiveSheet) Then

    En cas de multiples tableaux, on complexifie la recherche en balayant les tableaux et en interrogeant leur nom

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    Function TabExiste(NomTableau As String, LaFeuille As Worksheet) As Boolean
    Dim Tableau As ListObject
        For Each Tableau In LaFeuille.ListObjects
            If Tableau.Name = NomTableau Then
                TabExiste = True
                Exit Function
            End If
        Next Tableau
    End Function
    qu'on appelle ainsi

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    If Not TabExiste("Tableau1", ActiveSheet) Then

  3. #3
    Membre régulier Avatar de Markos22
    Homme Profil pro
    Développeur Java
    Inscrit en
    Juillet 2016
    Messages
    198
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 59
    Localisation : France, Val d'Oise (Île de France)

    Informations professionnelles :
    Activité : Développeur Java

    Informations forums :
    Inscription : Juillet 2016
    Messages : 198
    Points : 84
    Points
    84
    Par défaut
    Bonjour joe.levrai,

    Merci pour ta réponse très complète. La solution était simple. Je me sens un peu bête de ne pas y avoir pensé moi-même. Attribuons cela à mon manque d'habitude à manipuler ce langage...

    A +

  4. #4
    Expert éminent

    Homme Profil pro
    Curieux
    Inscrit en
    Juillet 2012
    Messages
    5 073
    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 073
    Points : 9 853
    Points
    9 853
    Billets dans le blog
    5
    Par défaut
    Il est beaucoup plus pratique et habile de travailler sur l'objet "Tableau" (ListObject appartenant à la collection ListObjects) que sur l'objet Range matérialisant le tableau sur la feuille de calcul.

    Ca t'évite de trier les Plages nommées et les Tableaux structurés

  5. #5
    Membre régulier Avatar de Markos22
    Homme Profil pro
    Développeur Java
    Inscrit en
    Juillet 2016
    Messages
    198
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 59
    Localisation : France, Val d'Oise (Île de France)

    Informations professionnelles :
    Activité : Développeur Java

    Informations forums :
    Inscription : Juillet 2016
    Messages : 198
    Points : 84
    Points
    84
    Par défaut
    En effet, c'est pour ça que j'ai préféré transformer la plage en tableau. En fait, je travaille sur des macros à créer en utilisant des données figurant sur une extraction Excel d'une base de données (en copiant des données sur le classeur où je crée cette macro). C'est pourquoi je souhaite toucher le moins possible au tableau source (l'extraction), de façon à ce que mes macros fonctionnent avec n'importe quelle nouvelle extraction. Mais sans transformer la source en tableau, c'est vraiment trop galère. D'où cette petite transformation.

    Merci encore pour tes conseils.

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

Discussions similaires

  1. [XL-2010] VBA Autoriser le filtre d'un tableau sur une feuille protégée
    Par praucq dans le forum Macros et VBA Excel
    Réponses: 1
    Dernier message: 09/03/2012, 10h09
  2. [Vxi3] Centrer un tableau sur une feuille
    Par Christophe29 dans le forum Webi
    Réponses: 4
    Dernier message: 19/03/2010, 16h55
  3. Réponses: 9
    Dernier message: 04/04/2007, 11h16
  4. Tester l'existence d'un package depuis une appli.net
    Par meuledor dans le forum Oracle
    Réponses: 3
    Dernier message: 27/09/2005, 16h18
  5. Tester l'existence d'un champ dans une table
    Par Oluha dans le forum MS SQL Server
    Réponses: 4
    Dernier message: 05/09/2005, 11h19

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