Limiter le nombre de feuilles

bonjour

etant decidé à un imposer une cure d'amaigrissement à mon classeur et possedant des feuilles numérotées en onglet , je souhaiterai me debarrasser des feuilles commencant à 110035 et finissant à 110350

j'ai ecrit le bout de code suivant :

Sub purge_feuilles()
Dim ws As Object
Dim i as integer

Application.DisplayAlerts = False

For i= 110035  to  110350
If ws.Name <> "compta" Then     ' car j'ai une feuille nomée compta que je voudrais garder 
ws(i).Delete
End If
Next i

Application.DisplayAlerts = True

End Sub

j'ai comme message d'erreur " depacement de capacité " est ce que cela peut il venir de la facon d'avoir ecrit le code ?

Merci pour réponses

Bonjour,

Dim i as integer -->> un integer ne peu compter que jusque 32250

Tu dois déclarer en Long

Dim I as long

Mais y a moyen de faire autrement..

Sub SuppFeuille()
Dim i As Integer, N As String
    Application.DisplayAlerts = False
    For i = Sheets.Count To 1 Step -1
        If Sheets(i).Name <> "Compta" Then
            Sheets(i).Delete
        End If
    Next i
    Application.DisplayAlerts = True
End Sub

Attention : ça supprime TOUTES les feuilles sauf la Compta.

En réalité c'est ce que fait ton code

A+

Merci pour cette réponse , mais je souhaiterai uniquement enlever un nombre defini de feuilles par leur numero d'onglet

dans mon cas pour les onglets allant de 110035 à 110350 .

C'est bien ce que je pensais, c'est pour cela que j'y ai attirer ton attention.

essaye avec

Sub SuppFeuille()
Dim i As Integer, N
    Application.DisplayAlerts = False
    For i = Sheets.Count To 1 Step -1
        N = Sheets(i).Name
        If IsNumeric(N) Then
            If Val(N) > 110034 And Val(N) < 110351 Then
                Sheets(i).Delete
            End If
        End If
    Next i
    Application.DisplayAlerts = True
End Sub

Fais une copie de ton classeur avant d'essayer la macro.

A+

bonjour

essaye ceci

Sub SuppFeuille()
    Dim i As Integer, N As String
        Application.DisplayAlerts = False
        For i = Sheets.Count To 1 Step -1
            If Sheets(i).Name > 110034 and Sheets(i).Name < 110351 Then
                Sheets(i).Delete
            End If
        Next i
        Application.DisplayAlerts = True
 End Sub

cordialement

edit : pris de vitesse ^^

Bonjour ramoutch,

Teste ce code tu veux !

Sub Test()
Dim N
    N = "Compta"
    If N > 110034 Then Stop
    If N < 110351 Then Stop
End Sub

A+

Merci Lermite ! j'ai essayé ton code mais rien ne se passe , pour classeur est pourtant deprotegé


je ne comprend pas bien ton dernier code , comment placer l'instruction qui supprime la feuille ?

Quand tu dis 110035 et 110350 c'est EXACTEMENT les noms des onglets... y aurais pas d'autre lettres ou des espaces en plus ??

EDIT :

Fait une copie de la feuille 110035

Clic droit sur l'onglet > Déplacer ou copier > Cocher Créer une copie et dans le comboBox sélectionner Nouveau classeur

Tu poste ce nouveau classeur.

L'erreur vient de moi meme !! ton code fonctionne parfaitement bien et te remercie pour ta patience et tes réponses nombreuses

bonne journée à toi

Rechercher des sujets similaires à "limiter nombre feuilles"