Tester si feuille déjà éxistante?

Bonjour à toutes et à tous,

Je voudrai savoir s'il est possible (sans que ce soit une usine à gas ) de vérifier l'existance d'une feuille?

Dans le code si dessous, je suis obligé d'attendre la fin du mois pour sauvegarder, car si je fais 2 sauvegardes, j'ai une erreur (excel ne peut pas créer 2 fois la même feuille).

Ce que j'aurai souhaité, c'est que si la feuille est déjà présente, soit je l'écrase, soit je la supprime pour ensuite la recréer.

Mon code:

    Private Sub CommandButton1_Click()
    Dim mois As String, x As Date
      Sheets("Modèle").Activate
        ActiveSheet.Copy After:=Sheets(Sheets.Count)

       x = Range("H5")                                    'repérer le n° du mois à sauvegarder

       ActiveSheet.Name = UCase(Format(x, "mmmm"))     'ex:JANVIER

       ActiveSheet.Shapes("CommandButton1").Select
       Selection.Delete                                     'Effacer le bouton de sauvegarde

        mois = ActiveSheet.Name

       Sheets("Modèle").Select                              'on revient au modèle après sauvegarde'

        MsgBox ("Le mois de " & mois & "" & " est sauvegardé")
    End Sub    

Sans abuser de votre gentillesse, si vous pouviez ajouter quelques commentaires afin de comprendre (du moins essayer)

Merci pour vos réponses,

Cordialement,

xorsankukai

Bonjour

Un bout de code qui peut te servir

Vnfeuilc = tonomde feuille

For I = 1 To Sheets.Count

If Sheets(I).Name = Vnfeuilch Then

Application.DisplayAlerts = False

Sheets(Vnfeuilch).Select

ActiveSheet.Delete' suppression de la feuille

Application.DisplayAlerts = True

GoTo 210

Else

End If

Next I

Codialement

FINDRH

Bonjour, xorsankukai

Un fichier à tester

Cordialement

Pierrot

resolu 4

Bonjour FINDRH et Cappe Pierre,

Je vous remercie pour vos réponses.

Je vais étudier vos 2 propositions.

Bon week-end,

A bientôt sur le forum.

Cordialement,

xorsankukai

Bonjour,

Une fonction perso à, mettre dans un module standard (Module1)

Function WsExist(Nom$) As Boolean
On Error Resume Next
WsExist = Sheets(Nom).Index
End Function

Utilisation :

Sub test()
If WsExist("Feuil1") Then MsgBox "Feuil1 Existe"
End Sub

A+

bonjour galopin01,

Merci pour ton code.

Il répond en partie à mes attentes, car il ne teste que la présence de la feuille, il ne l'écrase pas (ou ne la supprime pas) si elle éxiste déjà.

Je continue à chercher, ça risque de me prendre un peu de temps, mon niveau en VBA est assez faible, mais je n désespère pas,

Avec ces 3 réponses, je devrai aboutir à mon résultat.

A bientôt, encore merci à tous.

Cordialement,

xorsankukai

Bonjour,

Remplace ta macro par celle-ci :

Private Sub CommandButton1_Click()
Dim Mois$, o
Application.ScreenUpdating = False
   With Sheets("Modèle")
      Mois = UCase(Format(.Range("H5"), "mmm"))
      On Error Resume Next
      Set o = Sheets(Mois).Index
      If Not o Is Nothing Then
         Application.DisplayAlerts = False
         Worksheets(Mois).Delete
      End If
      .Copy After:=Sheets(Sheets.Count)
   End With
   With ActiveSheet
      .Name = Mois
      .Shapes("CommandButton1").Delete
   End With
Sheets("Modèle").Activate
MsgBox ("Le mois de " & Mois & "" & " est sauvegardé")
End Sub

PS : Inutile de rajouter la macro donnée précédemment.

A+

Bonjour le fil, bonjour le forum,

Voilà comment je verrais les choses :

Private Sub CommandButton1_Click()
Dim x As String 'déclare la variable x
Dim O As Worksheet 'déclare la variable O (Onglet)

ActiveCell.Select 'enlève le focus au bouton
x = UCase(Format(Range("H5").Value, "mmmm")) 'définit la variable x
On Error GoTo suite 'gestion des erreurs (en cas d'erreur, va à l'étiquette "suite")
Set O = Sheets(x) 'définit l'onglet O (génère une erreur si cet onglet n'existe pas)
Application.DisplayAlerts = False 'masque les message Exel
If MsgBox("l'onglet " & x & " existe déjà ! Voulez-vous le remplacer ?", vbYesNo, "REMPLACEMENT") = vbYes Then 'condition 1 : si "Oui" au message
    O.Delete 'supprime l'onglet O
    GoTo suite 'va à l étiquette "suite"
Else 'si "Non" au message
   If MsgBox("Voulez vous le supprimer ?", vbYesNo, "SUPPRESSION") = vbYes Then 'condition 2 : si "Oui" au second message
        O.Delete 'supprime l'onglet O
    End If 'fin de la condition 2
    Application.DisplayAlerts = True 'affiche les messages d'Excel
    Exit Sub 'sort de la procédure
End If 'fin de la condition 1
suite: 'étiquette
Application.DisplayAlerts = True 'affiche les messages d'Excel
Sheets("Modèle").Copy After:=Sheets(Sheets.Count)
ActiveSheet.Shapes("CommandButton1").Select
Selection.Delete                                     'Effacer le bouton de sauvegarde
ActiveSheet.Name = x     'ex:JANVIER
Sheets("Modèle").Select                              'on revient au modèle après sauvegarde'
MsgBox ("Le mois de " & x & "" & " est sauvegardé")
End Sub

Bonsoir Galopin01 et ThauThème,

Je vous remercie sincèrement pour votre aide! Vos 2 codes fonctionnent à merveille !

Je clôture donc ce post.

Bonne soirée,

A bientôt sur le forum

Cordialement,

xorsankukai

Rechercher des sujets similaires à "tester feuille deja existante"