IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Macros et VBA Excel Discussion :

On Error GoTo


Sujet :

Macros et VBA Excel

  1. #1
    Membre éclairé Avatar de RastaBomboclat
    Homme Profil pro
    Technicien Help Desk
    Inscrit en
    Novembre 2014
    Messages
    240
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : France, Seine et Marne (Île de France)

    Informations professionnelles :
    Activité : Technicien Help Desk
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Novembre 2014
    Messages : 240
    Par défaut On Error GoTo
    Bonsoir,

    J’ai écrit un code qui fonctionne très bien, mais seulement sans gestion d’erreur.
    Quand j’insère la ligne de la gestion d’erreur "On Error GoTo DoublonDeNomDeFeuil", même quand il n’y a pas d’erreur le code de la gestion d’erreur est exécuté.
    Où mettre cette ligne de gestion d’erreur pour qu’elle ne se déclenche que lorsqu’il y a réellement erreur ?
    L’erreur arrive en principe en ligne 14, parce qu’il rencontre un nom identique. Je voudrais qu’à ce niveau-là il lance la gestion d’erreur.

    Merci d’avance pour vos solutions.

    voici le code:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    Sub CreateNewDailySheet()
    Dim MaDate As Date
    MaDate = Date
    Dim RepMsg
    RepMsg = MsgBox(Application.UserName & "," & vbCr & "Vous allez créer une nouvelle feuille avec le comme nom, la date d'aujourd'hui." & _
    vbCr & "Voulez-vous continuer?", vbYesNo, "Rasta Bomboclat - Daily Cash Position")
     
        If RepMsg = vbNo Then
            Exit Sub
        Else:
            On Error GoTo DoublonDeNomDeFeuil
            ActiveSheet.Select
            ActiveSheet.Copy after:=Sheets(Sheets.Count)
            ActiveSheet.Name = Format(MaDate, "dd-mmm-yyyy")
            UpdateGrafico
        End If
     
    DoublonDeNomDeFeuil:
        If MsgBox(Application.UserName & "," & vbCr & "Il existe deja une feuille avec comme nom, la date d'aujourd'hui." & vbCr & _
        "L'application va créer un indice du type '(x)' après le nome de la feuille" & vbCr & "Voulez-vous continuer", vbCritical + vbYesNo, "Rasta Bomboclat - Doublon nom de feuille!") = vbNo Then
            Application.DisplayAlerts = False
                ActiveSheet.Delete
            Application.DisplayAlerts = True
        Else: ActiveSheet.Name = Format(MaDate, "dd-mmm-yyyy")
            UpdateGrafico
        End If
    End Sub

  2. #2
    Expert confirmé

    Homme Profil pro
    Curieux
    Inscrit en
    Juillet 2012
    Messages
    5 169
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Curieux
    Secteur : Arts - Culture

    Informations forums :
    Inscription : Juillet 2012
    Messages : 5 169
    Billets dans le blog
    5
    Par défaut
    Bonjour,

    quand tu places des étiquettes de gestion d'erreur, VBA ira les lire lors de l'exécution même si aucun Goto n'y renvoie.

    tu dois toujours placer un Exit Sub juste avant tes étiquettes, ainsi qu'un Exit Sub entre chaque étiquette pour éviter qu'un Goto X passe ensuite dans les étiquettes Y et Z si elles sont situées en dessous

  3. #3
    Rédacteur
    Avatar de Philippe Tulliez
    Homme Profil pro
    Formateur, développeur et consultant Excel, Access, Word et VBA
    Inscrit en
    Janvier 2010
    Messages
    13 184
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Formateur, développeur et consultant Excel, Access, Word et VBA

    Informations forums :
    Inscription : Janvier 2010
    Messages : 13 184
    Billets dans le blog
    53
    Par défaut
    Bonjour,
    même quand il n’y a pas d’erreur le code de la gestion d’erreur est exécuté.
    C'est normal parce-qu'il faut placer un Exit Sub juste avant la ligne 18 (Etiquette DoublonDeNomDeFeuil:)
    Philippe Tulliez
    Ce que l'on conçoit bien s'énonce clairement, et les mots pour le dire arrivent aisément. (Nicolas Boileau)
    Lorsque vous avez la réponse à votre question, n'oubliez pas de cliquer sur et si celle-ci est pertinente pensez à voter
    Mes tutoriels : Utilisation de l'assistant « Insertion de fonction », Les filtres avancés ou élaborés dans Excel
    Mon dernier billet : Utilisation de la fonction Dir en VBA pour vérifier l'existence d'un fichier

  4. #4
    Membre éclairé Avatar de RastaBomboclat
    Homme Profil pro
    Technicien Help Desk
    Inscrit en
    Novembre 2014
    Messages
    240
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : France, Seine et Marne (Île de France)

    Informations professionnelles :
    Activité : Technicien Help Desk
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Novembre 2014
    Messages : 240
    Par défaut
    Merci pour vos réponses, Joe.levrai et Philippe Tulliez . J’ai réécrit mon code (Ligne 24 aussi retouchée), comme ci-dessous et mais maintenant il me donne un autre message d’erreur disant : « Ce nom est déjà utilisé. Essayer un autre nom. » Et il me propose le débogage. Si je passe, ça marche, s’il j’accepte le débogage, il me surligne la ligne 25. Pour moi, le fait que si on refuse le débogage, le reste va bien, c'est OK. Comment faire pour que ce message de débogagene s'affiche plus?

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    Sub CreateNewDailySheet()
    Dim MaDate As Date
    MaDate = Date
    Dim RepMsg
    RepMsg = MsgBox(Application.UserName & "," & vbCr & "Vous allez créer une nouvelle feuille avec le comme nom, la date d'aujourd'hui." & _
    vbCr & "Voulez-vous continuer?", vbYesNo, "Rasta Bomboclat - Daily Cash Position")
     
        If RepMsg = vbNo Then
            Exit Sub
        Else:
            On Error GoTo DoublonDeNomDeFeuil
            ActiveSheet.Select
            ActiveSheet.Copy after:=Sheets(Sheets.Count)
            ActiveSheet.Name = Format(MaDate, "dd-mmm-yyyy")
            UpdateGrafico
        End If
    Exit Sub
    DoublonDeNomDeFeuil:
        If MsgBox(Application.UserName & "," & vbCr & "Il existe deja une feuille avec comme nom, la date d'aujourd'hui." & vbCr & _
        "L'application va créer un indice du type '(x)' après le nome de la feuille" & vbCr & "Voulez-vous continuer", vbCritical + vbYesNo, "Rasta Bomboclat - Doublon nom de feuille!") = vbNo Then
            Application.DisplayAlerts = False
                ActiveSheet.Delete
            Application.DisplayAlerts = True
        Else: On Error Resume Next
            ActiveSheet.Name = Format(MaDate, "dd-mmm-yyyy")
            UpdateGrafico
        End If
    End Sub

  5. #5
    Rédacteur
    Avatar de Philippe Tulliez
    Homme Profil pro
    Formateur, développeur et consultant Excel, Access, Word et VBA
    Inscrit en
    Janvier 2010
    Messages
    13 184
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Formateur, développeur et consultant Excel, Access, Word et VBA

    Informations forums :
    Inscription : Janvier 2010
    Messages : 13 184
    Billets dans le blog
    53
    Par défaut
    Bonjour,
    Cela signifie que le nom que tu donnes à ta feuille active existe déjà.

    Voir sur le même sujet Comment incrémenter le nom d’une feuille Excel, lorsqu’il existe déjà ?
    Philippe Tulliez
    Ce que l'on conçoit bien s'énonce clairement, et les mots pour le dire arrivent aisément. (Nicolas Boileau)
    Lorsque vous avez la réponse à votre question, n'oubliez pas de cliquer sur et si celle-ci est pertinente pensez à voter
    Mes tutoriels : Utilisation de l'assistant « Insertion de fonction », Les filtres avancés ou élaborés dans Excel
    Mon dernier billet : Utilisation de la fonction Dir en VBA pour vérifier l'existence d'un fichier

  6. #6
    Membre éclairé Avatar de RastaBomboclat
    Homme Profil pro
    Technicien Help Desk
    Inscrit en
    Novembre 2014
    Messages
    240
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : France, Seine et Marne (Île de France)

    Informations professionnelles :
    Activité : Technicien Help Desk
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Novembre 2014
    Messages : 240
    Par défaut
    Merci Philipe

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. pourquoi on error goto ne fonctionne qu'une seule fois ?
    Par alsimbad dans le forum Général VBA
    Réponses: 9
    Dernier message: 05/09/2014, 13h09
  2. pb avec "On error goto"
    Par malingue dans le forum Access
    Réponses: 9
    Dernier message: 20/06/2006, 20h54
  3. [vb6]On Error goto 0
    Par riesseg dans le forum VB 6 et antérieur
    Réponses: 2
    Dernier message: 20/04/2006, 21h04
  4. On error goto Err : goto non exécutée au 2ème appel
    Par charliejo dans le forum Access
    Réponses: 1
    Dernier message: 11/04/2006, 16h00
  5. [VBA-E]Pb "On Error GoTo"
    Par hdidan dans le forum Macros et VBA Excel
    Réponses: 33
    Dernier message: 04/04/2006, 19h41

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo