supprimer feuilles commencant par "Piste...

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
 
J

jmps

Guest
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é
 
A

axelle la débutante

Guest
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
 
J

jmps

Guest
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é
 
A

axelle la débutante

Guest
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
 
C

CHti160

Guest
Salut "axelle la débutante"
salut à tous
bonsoir le "FORUM"
une petite piece jointe qui peut servire de support
a améliorer je pense
A+++
Jean Marie
 

Pièces jointes

  • SupprimeV1.zip
    24.4 KB · Affichages: 120
  • SupprimeV1.zip
    24.4 KB · Affichages: 123
  • SupprimeV1.zip
    24.4 KB · Affichages: 118
S

sab

Guest
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
 
S

sab

Guest
'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
 

Statistiques des forums

Discussions
314 162
Messages
2 106 599
Membres
109 637
dernier inscrit
lafforest