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 :

Sub -> Procédure -> Retour sub


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Inscrit en
    Juin 2007
    Messages
    25
    Détails du profil
    Informations forums :
    Inscription : Juin 2007
    Messages : 25
    Par défaut Sub -> Procédure -> Retour sub
    Salut, je souhaiterai savoir comment faire pour revenir à un certain niveau de ma sub?

    En gros j'ai:

    1)
    Sub progPrincipal()

    a)Instructions...
    b)Instructions...
    'Appel de la procédure
    procRecherche
    'Nous allons donc dans la procedure...
    c)Instructions...

    End sub

    2)
    Private sub procRecherche()

    Instructions...
    Instructions...
    Instructions...
    'Je veux retourner à l'instruction C de mon programme principal

    End sub

    Comment puis-je réaliser cela?

  2. #2
    Membre éclairé
    Profil pro
    Inscrit en
    Novembre 2007
    Messages
    306
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2007
    Messages : 306
    Par défaut
    Bonjour,

    Si tu ne veux y retourner qu'une fois, le plus simple est faire :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Public MonBooleen as boolean
    1)
    Sub progPrincipal()


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    if MonBooleen=true then goto Suite

    a)Instructions...
    b)Instructions...
    'Appel de la procédure
    procRecherche
    'Nous allons donc dans la procedure...


    Suite :

    c)Instructions...

    End sub

    2)
    Private sub procRecherche()

    Instructions...
    Instructions...
    Instructions...
    'Je veux retourner à l'instruction C de mon programme principal

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    MonBooleen=true
    call progPrincipal
    End sub

  3. #3
    Membre éclairé
    Profil pro
    Inscrit en
    Novembre 2007
    Messages
    306
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2007
    Messages : 306
    Par défaut
    Modification :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Public MonBooleen as Boolean

    1)
    Sub progPrincipal()

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    if MonBooleen=true then GoTo Suite

    a)Instructions...
    b)Instructions...
    'Appel de la procédure
    procRecherche
    'Nous allons donc dans la procedure...

    c)Instructions...

    End sub

    2)
    Private sub procRecherche()

    Instructions...
    Instructions...
    Instructions...
    'Je veux retourner à l'instruction C de mon programme principal

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    if MonBooleen=False then 
      MonBooleen=True
    else
      MonBooleen=False
    end if
     
    if MonBooleen=True then Call progPrincipal
    End sub

  4. #4
    Expert confirmé

    Profil pro
    Inscrit en
    Mai 2005
    Messages
    3 419
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2005
    Messages : 3 419
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
    Function testappel(ou As String) As Variant
    Select Case ou
    Case "prem"
    MsgBox ("premier")
    Case "Second"
    MsgBox ("second")
    Case Else
    MsgBox ("coucou")
    End Select
    End Function

  5. #5
    Membre éprouvé Avatar de zebulon2212
    Inscrit en
    Juin 2006
    Messages
    77
    Détails du profil
    Informations personnelles :
    Âge : 41

    Informations forums :
    Inscription : Juin 2006
    Messages : 77
    Par défaut
    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
    Public Sub Procedure1()
        instruction A
        instruction B
     
        call Procedure2
     
        instruction C
     
    end Sub
     
    Public Sub Procedure2()
        instruction A
        instruction B
        If <expression booleene> Then
            exit sub
        End If
        instruction C
    End Sub
    En fait dans la procedure2 si l'expression booleene est vrai tu retourne automatiquement à l'instruction C de la procedure1
    si tu commence a faire des GOTO ton code va etre un vrai bordel
    Mieux vaux ce servir de boucle (FOR, DO While loop, Do Until loop, Do loop While, Do loop Until, etc)

  6. #6
    Membre éprouvé Avatar de Many31
    Profil pro
    Inscrit en
    Février 2007
    Messages
    198
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Février 2007
    Messages : 198
    Par défaut
    Je vois pas ou est la question et pourquoi aussi tout le monde en fait a sa sauce perso….

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    Private sub progPrincipal()
     
    a)
    b)
    call procRecherche
    c)
     
    end sub
     
    Public sub procRecherche()
     
    a')
    b')
    end sub
    a la fin de procRecherche tu reviens directement dans la procédure principale au niveau de l'instruction C et basta.... franchement je vois pas le souci... met un public au lieu d'un private peut etre

  7. #7
    Membre averti
    Inscrit en
    Juin 2007
    Messages
    25
    Détails du profil
    Informations forums :
    Inscription : Juin 2007
    Messages : 25
    Par défaut
    Je ne vais pas mettre mon code qui fait environ 300 lignes...

    J'ai préféré généraliser mon travail

    Mon problème:
    1) Je suis dans la procédure 1
    2) Je fais des actions dans la procédure 1
    3) Dans la procédure 1, suivant certaines conditions, je dois appeller la procédure 2
    4) La procédure 2 est appelée, les actions de la procédure 2 sont exécutées
    5) A la fin de cette procédure 2, je veux revenir dans la procédure 1, juste après l'appel de la procédure.

    C'est mon problème, je ne veux pas RELANCER la procédure 1, je souhaite revenir à la procédure 1 à un endroit précis.

    C'est plus clair?

  8. #8
    Membre averti
    Profil pro
    Étudiant
    Inscrit en
    Juin 2007
    Messages
    59
    Détails du profil
    Informations personnelles :
    Âge : 36
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juin 2007
    Messages : 59
    Par défaut
    Salut,

    N'oublie pas de mettre ton code dans des balises de code la prochaine fois !!!

    Tu veux, de ta procédure procrecherche re-exécuter ton instruction "c" en faite ?

  9. #9
    Membre chevronné

    Profil pro
    Inscrit en
    Octobre 2004
    Messages
    453
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2004
    Messages : 453
    Par défaut
    Tu veux retourner à l'instruction c de progPrincipale avant de terminer progRecherche? C'est pas possible et, de toutes façons, ce n'est pas une bonne technique de programmation; il y a toujours moyen de faire quelque chose sans procéder ainsi.

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

Discussions similaires

  1. [V8] Procédure de retour de marchandises défectueuses chez le fournisseur
    Par davidcom2b dans le forum Odoo (ex-OpenERP)
    Réponses: 0
    Dernier message: 24/06/2015, 11h22
  2. Upgrade 10g => 11g : Procédure de retour arrière
    Par zidane2012 dans le forum Oracle
    Réponses: 1
    Dernier message: 26/02/2013, 11h54
  3. [XL-2003] Lancer une sub avec le nom de sub contenu dans variable
    Par K-limero dans le forum Macros et VBA Excel
    Réponses: 6
    Dernier message: 31/08/2011, 16h34
  4. procédure stockée retour de données
    Par majong dans le forum SQL Procédural
    Réponses: 0
    Dernier message: 30/08/2011, 23h16
  5. Call Sub NomDe Procédure
    Par minihart dans le forum VB 6 et antérieur
    Réponses: 1
    Dernier message: 08/02/2008, 12h06

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