XL 2016 Effacer plusieurs tableau en même temps

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

ReneDav14000

XLDnaute Occasionnel
Bonjour le forum,
Dans mon application, j'ai créé un bouton "Remise à zéro de l'application" qui devrait permettre d'effacer les données qui se trouvent dans des tableaux dans des feuilles différentes.
Il faudrait qu'à l'aide de ce bouton on puisse supprimer les données dans les feuilles et tableaux suivants :
Supprimer dans le Tableau1 de la feuille "Agents" et qu'il ne reste qu'une ligne et l'en-tête
Supprimer dans le Tableau2 de la feuille "Accès" idem pour la suite
Supprimer dans le Tableau3 de la feuille "Data" idem pour la suite
Supprimer dans le Tableau4 de la feuille "Temps" idem pour la suite
Supprimer dans le Tableau6 de la feuille "Bdd" idem pour la suite
Supprimer dans le Tableau T_Data de la feuille "TabReserv" idem pour la suite
Est-ce réalisable en une seule fois ?
Merci par avance pour vos idées
 
Solution
Bonjour ReneDav,
Essayez cela :
VB:
Sub EffaceTableaux()
    [Tableau1].ListObject.DataBodyRange.Delete
    [Tableau2].ListObject.DataBodyRange.Delete
    [Tableau3].ListObject.DataBodyRange.Delete
    [Tableau4].ListObject.DataBodyRange.Delete
    [Tableau6].ListObject.DataBodyRange.Delete
    [T_Data ].ListObject.DataBodyRange.Delete
End Sub
Il n'est pas utile de préciser la feuille car un tableau est unique dans un classeur.
Bonjour ReneDav,
Essayez cela :
VB:
Sub EffaceTableaux()
    [Tableau1].ListObject.DataBodyRange.Delete
    [Tableau2].ListObject.DataBodyRange.Delete
    [Tableau3].ListObject.DataBodyRange.Delete
    [Tableau4].ListObject.DataBodyRange.Delete
    [Tableau6].ListObject.DataBodyRange.Delete
    [T_Data ].ListObject.DataBodyRange.Delete
End Sub
Il n'est pas utile de préciser la feuille car un tableau est unique dans un classeur.
 
Bonjour ReneDav,
Essayez cela :
VB:
Sub EffaceTableaux()
    [Tableau1].ListObject.DataBodyRange.Delete
    [Tableau2].ListObject.DataBodyRange.Delete
    [Tableau3].ListObject.DataBodyRange.Delete
    [Tableau4].ListObject.DataBodyRange.Delete
    [Tableau6].ListObject.DataBodyRange.Delete
    [T_Data ].ListObject.DataBodyRange.Delete
End Sub
Il n'est pas utile de préciser la feuille car un tableau est unique dans un classeur.
Bonjour sylvanu,
Merci pour votre réponse, je vais tester votre code.
Toutes les zones à supprimer sont nommées, (comme T_Data).
A plus tard
 
C'est le principe d'un TDS, les formules se propagent automatiquement sur toute la colonne.
Donc si vous effacez une ligne cela ne touche pas les formules en dessous.
Voir ex en PJ.
Oui, je comprends bien, sauf que dans mon cas, il n'y aura plus de lignes en-dessous puisqu'elles seront toutes supprimées. Il va bien falloir que je conserve une ligne de formule.
 
Bonjour à tous,

Exécutez :
VB:
Sub RAZ()
Dim a, T
a = Array([Tableau1], [Tableau2], [Tableau3], [Tableau4], [Tableau6], [T_Data])
For Each T In a
    With T.ListObject.Range
        If .Rows.Count > 2 Then .Rows(3).Resize(.Rows.Count - 2).Delete xlUp
        On Error Resume Next 'si aucune SpecialCell
        .Rows(2).SpecialCells(xlCellTypeConstants) = Empty
    End With
Next
End Sub
A+
 
Bonjour à tous

@ReneDav14000

sauf que dans mon cas, il n'y aura plus de lignes en-dessous puisqu'elles seront toutes supprimées. Il va bien falloir que je conserve une ligne de formule.

Et bien non c'est la "magie" des TS.
Quand tu vides un TS Bilou garde en interne les formules qui vont bien et lors de la recréation d'une nouvelle ligne ==> Miracle la formule revient colonne L en rouge.

Regarde de cet exemple que j'ai fait il y a 2 jours pour une demande identique (le code est dans le module 2)

@Phil69970
 

Pièces jointes

Plus simplement :
Code:
Sub RAZ()
Dim a, T
a = Array([Tableau1], [Tableau2], [Tableau3], [Tableau4], [Tableau6], [T_Data])
For Each T In a
    If T.Rows.Count > 1 Then T.Rows(2).Resize(T.Rows.Count - 1).Delete xlUp
    On Error Resume Next 'si aucune SpecialCell
    T.Rows(1).SpecialCells(xlCellTypeConstants) = Empty
Next
End Sub
 
Voici mon code :
VB:
Sub EffaceTout(control As IRibbonControl)
If MsgBox("Vous êtes sur le point d'effacer les données de l'application - Confirmez-vous ?", vbQuestion + vbYesNo, "Remise à zéro") <> vbYes Then Exit Sub
    [T_Agents].ListObject.DataBodyRange.Delete
    [ListUser].ListObject.DataBodyRange.Delete
    [T_Heures].ListObject.DataBodyRange.Delete
    [T_Temps].ListObject.DataBodyRange.Delete
    [T_Bdd].ListObject.DataBodyRange.Delete
    [T_Data ].ListObject.DataBodyRange.Delete
    MsgBox "Les données ont été effacés", vbCritical, "A la prochaine saison !"
End Sub
 
Bonjour à tous

Ne serait-il pas plus sensé de créer un classeur type avec ses tableaux formulés, sans données, et le dupliquer quand besoin de le remplir (ou en faire un modèle xltx) plutôt que de vider un tableau rempli ?
 
Dernière édition:
- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD

Discussions similaires

  • Question Question
XL 2021 listbox
Réponses
18
Affichages
284
  • Question Question
Microsoft 365 bouton supprimer
Réponses
4
Affichages
100
Retour