Developpez.com - Rubrique Excel

Le Club des Développeurs et IT Pro

Apprendre à utiliser les tableaux structurés d'Excel : création, manipulations et avantages,

Un tutoriel de Pierre Fauconnier

Le 2018-12-23 10:37:38, par Pierre Fauconnier, ResponsableOffice & Excel
Salut.

Je vous propose mon nouveau tutoriel: Les tableaux structurés Excel.

Tout savoir sur la création, la manipulation et les avantages des tableaux structurés Excel, aussi appelés tables de données.

Les tableaux structurés vous aident à gérer et analyser vos données de façon sûre, simple et pérenne.

Apparues très timidement dans la version 2003, les listes de données permettaient à une plage de saisie de s’agrandir dès l’ajout de nouvelles données. L’accès à l’outil était caché dans un sous-menu et, de ce fait, les listes étaient peu connues et donc peu utilisées. La version 2007 a mis au jour cet outil dans une version rafraîchie quoiqu’un peu verbeuse, mais l’apparition des tableaux structurés justifiait à elle seule le passage à cette nouvelle version. L’engouement des utilisateurs fut cependant unanime et la version 2010 exposa un outil mature et efficace. L’outil acquérait de nouvelles fonctionnalités en 2013 et 2016 et il est aujourd’hui un élément incontournable d’une utilisation professionnelle d’Excel.

Dans ce premier tutoriel, vous vous familiariserez avec la création et la manipulation des tableaux structurés dans l’environnement Excel.
Critiques et remarques bienvenues, dans l'esprit constructif de DVP...
  Discussion forum
