XL 2016 Suppression d'onglet avec le nom dans une cellule.

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 !

christ77000

XLDnaute Occasionnel
Bonsoir à tous,
j'ai récupérer sur ce site un code pour supprimer des onglets en fonction d'un nom dans une cellule. Dans cette macro j'en supprime deux d'un coup. Mais si un utilisateur clic de nouveau sur le bouton supprimer, ca plante. Serait il possible de mettre déjà un message de confirmation avant la suppression et de contrôler si les feuilles n'ont pas déjà été supprimer. Merci pour votre aide.

VB:
Sub Effacer_feuille_equipe1()
'Effacer l'IT6
Dim plageNoms As Range
Set plageNoms = Range("D29")
Application.DisplayAlerts = False
For Each cell In plageNoms
Sheets(cell.Value).Delete
Next
Application.DisplayAlerts = True
'Effacer le graph de l'IT6
Set plageNoms = Range("F29")
Application.DisplayAlerts = False
For Each cell In plageNoms
Sheets(cell.Value).Delete
Next
Application.DisplayAlerts = True

End Sub
 
Solution
Bonsoir christ77000, sylvanu, fanch55, JM,

En listant les feuilles à supprimer dans un Dictionary :
VB:
Sub Supprimer_feuilles()
Dim plageNoms As Range, d As Object, cel As Range, s As Object
Set plageNoms = Range("D29,F29") 'à adapter
Set d = CreateObject("Scripting.Dictionary")
d.CompareMode = vbTextCompare 'la casse est ignorée
'---liste des feuilles à supprimer---
For Each cel In plageNoms
    d(CStr(cel)) = ""
Next
'---suppressions---
Application.DisplayAlerts = False
For Each s In Sheets
    If d.exists(s.Name) And Sheets.Count > 1 Then s.Delete
Next
End Sub
A+
Bonsoir Christ,
Soit en testant si la feuille existe avant de tenter de la supprimer.

Soit plus bestial en mettant un On Error Resume Next pour sauter la ligne en erreur.
( Le problème c'est que s'il y a une "vrai" erreur elle sera aussi ignorée )
 
Salut à tous,
Question récurrente :
 
Bonsoir le fil, chris77000, sylvanu, fanch55

???
Tester ou pas l'existence d'une feuille, chris77000 sait déjà faire, non ?
(Et c'est tout frais 😉)

EDITION: Bonsoir Job75
 
Dernière édition:
Bonsoir christ77000, sylvanu, fanch55, JM,

En listant les feuilles à supprimer dans un Dictionary :
VB:
Sub Supprimer_feuilles()
Dim plageNoms As Range, d As Object, cel As Range, s As Object
Set plageNoms = Range("D29,F29") 'à adapter
Set d = CreateObject("Scripting.Dictionary")
d.CompareMode = vbTextCompare 'la casse est ignorée
'---liste des feuilles à supprimer---
For Each cel In plageNoms
    d(CStr(cel)) = ""
Next
'---suppressions---
Application.DisplayAlerts = False
For Each s In Sheets
    If d.exists(s.Name) And Sheets.Count > 1 Then s.Delete
Next
End Sub
A+
 
Bonsoir et merci à tous,
Staple 1600, si je savais le faire je l'aurais fait moi même. Pour le moment je pompe des codes à droite à gauche. Et j'essai de les comprendre, ce qui n'est pas évident pour un novice. Ca l'ai pour vous je n'en doute pas, mais la ca ne se devine pas ca s'apprend. ce que j'essaie de faire.

job75, je vais tester le code.
"En listant les feuilles à supprimer dans un Dictionary :" c'est quoi !!
 
Re

•>christ77000
[Précisions]
J'indiquais juste qu'on avait posté dans ton autre discussion des fonctions pour tester si une feuille existe ou pas.
Donc, on pouvait penser que tu réutiliserais ce tu appris dans cette précédente discussion pour la résolution de la question postée ici.
C'est tout ce que voulait dire le message#4
 
- 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

Discussions similaires

  • Question Question
Microsoft 365 Probléme VBA
Réponses
8
Affichages
242
  • Question Question
Microsoft 365 worksheet_change
Réponses
29
Affichages
280
Retour