Bouton pour effacer plusieurs tableaux d'un seul coup

Bonjour à tous, voici ma demande:

J'aimerais trouver une macro pour que quand j'appuie sur un bouton de commande, cela me supprime le contenu de plusieurs tableau distinct, sachant que le bouton de commande ne se trouve pas dans la même feuille que les tableaux.

Je vous joint le fichier Excel ci-dessous afin d'être plus clair.

Donc, je veut que lorsque je clique sur le bouton "Erase" de la feuille "Bouton", le contenu de tous les tableau se trouvant sur toutes les autres feuille soient supprimés à l'exception de la ligne de référence 0.

6k-copie.zip (279.32 Ko)

bonjour

Sub TousLesTableaux()
     For Each sh In ThisWorkbook.Worksheets
          For Each lo In sh.ListObjects
               With lo
                    If .ListRows.Count Then .DataBodyRange.Delete
               End With
          Next
     Next
End Sub

Référence 0 n'est plus dans les tableaux, parce qu'il n'y a plus de listrows. Autrement, il faut ajouter une ligne après.

cela ne fonctionne pas pour moi

re,

c'est quoi qui ne fonctionne pas ? Les tableaux sont vides, il faut les effacer complètement avec entêtes et tout ou quoi ?

Un petit peu d'explication, svp.

Oui désolée, je n'ai pas été très compréhensif. Votre macro fonctionne mais serait-il possible de réaliser la même action en conservant la police des tableaux qui s'efface lors de l'action et en épargnant la ligne 0, quitte à écrire dans la même macro qu'il faut la rajouter après?

Merci d'avance

donc on efface tout le tableau sauf les entêtes et on ajoute directement une ligne vide ?

Y-a-t-il des formules dans ce tableau ?

Sub TousLesTableaux()
     For Each sh In ThisWorkbook.Worksheets
          For Each lo In sh.ListObjects
               With lo
                    If .ListRows.Count Then .DataBodyRange.Delete: .ListRows.Add     'effacer tout les données et après ajouter une ligne
               End With
          Next
     Next
End Sub

Bonjour,
Le tableau comporte toujours une ligne !...
Et on n'oublie pas de déclarer les variables.

Option Explicit

Public Sub CleanData()
Dim sh As Worksheet, lo As ListObject

     For Each sh In ThisWorkbook.Worksheets
          For Each lo In sh.ListObjects
               With lo
                    'conserve les formules et les mises en forme
                    If .InsertRowRange Is Nothing Then .DataBodyRange.Delete
               End With
          Next
     Next

End Sub

Et on n'oublie pas de déclarer les variables.

cela, c'est comme une religion et moi, je suis infidèle, je le fais encore dans des cas speciaux et rares (et je ne suis pas paresseux).

En outre "option explicit" dit explicitement que c'est une option.

Après ce ".databodyrange.delete", le nombre de "listrows" est 0, mais visuellement il y a une ligne ... , ce "insertrowrange".

".insertrowrange is nothing" quand le databodyrange n'est pas vide, je ne le connaissais pas, merci.

Votre macro de 12:02 donne le même resultat que la mienne de hier 16:58, qui, apparament ne fonctionnait pas.

RE,
@BsAlv,
Je titillais ! (ik prikkelde ?).
Cdlt.

Rechercher des sujets similaires à "bouton effacer tableaux seul coup"