Code VB : suppression d'une feuille excel si elle existe

Résolu
Signaler
Messages postés
38
Date d'inscription
mercredi 20 juin 2007
Statut
Membre
Dernière intervention
29 juin 2007
-
Messages postés
1141
Date d'inscription
mercredi 7 mars 2007
Statut
Membre
Dernière intervention
19 septembre 2007
-
Bonjour,

Avez une idée de code pour supprimer une feuille excel si elle existe. Voici mon code mais il ne marche pas:

If Sheets("feuil1").value = 1 Then Sheets("feuil1").Delete
end if

11 réponses

Messages postés
1141
Date d'inscription
mercredi 7 mars 2007
Statut
Membre
Dernière intervention
19 septembre 2007
3
J'ai trouvé un code pas trop dégueux

For i = 1 To ThisWorkbook.Sheets.Count

If ThisWorkbook.Sheets.Item(i).Name = "Feuil1" Then
    Sheets("Feuil1").Delete
End If

Next
Messages postés
1141
Date d'inscription
mercredi 7 mars 2007
Statut
Membre
Dernière intervention
19 septembre 2007
3
Salut, j'ai placé le code

Sheets("feuil1").Delete

dans thisworkbook et ca a fonctionné. Tu es bien en VB.net car moi j'ai essayé sur Excel direct. Donc soit tu dois préciser le workbook soit bah, je sais pas.

il sera peut nécessaire de désactiver les alertes Excel (Displayalerts je crois).
Messages postés
38
Date d'inscription
mercredi 20 juin 2007
Statut
Membre
Dernière intervention
29 juin 2007

merci Nicko11,

Ma macro ne fonctionne pas car il n'y a aucune feuille existante.
En gros, je gére un projet et des feuilles se créent (et il faut à chaque fois les supprimer et en recréer), mais le probléme se pose au début de mon projet alors qu'il n'y a aucune feuille existante.

Par exemple, j'indique ceci :
If Sheets("rendements").Activate Then Sheets("rendements").Delete
end if

Ce code fonctionne parfaitement lorsque que cette feuille existe, mais au début de mon projet, VB ne la reconnait pas ce qui est logique puisqu'elle n'existe pas. C'est aussi pour ça que j'indique un if...
Messages postés
7668
Date d'inscription
samedi 5 novembre 2005
Statut
Membre
Dernière intervention
22 août 2014
27
Salut à tous,

  Croyez-vous vraiment que Malika apprendra à ouvrir ses discussion dans la section qui convient si, sans même lui faire observer son erreur, on continue à lui répondre dans la section VB.Net à des questions relatives à VBA ?
  Quelle raison aurait-elle de corriger cette attitude ? Aucune, à mon avis...
   Le plus grave est que ces "choses-là" font apparemment "de plus en plus de petits" (on le voit maintenant trop bien quotidennement) car les nouveaux arrivés, témoins de ces faits, prennent le même chemin...http://www.vbfrance.com/infomsg_CHECHBOX-SUR-EXCEL-BOUTON_967720.aspx


  Il y a là, à mon sens, une responsabilité tout-à-fait partagée.
Messages postés
38
Date d'inscription
mercredi 20 juin 2007
Statut
Membre
Dernière intervention
29 juin 2007

oula, désolée pour l'erreur (je ne suis pas débutante pour rien ) ..

Mr l'Administrateur,

Pouvez-vous déplacer mes requêtes dans le théme VBA/Débutant svp?

Merci, je ne referais plus cette erreur...
Messages postés
1141
Date d'inscription
mercredi 7 mars 2007
Statut
Membre
Dernière intervention
19 septembre 2007
3
C'est une bonne reaction mais la prochaine fois penses s'y avant car je me posait la questions.

N'y a t'il pas une fonction IsExists sur Excel qui te permettra de savoir si Feuil1 appartient bien a la collection Sheets. J'essaies de mon coté.
Messages postés
38
Date d'inscription
mercredi 20 juin 2007
Statut
Membre
Dernière intervention
29 juin 2007

merci Nicko11,


ça marche du tonnerre!
Messages postés
1141
Date d'inscription
mercredi 7 mars 2007
Statut
Membre
Dernière intervention
19 septembre 2007
3
Allé encore mieux car j'ai vu qu'il pouvais y avoir une erreur

Public Sub test()

For i = 1 To ThisWorkbook.Sheets.Count

If ThisWorkbook.Sheets.Item(i).Name = "Feuil1" Then
    Application.DisplayAlerts = False
    ThisWorkbook.Sheets("Feuil1").Delete
    Application.DisplayAlerts = False
    Exit For
End If

Next

End Sub
Messages postés
1141
Date d'inscription
mercredi 7 mars 2007
Statut
Membre
Dernière intervention
19 septembre 2007
3
Heu dsl faut bien sur remettre
    Application.DisplayAlerts = true apres la suppression
 
Messages postés
38
Date d'inscription
mercredi 20 juin 2007
Statut
Membre
Dernière intervention
29 juin 2007

ok mais dans ton second code, je serai obligé de retourné dans le VB pour changer le paramètre et sachant que je ne serais pas l'utlisateur, je préfére garder ton premier code qui m'a l'air tout a fait correct
Messages postés
1141
Date d'inscription
mercredi 7 mars 2007
Statut
Membre
Dernière intervention
19 septembre 2007
3
En fait, ce que je disais c'est de changer la ligne.

Public Sub test()

For i = 1 To ThisWorkbook.Sheets.Count

If ThisWorkbook.Sheets.Item(i).Name = "Feuil1" Then
    Application.DisplayAlerts = False
    ThisWorkbook.Sheets("Feuil1").Delete
    Application.DisplayAlerts = True
    Exit For
End If

Next

End Sub

Mais bon c'est toi qui choisit de toute maniere la facon dont tu veux gérer. A+