[VBA]Supprimer une feuille uniquement si elle existe

djresal

XLDnaute Nouveau
Bonjour,

Dans un programme que je suis entrain de réaliser, je créer une nouvelle feuille à chaque sauvegarde :
"1";"2"...."7" etc...

J'aimerai creer une macro de réinitialisation qui efface ces feuilles de sauvegarde
Seulement pour cela, la commande doit vérifier que la feuille existe.
(Pardonnez ma méconnaissance du VBA mais je débute)
La commande que je voudrai créer:


Dim f As Integer
f = 1
Do
If Sheets(f) = true Then
ActiveWindow.SelectedSheets.Delete
f = f +1
Loop Until Sheets(f) = false
End if


Merci pour l'aide:rolleyes:
 

kjin

XLDnaute Barbatruc
Re : [VBA]Supprimer une feuille uniquement si elle existe

Bonsoir,
Si seules les feuilles sauvegarde sont nommées numériquement
Code:
Sub delfeuille()
Application.DisplayAlerts = False
For i = 1 To Sheets.Count
    If IsNumeric(Sheets(i).Name) Then Sheets(i).Delete
Next
Application.DisplayAlerts = True
End Sub
A+
kjin
 

djresal

XLDnaute Nouveau
Re : [VBA]Supprimer une feuille uniquement si elle existe

Bonsoir,
Si seules les feuilles sauvegarde sont nommées numériquement
Code:
Sub delfeuille()
Application.DisplayAlerts = False
For i = 1 To Sheets.Count
    If IsNumeric(Sheets(i).Name) Then Sheets(i).Delete
Next
Application.DisplayAlerts = True
End Sub
A+
kjin

Merci beaucoup mais le problème c'est que j'ai un message d'erreur mais pas a chaque fois :confused:
Si j'ai qu'une feuille de crée c'est bon
si j'en ai 2 ou plus ça bug

erreur d'execution '9'
l'indice n'appartient pas à la selection

dans le debugger il me surligne cette ligne de code

If IsNumeric(Sheets(i).Name) Then

Merci quand même!
 

ROGER2327

XLDnaute Barbatruc
Re : [VBA]Supprimer une feuille uniquement si elle existe

Bonsoir djresal
Essayez ceci :
Code:
[COLOR="DarkSlateGray"][B]Sub toto()
Dim f As Long
   Application.DisplayAlerts = False
   On Error Resume Next
   For f = ThisWorkbook.Sheets.Count To 1 Step -1
      If CStr(CInt(Val(Sheets(f).Name))) = Sheets(f).Name Then Sheets(f).Delete
   Next f
   On Error GoTo 0
   Application.DisplayAlerts = True
End Sub[/B][/COLOR]
Les feuilles nommées "0", "1", "2", ..., "25", "26", ... ou "-1", "-2", ... seront supprimées.
Une feuille nommée "+5" ne sera pas effacée.
Une feuille nommée "3,5" ou "9.4" ou "(22)" ne sera pas effacée.
Une feuille nommée "6 3" (6 espace 3) ne sera pas effacée.​
ROGER2327
#2314
 

djresal

XLDnaute Nouveau
Re : [VBA]Supprimer une feuille uniquement si elle existe

Bonsoir djresal
Essayez ceci :
Code:
[COLOR="DarkSlateGray"][B]Sub toto()
Dim f As Long
   Application.DisplayAlerts = False
   On Error Resume Next
   For f = ThisWorkbook.Sheets.Count To 1 Step -1
      If CStr(CInt(Val(Sheets(f).Name))) = Sheets(f).Name Then Sheets(f).Delete
   Next f
   On Error GoTo 0
   Application.DisplayAlerts = True
End Sub[/B][/COLOR]
Les feuilles nommées "0", "1", "2", ..., "25", "26", ... ou "-1", "-2", ... seront supprimées.
Une feuille nommée "+5" ne sera pas effacée.
Une feuille nommée "3,5" ou "9.4" ou "(22)" ne sera pas effacée.
Une feuille nommée "6 3" (6 espace 3) ne sera pas effacée.​
ROGER2327
#2314

Nickel ça marche c'est pile ce que je voulais!!!
100000 merci
 

ROGER2327

XLDnaute Barbatruc
Re : [VBA]Supprimer une feuille uniquement si elle existe

Re...
Bonjour,

L'erreur est ici
...
For i = 1 To Sheets.Count
...

Et c'est mieux comme ça
Code:
For i = Sheets.Count To 1 step -1
Fatigué le garçon :rolleyes:
A+
kjin
Pas grave ! Ça arrive...
J'ai mis en plus On Error Resume Next pour le cas, improbable vu la question, mais sait-on jamais, où en arriverait à vouloir supprimer toutes les feuilles.
Cordialement,
ROGER2327
#2321
 

Discussions similaires

Membres actuellement en ligne

Aucun membre en ligne actuellement.

Statistiques des forums

Discussions
312 177
Messages
2 085 972
Membres
103 073
dernier inscrit
MSCHOE16