FAQ ExcelConsultez toutes les FAQ

Nombre d'auteurs : 46, nombre de questions : 845, dernière mise à jour : 30 mars 2017 

 
OuvrirSommaireLes tableaux

Il n'y a pas de différence entre les deux. La fonction Liste a été renommée et s'appelle Tableau dans Excel 2007.
Les tableaux facilitent le classement et l'exploitation de vos données. Vous pouvez gérer et analyser les informations dans les limites de la plage spécifiée. Vous pouvez par exemple:
     * Filtrer les colonnes.
     * Ajouter une ligne de totaux.
     * Appliquer un format de tableau.
     * Synthétiser avec un tableau croisé dynamique.
     * Supprimer les doublons.

Pour créer un tableau dans Excel2007, sélectionnez la plage de cellules à convertir. Ouvrez l'onglet Insertion, puis cliquez sur le bouton Tableau dans le groupe Tableaux.


Les noms de tableaux sont accessibles dans le gestionnaire de noms (Onglet Formules/Groupe Noms définis) et aussi visibles dans la liste de saisie semi automatique des formules.
Vous pouvez donc spécifier le nom du tableau (qui est en fait une plage nommée) dans vos formules:
=RECHERCHEV("mimi";Tableau1;3;0)

Créé le 20 août 2007  par SilkyRoad
Vba
Sélectionnez

Sub CreationTableau()
Dim Ws As Worksheet
Dim NomTable As String
 
'xlSrcExternal 0 Source de données externes (site Microsoft Windows SharePoint Services).
'xlSrcQuery 3 Requête
'xlSrcRange 1 Plage
'xlSrcXml 2 XML
 
NomTable = "Table1"
Set Ws = Worksheets("Feuil1")
 
'Un exemple qui prend en compte les cellules voisines à A1
With Ws
    .ListObjects.Add(xlSrcRange, .Range("$A$1").CurrentRegion, , xlYes).Name = NomTable
    .ListObjects(NomTable).TableStyle = "TableStyleMedium5"
End With
 
 
'Un autre exemple qui prend en compte une plage spécifique.
'With Ws
    '.ListObjects.Add(xlSrcRange, .Range("$B$5:$F$30"), , xlYes).Name = NomTable
    '.ListObjects(NomTable).TableStyle = "TableStyleMedium5"
'End With
End Sub




Nota:
Pour supprimer la fonctionnalité d'un tableau, utilisez:

Vba
Sélectionnez

Worksheets("Feuil1").ListObjects("Table1").Unlist
Créé le 20 août 2007  par SilkyRoad
Vba
Sélectionnez

Sub BoucleTableauxFeuille()
Dim Ws As Worksheet
Dim ListObj As ListObject
 
Set Ws = Worksheets("Feuil1")
 
For Each ListObj In Ws.ListObjects
    MsgBox ListObj.Name & " : " & ListObj.Range.Address & vbCrLf & _
    "Style: " & ListObj.TableStyle
Next
End Sub
Créé le 20 août 2007  par SilkyRoad

Dans cet exemple, le tableau se nomme Table1 et contient 4 colonnes.

Vba
Sélectionnez

Sub AjouteLigneTableau()
    Dim ListObj As ListObject
    Dim i As Integer
 
    'Définit le tableau dans la feuille de calcul
    Set ListObj = Worksheets("Feuil1").ListObjects("Table1")
    'Ajoute une ligne
    ListObj.ListRows.Add
 
    'Boucle pour ajouter une info dans chaque cellule de la
    'nouvelle ligne.
    '(dans cet exemple, le tableau contient 4 colonnes)
    For i = 1 To 4
        With ListObj.Range(ListObj.ListRows.Count + 1, i)
            .Value = "info" & i
 
            'Modifie la police
            '.Font.Name = "Comic sans MS"
            'Modifie la taille des cratères
            '.Font.Size = 8
        End With
    Next i
End Sub
Créé le 20 août 2007  par SilkyRoad

Lorsque votre tableau est créé, cliquez sur l'onglet Formules, puis sur le bouton "Gestionnaire de noms" dans le groupe "Noms définis".
Sélectionnez la ligne correspondant au tableau dans la liste, et cliquez sur le bouton "Modifier".
Vous pouvez indiquer vos annotations dans le champ "Commentaire".

Nota:
Vous constatez que cette opération peut être aussi effectuée sur toute plage nommée.


L'exemple ci-dessous montre comment ajouter un commentaire par macro, pour un tableau nommé "Tableau1":

Vba
Sélectionnez

Sub AjoutAnnotationTableau()
 
    'Affecte un commentaire
    Worksheets("Feuil2").ListObjects("Tableau1").Comment = "Mon commentaire"
    'Vérifie le contenu du commentaire
    MsgBox Worksheets("Feuil2").ListObjects("Tableau1").Comment
 
End Sub
Créé le 20 août 2007  par SilkyRoad
Vba
Sélectionnez

Sub TriTableau()
    'Trie par ordre croissant, la deuxième colonne du tableau "Tableau1".
    With ThisWorkbook.Worksheets("Feuil1").ListObjects("Tableau1").Sort
        .SortFields.Clear
        .SortFields.Add Key:=Range("Tableau1[[#All],[Colonne2]]"), _
            SortOn:=xlSortOnValues, Order:=xlAscending, DataOption:=xlSortNormal
        .Header = xlYes
        .MatchCase = False
        .Orientation = xlTopToBottom
        .SortMethod = xlPinYin
        .Apply
    End With
End Sub




Un autre exemple qui tri une colonne à partir de son index dans le tableau :

Vba
Sélectionnez

Sub Test()
    'Feuil3.ListObjects(1) définit le premier tableau de la Feuillle nommée Feuil3
    Tri_Table Feuil3.ListObjects(1), 2
End Sub
 
 
Sub Tri_Table(Tb As ListObject, Col As Integer)
    Dim objCol As Range
 
    'On sort si le nombre de colonnes du tableau est inférieur à la valeur
    'passée à la sous procédure.
    If Tb.ListColumns.Count < Col Then Exit Sub
 
    'Définit le champ à trier dans le tableau
    Set objCol = Tb.ListColumns(Col).Range
 
    With Tb.Sort
        'Supprime les tris existants
        .SortFields.Clear
        'Ajoute un nouveau tri
        .SortFields.Add objCol, xlSortOnValues, xlAscending
        'Indique si la première ligne contient les en-têtes
        .Header = xlYes
        'Utilisez True pour exécuter un tri qui respecte la casse
        .MatchCase = True
        'Applique le tri
        .Apply
    End With
 
End Sub
Mis à jour le 18 novembre 2008  par SilkyRoad
Vba
Sélectionnez

Sub FiltreTableau()
    'Filtre la deuxième colonne du tableau (Field:=2), pour les
    'données commençant par la lettre "A". La procédure n'est pas
    'sensible à la casse.
    Worksheets("Feuil1").ListObjects("Tableau1").Range.AutoFilter _
        Field:=2, Criteria1:="=A*"
 
    'Renvoie la plage de cellules visibles après l'application du filtre.
    MsgBox Worksheets("Feuil1").ListObjects("Tableau1").Range.Cells. _
    SpecialCells(xlCellTypeVisible).Cells.Address
End Sub
Créé le 5 décembre 2007  par SilkyRoad

Placez le curseur de la souris dans l'angle inférieur droit du tableau, sur le symbole bleu, jusqu'à l'affichage d'une double flèche inclinée. Ensuite, gardez enfoncé le clic gauche de la souris et déplacez la sélection de cellules pour modifier la dimension du tableau.

Image non disponible

Créé le 5 décembre 2007  par SilkyRoad

Faites un clic droit dans le tableau.
Sélectionnez "Table".
L'option "Convertir en plage" permet de transformer le tableau en plage de cellule standard tout en conservant le format de style qui était appliqué au tableau.
Vous pouvez ensuite supprimer la mise en forme.

Créé le 26 mai 2008  par SilkyRoad

Lorsque vous saisissez une donnée contigüe (par exemple sous un tableau) et que vous appuyez sur la touche "Entrée", un nouvel enregistrement est intégré automatiquement à la table.

Pour annuler cette action :
Cliquez sur la balise active d'options de correction automatique qui s'affiche dès que l'enregistrement est inséré.

