Voir le flux RSS

Pierre Fauconnier

Excel - VBA: Vider un tableau structuré

Noter ce billet
par , 22/04/2020 à 09h59 (594 Affichages)
Salut.

Dans cette discussion, la demande consistait à pouvoir vider rapidement un tableau structuré en VBA.

La réponse générique que je donne est la suivante et fonctionne pour le classeur actif:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
Sub Table_Clear(Tablename As String)
  If Not Range(Tablename).ListObject.DataBodyRange Is Nothing Then Range(Tablename).ListObject.DataBodyRange.Delete
End Sub
Je préfère passer par la plage plutôt que par la feuille et le listobject ( Worksheets("Feuil1").ListObject("Tableau1") parce que c'est plus générique. Passer par la plage découple la table de données de la feuille qui la supporte, et le code peut donc continuer à fonctionner même après déplacement dans une autre feuille. De plus, l'utilisation du nom d'onglet n'est pas optimale dans ce cas.

Une solution pourrie a été proposée. Elle passe par le Range sans utiliser le listobject, et teste la première cellule du tableau pour éventuellement supprimer. Je passe sur le code sans déclaration, l'absurdité du test et le fait que la "solution" aurait au moins pu utiliser un argument plutôt que le nom en dur... (Y en a, j'vous jure). Je préfère toujours travailler avec les outils adéquats, et donc utiliser le ListObject du range plutôt que de passer uniquement par le range. Je le démontre dans ce billet qui donne la solution de comptage des lignes d'un tableau structuré.

Lorsque l'on manipule la structure de tables de données en VBA, il me semble pertinent de travailler avec le ListObject. Et l'on essaiera toujours de programmer de façon générique, ce qui permettra une réutilisation du code, une formalisation de son approche et une systématisation de codage.

Bon travail avec Excel et VBA

Envoyer le billet « Excel - VBA: Vider un tableau structuré » dans le blog Viadeo Envoyer le billet « Excel - VBA: Vider un tableau structuré » dans le blog Twitter Envoyer le billet « Excel - VBA: Vider un tableau structuré » dans le blog Google Envoyer le billet « Excel - VBA: Vider un tableau structuré » dans le blog Facebook Envoyer le billet « Excel - VBA: Vider un tableau structuré » dans le blog Digg Envoyer le billet « Excel - VBA: Vider un tableau structuré » dans le blog Delicious Envoyer le billet « Excel - VBA: Vider un tableau structuré » dans le blog MySpace Envoyer le billet « Excel - VBA: Vider un tableau structuré » dans le blog Yahoo

Commentaires

  1. Avatar de Malick
    • |
    • permalink
    Bonjour Pierre,

    Merci bien pour la contribution

    En te relisant encore, j'ai vérifié mon outil et je me rends compte que j'ai sûrement fait une bourde sur un autre script qui touche les tableaux structurés.

    En fait, en voulant importer le contenu d'un tableau se trouvant sur un autre classeur, j'ai utilisé ListObject, mais pour le collage des données, je suis passé par le range en me positionnant sur la première cellule de la Ligne 1 du tableau de destination. Cela fonctionne bien, mais j'imagine que ce n'est pas la bonne manière

    Pour ne pas polluer le fil, je posterai le code sur le forum VBA pour échanger dessus et le corriger

    encore pour l'apprentissage des bonnes manières que tu dispenses nb

    Malick