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 :

[E-03] Problème Exit Sub


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé Avatar de allergique
    Homme Profil pro
    Inscrit en
    Août 2006
    Messages
    151
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Yvelines (Île de France)

    Informations forums :
    Inscription : Août 2006
    Messages : 151
    Par défaut [E-03] Problème Exit Sub
    Bonjour,

    J'ai une macro qui fait appel à une 2ème macro.

    Dans cette 2ème macro dans certains cas je souhaite arrêter complètement l'exécution du programme.

    J'ai utilisé "exit sub", mais le problème est que la macro 2 s'arrête et continue sur la macro de base.

    Savez-vous si il est possible d'arrêter totalement les macros imbriquées entre elles?

    Merci d'avance

  2. #2
    Inactif  

    Profil pro
    Inscrit en
    Juillet 2007
    Messages
    4 555
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2007
    Messages : 4 555
    Par défaut
    Bonsoir,

    Utilise une variable booléenne (False/true) soit globale soit envoyée en paramètres

    Dans ta macro2 : passe cette variable à True juste avant ton exit sub
    Dans ta macro1 : juste après l'appel de la macro2 : ===>>> exit sub si ta variable = true (et tu la repasses à false juste avant l'exit sub)

  3. #3
    Membre confirmé Avatar de allergique
    Homme Profil pro
    Inscrit en
    Août 2006
    Messages
    151
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Yvelines (Île de France)

    Informations forums :
    Inscription : Août 2006
    Messages : 151
    Par défaut
    Citation Envoyé par ucfoutu Voir le message
    Bonsoir,

    Utilise une variable booléenne (False/true) soit globale soit envoyée en paramètres
    Merci pour ta réponse ucfoutu...

    J'ai bien saisi ton principe. Par contre, une variable globale ou envoyée en paramètre, c'est quoi? Est-ce que ça signifie que je dois la déclarer en public?

  4. #4
    Inactif  

    Profil pro
    Inscrit en
    Juillet 2007
    Messages
    4 555
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2007
    Messages : 4 555
    Par défaut
    En public si partagé entre deux (ou plus) modules
    En privé si dans le même module, par exemple ainso (exemple) :

    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
    Private couic As Boolean
     
    Private Sub Command1_Click()
      titi
    End Sub
    Private Sub titi()
     couic = False
     a = InputBox("entrez ce que vous voulez")
     MsgBox "vous avez rentré " & a & " on continue"
     toto
     If couic Then
       Exit Sub
     Else
       MsgBox "si vous me voyez, c'est que vous avez bien saisi un chiffre chez toto"
     End If
    End Sub
    Private Sub toto()
      a = InputBox("entrez un chiffre")
      If Not IsNumeric(a) Then
        couic = True
        Exit Sub
      Else
        MsgBox "vous avez rentré un chiffre. Alors on continue et vous me voyez"
      End If
    End Sub
    autre exemple, cette fois-ci sans variable globale, mais en passant la variable en paramètre :

    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
    Private Sub Command1_Click()
      titi
    End Sub
    Private Sub titi()
     Dim couic As Boolean
     couic = False
     a = InputBox("entrez ce que vous voulez")
     MsgBox "vous avez rentré " & a & " on continue"
     toto couic
     If couic Then
       Exit Sub
     Else
       MsgBox "si vous me voyez, c'est que vous avez bien saisi un chiffre chez toto"
     End If
    End Sub
    Private Sub toto(couic As Boolean)
      a = InputBox("entrez un chiffre")
      If Not IsNumeric(a) Then
        couic = True
        Exit Sub
      Else
        MsgBox "vous avez rentré un chiffre. Alors on continue et vous me voyez"
      End If
    End Sub
    et on pourraut en inventer d'autres, toujours avec le même principe....
    Ce qui compte, pour toi, c'est d'adapter ce principe simple à ton cas (que je ne connais pas...)

  5. #5
    Membre confirmé Avatar de allergique
    Homme Profil pro
    Inscrit en
    Août 2006
    Messages
    151
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Yvelines (Île de France)

    Informations forums :
    Inscription : Août 2006
    Messages : 151
    Par défaut
    C'est parfait.

    Je ne connaissais pas le principe de variable en paramètre.

    Merci beaucoup pour l'explication

    Bonne soirée

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

Discussions similaires

  1. différence entre end sub et exit sub
    Par TaymouWan dans le forum VB.NET
    Réponses: 4
    Dernier message: 15/12/2009, 09h38
  2. Problème : exit
    Par Porteuris dans le forum Débuter
    Réponses: 5
    Dernier message: 27/11/2008, 15h42
  3. Problème d'Exit Sub
    Par DeaD78 dans le forum Macros et VBA Excel
    Réponses: 4
    Dernier message: 23/06/2008, 09h53
  4. equivalent exit sub
    Par mapmip dans le forum ASP.NET
    Réponses: 1
    Dernier message: 08/03/2007, 16h51
  5. Problème de sub avec un sous formulaire
    Par SpyesX dans le forum Access
    Réponses: 5
    Dernier message: 08/03/2006, 00h27

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