L'option "Annuler le développement automatique du tableau" supprime l'ajout de la nouvelle ligne dans le tableau (Si vous recliquez sur la balise active, l'option devient "Répéter le développement automatique du tableau").
L'option "Arrêter le développement automatique des tableaux" empêche tout nouvel ajout automatique dans le tableau.
L'option "Contrôler les options de correction automatique" permet d'afficher l'onglet "Mise en forme automatique au cours de la frappe", de la boîte de dialogue "Correction automatique". Elle contient les paramètres pour l'intégration automatique des nouveaux enregistrements dans le tableau.


Une autre méthode pour afficher la fenêtre "Correction automatique" :
Cliquez sur le bouton "Office".
Cliquez sur le bouton "Options Excel".
Sélectionnez le menu "Vérification".
Cliquez sur le bouton "Options de correction automatique". Sélectionnez l'onglet "Mise en forme automatique au cours de la frappe".
Décochez l'option "Inclure de nouvelles lignes et colonnes dans le tableau automatiquement" qui permet de définir le développement automatique du tableau lorsque vous écrivez dans les cellules contigües au tableau.
Cliquez sur le bouton OK pour valider.


Nota :
L'ajout de nouvelles colonnes fonctionne sur le même principe que pour l'insertion de nouvelles lignes.

Créé le 26 mai 2008  par SilkyRoad

Sélectionnez une des cellules dans la plage de données.
Utilisez le raccourci clavier Ctrl + Maj + L.
Toutes les cellules contigües à la cellule active sont intégrées dans un nouveau tableau.

Créé le 26 mai 2008  par SilkyRoad

Ce n'est pas possible.
Une solution palliative consiste à exporter le contenu du tableau sur un site SharePoint afin que les autres utilisateurs puissent lire et modifier ces données depuis le serveur. Vous pouvez ensuite synchroniser les données du tableau Excel avec les données partagées dans SharePoint pour que ces données soient constamment actualisées.

Créé le 26 mai 2008  par Microsoft
Vba
Sélectionnez

Sub Test()
    'Récupère le type de source pour le premier tableau de la feuille active
    MsgBox Table_TypeSource(ActiveSheet.ListObjects(1))
End Sub
 
 
Function Table_TypeSource(listObj As ListObject) As String
    Select Case listObj.SourceType
        Case xlSrcExternal: Table_TypeSource = "Source de données externes SharePoint" '0
        Case xlSrcQuery: Table_TypeSource = "Requête" '3
        Case xlSrcRange: Table_TypeSource = "Plage de cellules" '1
        Case xlSrcXml: Table_TypeSource = "Fichier XML" '2
    End Select
 
    Table_TypeSource = Table_TypeSource & vbCrLf & listObj.Name
End Function
Créé le 20 septembre 2008  par SilkyRoad

Lorsque vous êtes dans la dernière cellule de la dernière colonne (hors ligne de totaux), utilisez la touche clavier "Tabulation".
Un nouvel enregistrement est inséré dans le tableau. Il ne vous reste plus qu'à compléter les informations dans la ligne.

Créé le 22 mars 2009  par SilkyRoad

Sous Excel2007, il n'est pas possible d'utiliser la donnée d'une liste de validation directement dans une référence structurée de tableau.
Pour contourner ce problème, vous pouvez mettre en oeuvre les fonctions INDEX et EQUIV.

Par exemple, vous disposez d'un tableau nommé 'Tableau1', qui commence dans la cellule A1, et d'un menu déroulant en H3, qui contient la liste des en-têtes du tableau de données.
Vous désirez extraire des données du tableau, en fonction du nom d'en-tête sélectionné dans la liste de validation :

La formule suivante renvoie la 8ième ligne de la colonne choisie dans la liste da validation :
=INDEX(Tableau1[#Tout];8;EQUIV(H3;Tableau1[#En-têtes];0))

Une formule qui renvoie la valeur maxi de la colonne choisie dans la liste da validation :
=MAX(DECALER(A1;0;EQUIV(H3;Tableau1[#En-têtes];0)-1;LIGNES(Tableau1[#Données]);1))

Nota :
Le dernier exemple est indicatif. vous pouvez également obtenir la valeur maxi en utilisant les fonctions 'Totaux' d'un tableau.

Créé le 22 mars 2009  par SilkyRoad

Cet exemple montre comment placer les en-têtes d'un tableau dans une liste de validation.

En suivant le mode opératoire ci-dessous, le contenu de la liste de validation sera automatiquement redimensionné si vous ajoutez ou supprimez des colonnes dans le tableau de données.

Vous allez tout d'abord nommer la plage de données qui va être utilisée pour la liste de validation. Il s'agit dans notre cas de la première ligne du tableau, contenant le nom des champs, et qui peut être définie par la référence structurée : Tableau1[#En-têtes].

Sélectionnez l'onglet Formules.
Cliquez sur le bouton 'Définir un nom' dans le groupe 'Noms définis'.
Dans le champ 'Nom', indiquez le nom donné à la plage de cellules. Par exemple : ListeChamps.
Dans le champ 'Fait référence à : ', indiquez la référence structurée du tableau : Tableau1[#En-têtes].
Cliquez sur le bouton OK pour valider.

Ensuite, sélectionnez la cellule qui va recevoir la liste de validation.
Sélectionnez l'onglet 'Données'.
Cliquez sur le bouton 'Validation des données' dans le groupe 'Outils des données'.
Sélectionnez l'onglet "Options".
Choisissez 'Liste' dans le champ 'Autoriser'.
Dans le champ 'Source', indiquez le nom que vous avez donné à la plage de cellules, précédé du signe égal (=ListeChamps).
Cliquez sur le bouton OK pour valider.

Créé le 22 mars 2009  par SilkyRoad
  

Les sources présentées sur cette page sont libres de droits et vous pouvez les utiliser à votre convenance. Par contre, la page de présentation constitue une œuvre intellectuelle protégée par les droits d'auteur. Copyright © 2009 Developpez Developpez LLC. Tous droits réservés Developpez LLC. Aucune reproduction, même partielle, ne peut être faite de ce site et de l'ensemble de son contenu : textes, documents et images sans l'autorisation expresse de Developpez LLC. Sinon vous encourez selon la loi jusqu'à trois ans de prison et jusqu'à 300 000 € de dommages et intérêts.