"For each"... RàZ tableaux - Excel VBA

Y compris Power BI, Power Query et toute autre question en lien avec Excel
F
Flo913
Jeune membre
Jeune membre
Messages : 18
Inscrit le : 7 novembre 2014
Version d'Excel : 2010

Message par Flo913 » 17 juin 2015, 16:37

Bonjour à tous,

Petite question d'ordre technique : auriez vous une méthode simple pour supprimer toutes les lignes de tous les tableaux de toutes les feuilles de mon classeur (RàZ des données du fichier quoi) ? Je pense à la formulation "For each" mais je ne sais absolument pas comment l'utiliser..

Merci d'avance ! :)

Bien cordialement,

Florian
g
gmb
Fanatique d'Excel
Fanatique d'Excel
Messages : 12'800
Appréciations reçues : 360
Inscrit le : 4 avril 2013
Version d'Excel : 2016

Message par gmb » 17 juin 2015, 18:14

Bonjour

Sans ton fichier, ce sera difficile !
Bye !
P
Percolator
Jeune membre
Jeune membre
Messages : 38
Appréciation reçue : 1
Inscrit le : 17 juin 2015
Version d'Excel : 2010
Contact :

Message par Percolator » 17 juin 2015, 20:07

Hello

Pour effacer tous les contenus de tous tes onglets tu peux utiliser la macro suivante
Sub Macro1()

For Each sheet In Sheets
    sheet.Activate
    ActiveSheet.Cells.Select
    Selection.ClearContents
Next sheet
    
End Sub
Avatar du membre
Force rouge
Membre impliqué
Membre impliqué
Messages : 1'001
Inscrit le : 17 mai 2015
Version d'Excel : 2007FR

Message par Force rouge » 17 juin 2015, 20:45

Bonjour, une solution sans macro, supprimer le classeur puis en recréer un autre :():
Selon ce que tu cherches, tu trouveras soit une excuse soit une solution.
Avatar du membre
Jean-Eric
Fanatique d'Excel
Fanatique d'Excel
Messages : 16'337
Appréciations reçues : 661
Inscrit le : 27 août 2012
Version d'Excel : 365 Personnel

Message par Jean-Eric » 17 juin 2015, 23:20

Bonsoir,
Une proposition pour peu que tu utilises des tableaux (mettre sous la forme de tableau).
Cdlt.
Option Explicit

Public Sub DEMO()
Dim ws As Worksheet
Dim lo As ListObject
Dim modeCalc As XlCalculation

    With Application
        modeCalc = .Calculation
        .Calculation = xlCalculationManual
        .EnableEvents = False
        .ScreenUpdating = False
    End With

    For Each ws In ActiveWorkbook.Worksheets
        For Each lo In ws.ListObjects
            ' redimensionne le tableau en conservant les formules
            If Not lo.DataBodyRange Is Nothing Then lo.DataBodyRange.Delete
        Next lo
    Next ws

    With Application
        .Calculation = modeCalc
        .EnableEvents = True
    End With

End Sub
Jean-Eric

Je ne réponds pas aux M.P. non sollicités.
F
Flo913
Jeune membre
Jeune membre
Messages : 18
Inscrit le : 7 novembre 2014
Version d'Excel : 2010

Message par Flo913 » 18 juin 2015, 10:01

Merci beaucoup Jean-Eric, c'est exactement ce qu'il me fallait, supprimer les lignes des tableaux en tant qu'objet (pas effacer absolument tout partout). Ta macro fonctionne parfaitement, je vais la garder dans un coin elle me resservira souvent !

Je commence à comprendre comment fonctionne le "For Each", c'est en effet un outil puissant et flexible !

Bien à vous,

Florian.
Répondre Sujet précédentSujet suivant
  • Sujets similaires
    Réponses
    Vues
    Dernier message