Ceci est une page optimisée pour les mobiles. Cliquez sur ce texte pour afficher la vraie page.

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

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
 

Dranreb

XLDnaute Barbatruc
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
 

Pygos69

XLDnaute Nouveau
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:

Pygos69

XLDnaute Nouveau
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:

Pygos69

XLDnaute Nouveau
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:

Dranreb

XLDnaute Barbatruc
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)
 

Pygos69

XLDnaute Nouveau
A quel niveau, dois-je mettre ces indications ?
 

Pygos69

XLDnaute Nouveau
Ben faites en sorte que le Sheets(CStr(Cel.Value)).Delete ne soit tenté que si la cellule n'est pas vide
Je n'y arrive pas .....

Sub SupprFeuilles()
Dim Cel As Range

Application.DisplayAlerts = False

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

Pygos69

XLDnaute Nouveau
Ben combinez : If Not IsEmpty(Cel.Value) Then Sheets(CStr(Cel.Value)).Delete
Merci, pour la solution, l'accompagnement et le cours

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
 

Dranreb

XLDnaute Barbatruc
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.
 

Pygos69

XLDnaute Nouveau
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,
 
Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…