29 commentaires
  • 78chris
    Expert éminent sénior
    Bonjour

    Très beau boulot et chouette cadeau de Noël .

    Bien qu'utilisant et vantant quotidiennement les tableaux structurés, j'y ai même découvert 2 choses !

    Juste 3 infos qui pourraient être ajoutées (à moins que ma lecture n'ait pas été assez attentive)
    • Quand la cellule active est dans un grand tableau dont le haut n'est pas affiché, l'en-tête de celui-ci remplace les lettres des colonnes à l'affichage, ce qui évite de figer inutilement la ligne supérieure via les volets
    • Si on paramètre les formules de la ligne de total, si on désactive celle-ci, les formules sont conservées et réapparaissent quand on réactive (sans doute la même logique que celle décrite pour modéliser un tableau).
    • Les outils comme PowerPivot et PowerQuery ne fonctionnent correctement que si les données traitées issues du classeur sont sous forme de tableau et non de plage.
  • Pierre Fauconnier
    Responsable Office & Excel
    Salut.

    Merci pour ces appréciations... Toujours intéressant de savoir que l'on n'a pas bossé pour rien

    @ Chris et Philippe... J'ai mis à jour suite à vos suggestions (Au passage, merci pour ce regard aiguisé et ces pistes d'amélioration):
    • V-H: J'ai complété les avantages TCD pour étendre à PowerPivot et PowerQuery.
    • V-I: J'ai ajouté le bénéfice des formules mémorisées pour la ligne de total.
    • V-K: J'ai ajouté une note sur l'affichage permanent de la ligne d'entête.
    • VI: J'ai ajouté les raccourcis CTRL++ et CTRL+-.
    • VII-C-2-b: J'ai ajouté une note sur la possibilité d'utiliser INDIRECT.


    @Curt: Problème résolu. Le pdf peut être téléchargé... (Arf... J'ai vu que tu avais vu )

    @Ronan: Peux-tu me renvoyer les liens des discussions par MP? Si autre souci, n'hésite pas à poster une nouvelle discussion sur le forum...

    @Berapard: Le second opus est pratiquement terminé, et les autres suivent. Surveille les annonces sur le portail Excel pour les prochaines publications... .

    L'explorateur d'objet (F2 dans le VBE) te renseignera sur le fait qu'il n'y a pas d'évènements associés à un tableau structuré (ListObject en VBA) en tant que tel (voir copie d'écran ci-dessous).



    Par contre, en primeur sur des bouts de codes (snipets) qui seront donnés dans le deuxième tuto sur les tableaux structurés en VBA, voici deux codes pour tester qu'une cellule, et donc éventuellement la cellule active, fait partie d'un TCD et si oui, lequel.

    Fonction qui reçoit une plage en argument et qui retourne le nom du tableau structuré dont elle fait partie ou une chaine vide si elle est hors tableau. Si une plage multi cellules est passée, il suffit qu'une cellule de ladite plage soit dans le tableau pour que le nom du tableau soit renvoyé
    Code :
    1
    2
    3
    Function getTableNameFromRange(Rng As Range) As String
      If Not Rng.ListObject Is Nothing Then getTableNameFromRange = Rng.ListObject.Name
    End Function
    On peut l'utiliser par exemple comme ceci:
    Code :
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    Sub TestIntersectCellTable()
      Dim Name As String
      
      Name = getTableNameFromRange(ActiveCell)
      If Name = "" Then
        MsgBox "La cellule active n'est pas dans un tableau structuré"
      Else
        MsgBox "La cellule active fait partie du tableau " & Name
      End If
    End Sub


    Si on veut tester que toute la plage en argument fait partie du tableau, on peut utiliser la fonction suivante:
    Code :
    1
    2
    3
    4
    5
    6
    Function getTableNameFromWholeRange(Rng As Range) As String
      If Not Rng.ListObject Is Nothing Then
        If Intersect(Rng, Rng.ListObject.Range).Cells.Count = Rng.Count Then _
          getTableNameFromWholeRange = Rng.ListObject.Name
      End If
    End Function


    On pourrait, sur le même principe, renvoyer le tableau plutôt que son nom. Dans ce cas, la fonction renvoie Nothing si le tableau n'inclut pas la cellule/plage sélectionnée
    Code :
    1
    2
    3
    4
    5
    6
    Function getTableFromWholeRange(Rng As Range) As ListObject
      If Not Rng.ListObject Is Nothing Then
        If Intersect(Rng, Rng.ListObject.Range).Cells.Count = Rng.Count Then _
          Set getTableFromWholeRange = Rng.ListObject
      End If
    End Function
    A bientôt pour la suite
  • Pierre Dumas
    Membre émérite
    Bonjour Pierre

    Je viens seulement de découvrir ce tutoriel (mieux vaut tard que jamais).
    Je suis d'accord avec l'ensemble de ce qui a été écrit. Notamment avec "leur utilisation devienne un réflexe, tant il me semble aberrant, à l’heure actuelle, de rencontrer encore autant d’utilisateurs qui ne les connaissent pas ou qui les utilisent mal".

    Si je puis me permettre, il faudrait mentionner dans le point "IV-C-1-a. Insérer" qu'il peut y avoir ajout de ligne entière dans le cas où un filtre est en cours sur le tableau structuré. Et cela peut avoir donc des conséquences sur le reste de la feuille.
    Ceci étant, on est bien d'accord, il ne devrait rien y avoir à côté d'un tableau structuré

    On pourrait aussi ajouter dans les avantages le fait de pouvoir déplacer les colonnes du tableau et uniquement cette(es) colonne(s). Il suffit de sélectionner la colonne entière du tableau par la petite flèche noire (par deux clics consécutifs et non un double-clic ) puis de glisser la colonne. L'inconvénient est que la largeur des colonnes n'est pas prise en compte.

    Belle journée à chacun d'entre vous

    Pierre
  • Bonjour Pierre,
    C'est toujours un plaisir de prendre connaissance d'un de tes tutoriels
    Malgré ma bonne connaissance des tableaux structurés j'ai tout de même appris et découvert certains aspects de ceux-ci comme par exemple la sélection des données lors de l'apparition de la flèche noire et bien entendu le second clic permettant de sélectionner tout le tableau.

    Je déplore également le fait que l'on ne puisse pas protéger les formules dans un tableau structuré

    Pour la prochaine version de ton tutoriel, deux petites suggestions
    • Chapitre VI - (Raccourcis clavier) Ctrl & + pour ajouter une ligne (ou colonne si l'on sélectionne plus d'une cellule en colonne) et Ctrl & - pour la suppression
    • Chapitre VII -, Si on ne peut effectivement pas utiliser les références structurées dans les outils Mise en forme conditionnelle, validation de données, etc. on peut en revanche les référencer à l'aide de la fonction INDIRECT qui je le conçois bien est à utiliser avec parcimonie puisque c'est une fonction volatile et personnellement je préfère nommer une nouvelle plage qui fait référence à une référence structurée.
      Exemple avec une formule dans la mise en forme conditionnelle
      Code :
      =NB.SI(INDIRECT("T_Stock[Ref]");A2)>1


    Encore bravo pour ce tutoriel et vivement la suite.
  • curt
    Membre émérite
    Bonjour Pierre,

    Je ne peux plus me passer de ces tableaux.
    Il ne me manquait plus qu'un tutoriel…. Merci pour ce cadeau.
    ça me fera un argument de poids pour tenter de convaincre mes collègues TOTALEMENT REFRACAIRES à ces tableaux au motif…. que comme il font ça fonctionne très bien et ce depuis longtemps.

    Excellentes fêtes de fin d'année à tous.
    Curt
  • berapard
    Membre régulier
    Superbe travail de synthèse.
    Les autres tutos annoncés sont-ils dispos ou quand le seront-ils ?
    Je suis pour ma part très intéressé par la manipulation des tableaux en VBA : event, test si cellule active dans un tableau ....

    Encore bravo & belles fêtes
  • Malick
    Community Manager
    Salut,

    Excellent tutoriel qui va servir à plus d'un

    Merci encore
  • WuKoDLaK
    Membre régulier
    bonjour Pierre,

    je vais également en prendre compte.

    j'ai fait beaucoup de recherches ces derniers temps à propos de ces tableaux mais principalement le côté VBA de l'usage.

    Avec des usages tels que [t_bdd] / listObjects("t_bdd" qui diffèrent en écriture, mais il est difficile de déterminer les avantages inconvénients de chacun.

    Également ma topic de l'autre fois à propos du comment définir la position relative/absolue des éléments dans une feuille.

    A très vite.
    Ronan
  • mle007
    Membre à l'essai
    Merciii pour ce travail magnifique. Je ne connais pas grand chose aux tableaux structurés et j’ai donc inscrit celui-ci dans ma todo-list. Pourquoi n’y a t’il que 24h dans une journée. Il y’a tellement de chose à apprendre ?
  • Pierre Fauconnier
    Responsable Office & Excel
    Envoyé par curt
    [...]
    Je ne peux plus me passer de ces tableaux.[...]
    En fait, je me demande comment on a pu s'en passer pendant tout ce temps tellement ils simplifient la vie avec Excel et, comme nous le verrons dans mon prochain tuto, avec VBA également...