IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Voir le flux RSS

Pierre Fauconnier

Excel - VBA: Vider un tableau structuré

Noter ce billet
par , 22/04/2020 à 10h59 (3856 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
  2. Avatar de Pierre Fauconnier
    • |
    • permalink
    Bonjour Malick,

    C'est bien tardivement que je réponds à ton intervention. J'espère que tu vas bien

    Merci pour tes encouragements qui me donnent envie de continuer à écrire des billets. On a parfois l'impression d'écrire "pour du vent", et il est donc toujours agréable de savoir que le billet sert à quelqu'un.

    Au plaisir de te croiser sur les forums
  3. Avatar de Baboutz
    • |
    • permalink
    Citation Envoyé par Pierre Fauconnier
    Bonjour Malick,

    C'est bien tardivement que je réponds à ton intervention. J'espère que tu vas bien

    Merci pour tes encouragements qui me donnent envie de continuer à écrire des billets. On a parfois l'impression d'écrire "pour du vent", et il est donc toujours agréable de savoir que le billet sert à quelqu'un.

    Au plaisir de te croiser sur les forums

    Salut Pierre,

    Je suis une personne qui commente rarement mais ça fais plusieurs années que j'apprécie suivre et lire tes billets, j'y cherche souvent les bonnes pratiques à utiliser ! Typiquement, je ne savais pas qu'il était mieux de passer par la plage que feuille + listobject !
    Même si tu en écris moins ces derniers temps, merci pour tout !

    Bonne journée,

    Baboutz