Effacer simultanément dans plusieurs onglets

Bonjour le forum,

Je voudrais demander votre aide afin de résoudre un problème complexe (pour mon niveau). J’ai un fichier avec plusieurs feuilles dont les onglets « results », « 1 », « 2 », « 3 » , « form».

Je voudrais bien mettre dans l’onglet « results » un bouton pour effacer toutes les données apparaissant dans ces cinq onglets sans toucher la première ligne (titres des colonnes).

J’ai essayé d’utiliser le code

Sub Supp_Data()
Application.DisplayAlerts = False
Sheets(Array ("results", « form », « 1 », « 2 », « 3 »).Select
ff = 2 + Application.WorksheetFunction.CountA(Range("A:A")) 
Range("2:" & ff).Delete
Application.DisplayAlerts = True
End Sub

Mais ça ne marchait pas sans aucune idée pourquoi.

J’utilise le code suivant :

Sub Supp_Data()
Application.DisplayAlerts = False
Sheets("results").Select
ff = 2 + Application.WorksheetFunction.CountA(Range("A:A")) 
Range("2:" & ff).Delete

Sheets("form").Select
ff = 2 + Application.WorksheetFunction.CountA(Range("A:A")) 
Range("2:" & ff).Delete

Sheets("1").Select
ff = 2 + Application.WorksheetFunction.CountA(Range("A:A"))
Range("2:" & ff).Delete

Sheets("2").Select
ff = 2 + Application.WorksheetFunction.CountA(Range("A:A"))
Range("2:" & ff).Delete

Sheets("3").Select
ff = 2 + Application.WorksheetFunction.CountA(Range("A:A")) 
Range("2:" & ff).Delete
Application.DisplayAlerts = True
End Sub

Malheureusement, cette macro efface toutes les lignes sur l’onglet « results » tandis que sur des autres onglets elle efface les données parcellement, pas toutes les lignes à la fois.

Où je me suis trompé avec la première macro ?

Est-il possible de la modifier ?

Petite remarque : la quantité des lignes de chaque onglet peut varier de 0 jusqu’au « plusieurs » et être différente entre eux.

Merci d’avance pour votre aide !

Bonjour

Essaie plutôt ceci :

Sub Supp_Data()
Dim ff as integer
Dim i as byte
Application.DisplayAlerts = False
For i = 1 To Sheets.Count
ff = 2 + Application.WorksheetFunction.CountA(Sheets(i).Range("A:A"))
Sheets(i).Rows("2:" & ff).Delete
Next
Application.DisplayAlerts = True
End Sub

`

Maintenant je ne vois pas le pourquoi du Displayalerts

Attention aussi que la suppression est effectuée sur base du nombre de données trouvées en colonne A

Amicalement

Bonjour

Une autre idée

Utilisation obligée de Selection

Sub Supp_Data()
  Application.ScreenUpdating = False
  Sheets(Array("results", "form", "1", "2", "3")).Select
  Rows(2 & ":" & Rows.Count).Select
  Selection.ClearContents
  Range("A1").Select
  Sheets("results").Select
End Sub

Bonjour à tous,

Une variante

Sub Supp_Data()
Dim Feuille
Dim F As Byte
Dim ff As Long
    Feuille = Array("results", "form", "1", "2", "3")
    For F = 0 To UBound(Feuille)
        ff = Worksheets(Feuille(F)).Range("A" & Rows.Count).End(xlUp).Row
        If ff = 1 Then Exit Sub
        Worksheets(Feuille(F)).Range("2:" & ff).Delete
    Next F
End Sub

A+

Dan,

ça ne marche pas bien car:

1. la macro efface aussi les données sur les onglets incorrects.

2. elle n'efface pas toutes les données à effacer sur les onglets corrects.

le critère - colonne A - est tout à fait correct.

cordialement

Dan a écrit :

Bonjour

Essaie plutôt ceci :

Sub Supp_Data()
Dim ff as integer
Dim i as byte
Application.DisplayAlerts = False
For i = 1 To Sheets.Count
ff = 2 + Application.WorksheetFunction.CountA(Sheets(i).Range("A:A"))
Sheets(i).Rows("2:" & ff).Delete
Next
Application.DisplayAlerts = True
End Sub

`

Maintenant je ne vois pas le pourquoi du Displayalerts

Attention aussi que la suppression est effectuée sur base du nombre de données trouvées en colonne A

Amicalement

Banzai,

J'ai essayé ton code et il bien marche très bien!!!

merci!!!

Banzai64 a écrit :

Bonjour

Une autre idée

Utilisation obligée de Selection

Sub Supp_Data()
  Application.ScreenUpdating = False
  Sheets(Array("results", "form", "1", "2", "3")).Select
  Rows(2 & ":" & Rows.Count).Select
  Selection.ClearContents
  Range("A1").Select
  Sheets("results").Select
End Sub
Rechercher des sujets similaires à "effacer simultanement onglets"