supprimer feuilles commencant par "Piste...

  • Initiateur de la discussion Initiateur de la discussion axelle la débutante
  • Date de début Date de début

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 !

A

axelle la débutante

Guest
Bonjour le forum, bonjour les forumeux,

En plein dans une macro, je peine encore sur des détails à la c..
Si quelqu'un peux jeter un coup d'oeil et a 5 minutes pour me répondre, je vous remercie d'avance.

1ere question : je voudrais que ma macro supprime toutes les feuilles qui ont un nom commencant par "piste". (Piste151h, Piste35h...)

2eme question : quand la macro supprime une feuille dont je n'ai plus besoin, la fenetre Excel de confirmation de suppression apparait et arrette la macro. Comment faire pour que cette fenetre n'apparaisse pas?

Merci a ceux qui me liront et encore plus à ceux qui répondront

A +
Axelle
 
Bonjour Axelle moins débutante de jour en jour ;°),

Ceci te convient-il ?

Sub TaMacro()
  Application.DisplayAlerts = False
  For Each Feuille In Worksheets
    If Left(Feuille.Name, 5) = "Piste" Then
      Feuille.Delete
    End If
  Next Feuille
  Application.DisplayAlerts = True
End Sub


Bon après-midi.

José
 
Re le forum et les forumeux

bonjour José,

Merci pour ta réponse meme si je suis longue à répondre (il me faut bcp de temps pour tester!). En ce qui concerne l'alerte, ta facon de le supprimer convient tres bien. Par contre, concernant la suppression des onglets avec piste, ca fonctionne pas.

J'ai meme essayer de changer comme ca :
For Each Worksheets In Workbooks
If Left(Worksheets.Name, 5) = "Piste" Then
Worksheets.Delete
End If
Next Worksheets

Mais ca marche pas.

Merci d'essayer de voir pourquoi svp

A +
Axelle
 
Re Carole,

Plusieurs choses :

Pour les réponses qui tardent, ne t'inquiète pas, c'est pas un problème. On est pas toujours devant l'ordi. Heureusement ;°)

Worksheets est un mot-clé VBA, il ne faut pas l'utiliser en tant que variable sous peine de résultats inattendus.

J'ai testé le code avant de poster et ça marchait chez moi. Donc je ne vois qu'une solution c'est que tes noms d'onglets sont en majuscules ou tout en minuscules. Donc je te propose la correction suivante pour le test du nom :

If LCase(Left(Worksheets.Name, 5)) = "piste" Then

Comme ça, peut importe la casse.

Si ça ne marche toujours pas, il faudrait que tu postes un exemple avec plusieurs feuilles (dont des "piste...") et je regarderai.

Bonne soirée.

José
 
Re le forum, les forumeux

Re José

Merci pour ta réponse. Mais mari et enfants obligent, je passe à autre chose (bain, bouffe et compagnie..)
J'essaierais donc ta solution demain

Merci tout de meme
A +
Axelle
 
bonjour Axelle,

ne te décourage pas, voici peut être la solution.

Sub TaMacro()
Dim x As Integer, Feuille As Object
Application.DisplayAlerts = False
Sheets(1).Select
For Each Feuille In Worksheets
If Left(Feuille.Name, 5) = "Piste" Then
If x = 0 Then
Feuille.Activate
x = 1
End If
Sheets(Feuille.Name).Select Replace:=False
End If
Next Feuille
ActiveWindow.SelectedSheets.Delete
Application.DisplayAlerts = True
End Sub

sab
 
'si tu n'a pas mit Option Explicit en haut du module, tu pourrais réduire comme ça,

Sub TaMacro()
Application.DisplayAlerts = False
For Each Feuille In Worksheets
If Left(Feuille.Name, 5) = "Piste" Then
If x = 0 Then
Feuille.Activate
x = 1
End If
Feuille.Select Replace:=False
End If
Next Feuille
ActiveWindow.SelectedSheets.Delete
Application.DisplayAlerts = True
End Sub
 
- 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
Assurez vous de marquer un message comme solution pour une meilleure transparence.
Retour