Gestion des erreurs

Bonjour,

Je voudrai gérer l'erreur de doublon du nom de la feuille lors de la création d'une nouvelle feuille. J'ai utilisé l'instruction On Error GoTo mais ça ne marche pas. Pouvez-vous m'aider SVP?

NomNewForm = InputBox("Merci de saisir le nom de la nouvelle feuille")

'Si le nom de la feuille n'est pas saisie ou si on clique sur annuler
    If NomNewForm = "" Then
      ActiveSheet.Delete
      Exit Sub
    End If
    ActiveSheet.Name = NomNewForm

Merci par avance.

Cordialement,

Bonjour

Personnellement j'utilise une fonction qui me retourne True si la feuille existe et False dans le cas contraire

A toi de gérer le résultat

Function FeuilleExiste(Nom As String) As Boolean
  On Error Resume Next
  FeuilleExiste = Sheets(Nom).Name <> ""
  On Error GoTo 0
End Function

D'après de ce que j'entrevoie dans ton code tu effaces la feuille si pas de nom de saisie : Pourquoi l'avoir déjà créée ?

Tu ne la crée qui si un nom est saisie

Merci Bonzai64 de ta réponse.

Ta solution fonctionne à merveille

Mais je n'ai pas très bien compris les instructions :

FeuilleExiste = Sheets(Nom).Name <> ""
  On Error GoTo 0 

En fait je supprime la feuille si le nom n'est pas saisi ou bien si on clique sur annuler, ceci est pour obliger l'utilisateur à saisir le nom de la feuille.

Merci


L'idéal est de demander le nom de la feuille avant de la créer

merci Bonzai64

Bonjour

FeuilleExiste = Sheets(Nom).Name <> ""

Si le nom de la feuille est différend d'une chaîne vide (donc la feuille existe) alors FeuilleExiste = Vrai (True)

On Error GoTo 0 

Remet la gestion des erreurs par défaut

Pas trop utile dans ce cas, car elle sera remise par défaut en sortie de la function

hindsl a écrit :

L'idéal est de demander le nom de la feuille avant de la créer

Alors pourquoi ne pas le faire

Merci pour ces éclaircissements Bonzai64.

La modification a été faite après ta question

' Récupérer le nom de la feuille récap du mois
    NomFeuilleRecap = ActiveSheet.Name

Saisie:
    NomNewForm = InputBox("Merci de saisir le nom de la nouvelle feuille")

'Si le nom de la feuille n'est pas saisie ou si on clique sur annuler
    If NomNewForm = "" Then
      rep = MsgBox("Vous avez oublié de saisir le nom de la nouvelle feuille. Voulez-vous la créer?", vbYesNo)
      If rep = vbYes Then
        GoTo Saisie
      Else
        Exit Sub
      End If
    End If

'Si le nom de la nouvelle feuille saisie existe
    If FeuilleExiste(NomNewForm) Then
      rep = MsgBox("Le Nom de la feuille existe déjà. Merci de saisir un nouveau:", vbOKOnly)
      GoTo Saisie
    Else
      ' Créer une copie du modèle de la grille
      Sheets("Modèle").Copy Before:=Sheets(NomFeuilleRecap)
      ActiveSheet.Name = NomNewForm
    End If

Merci beaucoup de ton aide

Rechercher des sujets similaires à "gestion erreurs"