Supprimer les onglets de la feuille 2 à (n-3)

Salut à tous !

J'espère que vous allez bien,

Pour mon sujet:

Je veux travailler dans un classeur en insérant une feuille par journée jusqu'à la fin du mois avec trois feuille de menu à la fin.(voir pièce-jointe)

Alors à la fin de chaque mois je doit supprimer tous les feuilles sauf la feuille du premier jour et les 3 dernières feuilles,

Pour cela j'ai utilisé un ce code qui n'a pas donné du bon résultat :

Sub Effacer_Tous_Les_Jours_Sauf_1() ' Effacer tous les jours sauf le 1er pour préparer l'application au mois prochain
Dim i As Byte
Dim j As Byte
Application.DisplayAlerts = False 'Désactiver toutes les boite de dialogue et de confirmation

j = Sheets.Count - 3 'l'onglet contenant le dernier jour du mois
For i = 2 To j
Sheets(i).Delete ' Effacer la feuille du 2ème jour au dernier jour du Mois
Next i

 Application.DisplayAlerts = True 'Activer toutes les boite de dialogue et de confirmation

End Sub

Merci de m'aider à produire une macro qui fait cette action (supprimer les feuilles 2 to n-3)

Cordialement,

Salut Mohsin.stat,

voici ton fichier!

Tu dois valider la date qui t'est présentée dans une InputBox, en l'occurrence le 1er du mois en cours, et confirmer ensuite la suppression.

Entre les deux messages, la date de l'InputBox est convertie au bon format : "xx-xx-xxxx".

Je me suis permis de corriger l'orthographe de ton onglet "Travaux du Mois" (et non TravEaux), correction qui se répercute(ra) dans la macro!!!

'
Dim index As Variant
'
sFlag = InputBox("Veuillez confirmer la date ci-dessous!", "Suppression", DateAdd("d", -(Day(Date) - 1), Date))
'
If Not IsDate(sFlag) Then
    MsgBox "Suppression annulée!" & vbLf & "Aucune donnée valide!", vbCritical, "Suppression"
    Exit Sub
End If
sFlag = Format(sFlag, "dd-mm-yyyy")
'
sRep = MsgBox("Confirmez-vous la suppression des feuilles de ce classeur?", vbCritical + vbOKCancel + vbDefaultButton2, "Suppression")
If sRep = 2 Then Exit Sub
'
Application.DisplayAlerts = False
For Each index In ActiveWorkbook.Sheets
    If index.Name <> sFlag And index.Name <> "Travaux du Mois" And index.Name <> "Listes" And index.Name <> "Menu" Then index.Delete
Next
Application.DisplayAlerts = True
'

Bon travail!

A+

Merci beaucoup curulis57 ! Excellent travail !

Ça fonctionne très bien, mais comment conserver toujours la première feuille (01-01-2017) sans avoir besoin de l'indiquée dans InputBox et après la Suppression rendre le non le la première feuille comme ça: (1er jour du mois suivant= 01-02-2017)

Merci beaucoup et bonne journée !

Salut Mohsin.stat,

un traitement automatique?

Pourquoi pas? Quand l'événement doit-il se déclencher? Sur commande par bouton? En fonction de la date (si on est le mois suivant ou après) ? Tu auras enregistré tes modifications avant cet effacement?

Beaucoup de choses dont il me faudrait les réponses!

A+

Rechercher des sujets similaires à "supprimer onglets feuille"