XL 2010 Supprimer les onglets à partir d'une liste excel vba

  • Initiateur de la discussion Initiateur de la discussion Pygos69
  • 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 !

Pygos69

XLDnaute Nouveau
Bonjour,

Je n'arrive pas à trouver comment supprimer les onglets d'un classeur listés dans les cellules (A2 à A12).

J'ai essayé ceci qui ne fonctionne pas...

Sub suppr_feuilles()

Dim nom As String, c As Range

Application.DisplayAlerts = False

For Each c In Range("liste")
nom = c.Value
If nom <> "" Then

Sheets.Add Count:=1, after:=Worksheets(Worksheets.Count)
Sheet.Select = nom
Sheet.Delete
End If

Next c
Application.DisplayAlerts = True
End Sub

Merci d'avance pour votre aide
 
Bonjour.
VB:
Sub SupprFeuilles()
   Dim Cel As Range
   Application.DisplayAlerts = False
   For Each Cel In Range("liste")
      Sheets(Cel.Value).Delete
      Next Cel
   Application.DisplayAlerts = True
   End Sub
Bonjour,

Merci Dranreb !

A la ligne
Sheets(Cel.Value).Delete
Je rencontre une erreur : Erreur d'exécution '9'
l'indice n'appartient pas à la sélection

La Feuil14 a bien été supprimée, mais la suivante nommée 18 rencontre une erreur.

Bien cordialement,
 
Dernière édition:
La liste contient un nom de feuille qui n'existe pas.

Lorsque je liste Feuil14, Feuil15.... cela fonctionne,
mais quand dans ma liste j'ai 18,19 (noms des autres onglets), cela ne fonctionne pas !

Je viens de tester avec un onglet nommé TOTO, cela fonctionne !

Cela ne fonctionne pas avec les onglets nommés avec du numérique, semble t'il...

Bien cordialement,
 
Dernière édition:
Si je met ma liste au format Texte, cela fonctionne.

liste = A2 à A11

A2 = 18 (au format texte)
A3 à A11 sont vides

La macro essaye ensuite de passer à la cellule A3 de la liste, qui est vide et elle plante !

Merci !
 
Dernière édition:
Si c'est numérique c'est considéré comme le numéro d'ordre de la feuille dans la collection Sheets
CStr(Cel.Value) le convertirait en String.
Si vous ne pouvez pas vous arranger pour que le nom "liste" couvre exactement la liste de noms renseignés, testez IF Not IsEmpty(Cel.Value)
 
S'il n'y a qu'une instruction elle peut être mise directement derrière le Then, et il ne faut pas de End IF. Sinon, bien sur, il faut terminer ainsi le bloc If Then avant de terminer For Each qui l'englobe.
Ok, Merci ! Pouvez-vous me valider la correction ?

Sub SupprFeuilles()
Dim Cel As Range
Application.DisplayAlerts = False
For Each Cel In Range("liste")
If Not IsEmpty(Cel.Value) Then
Sheets(CStr(Cel.Value)).Delete
End If
Next Cel
Application.DisplayAlerts = True
End Sub

Bien cordialement,
 
- 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

Réponses
5
Affichages
272
Retour