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
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
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
Merci beaucoup mais le problème c'est que j'ai un message d'erreur mais pas a chaque fois
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
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.
[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.
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.