Bonjour le forum
Alors voilà, j'ai un code qui me permet de supprimer des feuilles après utilisation par un utilisateur d'un classeur.
Dans le principe j'ai créé un dictionnaire avec les Index des feuilles à ne pas supprimer puis à la fermeture j'appel ma macro pour retirer d’éventuelles feuille rajoutées.
Je ne trouve pas se moyen très fiable... J'aurais préférer trouver un moyen de créer un dictionnaire avec le nom des feuilles en dure et non en fonction de leurs index
Quand je dit nom de feuille en dure je veux parler par exemple de Feuil1 (où Feuil1.Name="Toto")
Je met quand même ci-dessous le code que j'utilise actuellement :
Sub SuppFeuilles()
Dim Compteur
Application.DisplayAlerts = False 'Desactivation des messages de confirmation de suppression de feuiles
Set Dico = CreateObject("Scripting.Dictionary") 'Création d'un dictionnaire nomé Dico
Dico.Item("A") = 1 'Ajout d'une référence A = 1 (ici le numéro sera le numéro d'INDEX des feuilles A NE PAS SUPPRIMER)
Dico.Item("B") = 2 'Idem
Dico.Item("C") = 3 'Idem
'Ajouter autant d'items qu'il y à de feuille à ne pas supprimer
Tbl = Dico.items 'Création d'un tableau virutel avec tous les items du Dico
TT = Application.CountA(Dico.items) 'TT est le nombre d'items présent dans le Dico ou le nombre de feuille à garder
'On sais donc maintenant que l'on veux garder uniquement les 3 premiers onglet sois Feuil.Index 1,2 et 3
'Si des feuilles sont rajoutées par un utilisateur il y aura donc plus de 3 feuilles dans le classeur, alors on procède à la suppression
While Worksheets.Count > TT 'Tant qu'il y a plus de 3 feuilles dans le classeur
Compteur = 0 'Ici le compteur nous permttra de determiner si la feuille doit être supprimée ou non
For n = 0 To Dico.Count - 1 'Ici on va tester que l'index de chaque feuille est présent dans le Dico
If Worksheets(Worksheets.Count).Index <> Tbl(n) Then Compteur = Compteur + 1
If Compteur >= TT Then Worksheets(Worksheets.Count).Delete 'Si l'index de la feuille n'a pas été trouvée dans le Dico alors elle est supprimée
Next n 'On passe à la feuille suivante
Wend 'Fin de la procédure quand le nombre de feuille dans le classeur sera<4 feuilles
Application.DisplayAlerts = True 'Réactivation des messages de confirmation de suppression
End Sub