[VBA]Supprimer une feuille uniquement si elle existe

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

D

djresal

Guest
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🙄
 
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
 
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 😕
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!
 
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
 
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
 
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 🙄
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
 
- 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
Assurez vous de marquer un message comme solution pour une meilleure transparence.

Discussions similaires

Réponses
2
Affichages
409
Réponses
5
Affichages
687
Réponses
4
Affichages
715
Réponses
3
Affichages
877
Retour