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

VBA Access Discussion :

Stopper l'execution d'une sous-procedure [AC-2007]


Sujet :

VBA Access

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Homme Profil pro
    Consultant ERP
    Inscrit en
    Février 2009
    Messages
    45
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Consultant ERP
    Secteur : Industrie

    Informations forums :
    Inscription : Février 2009
    Messages : 45
    Par défaut Stopper l'execution d'une sous-procedure
    Bonjour,

    Cela doit-être tout simple mais voici mon problème :

    J'ai un formulaire (Form1) avec un bouton.
    la procedure de ce bouton (SubB1Click):
    lance une procedure de vérification qui ouvre ou n'ouvre pas un deuxième formulaires (Form2) formulaire NON modale (obligatoire).
    attend la fermeture du Form2 pour ouvrir un troisième formulaire (Form3).

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    Private Sub ImpDevis_Click()
        Me.Refresh
        ChangeAdresse_Click 'vérifie l'existance des adresses
        Do
            DoEvents
        Loop While CurrentProject.AllForms("ForS_ChoixContAdressComm").IsLoaded
        DoCmd.OpenReport "EtatCommande", acViewPreview, , , , Me.ImpDevis.Tag
     
    End Sub
    Mais si l'on change d'enregistrement courant dans le Form1 je ferme le Form2 (qui est lier à l'enregistrement du Form1) et il ne faut alors plus ouvrir le Form3.

    Donc dans le cas du déclenchement de l'evenement current du Form1 :
    Je souhaite que SubB1Click soit stoppé.
    existe-t-il un genre de exite sub xxx ?

    Pierre

  2. #2
    Rédacteur/Modérateur
    Avatar de argyronet
    Homme Profil pro
    Panseur de bobos en solutions ETL
    Inscrit en
    Mai 2004
    Messages
    5 134
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Panseur de bobos en solutions ETL
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2004
    Messages : 5 134
    Billets dans le blog
    5
    Par défaut
    Bonjour,

    L'ouverture des formulaire étant séquentielle, il te suffit d'aimenter une valeur booléenne quelque part (Variable publique ou Propriété ou valeur dans une table) qui sera lue selon la condition voulue et si la condition répond à ce qui est attendu, alors on peut effectuer l'opération désirée.
    Tu peux passer es paramètres à l'argument OpenArgs de la méthode OpenForm qui peut dans certains cas s'avérer utile...

    Argy
    Ce qui donne son sens à la communication, c´est la réponse que l´on obtient. Si vous n´obtenez pas la réponse voulue, communiquez différemment.

    Ils comptent sur vous...
    Web Site@Mail
    Tutoriels : Déployez vos applications Access 2010 à 2019 */* Réalisez un Assistant de présaisie...
    MDB Viewer : Visionneuse Access v4.0

  3. #3
    Membre averti
    Homme Profil pro
    Consultant ERP
    Inscrit en
    Février 2009
    Messages
    45
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Consultant ERP
    Secteur : Industrie

    Informations forums :
    Inscription : Février 2009
    Messages : 45
    Par défaut
    Très actif grâce a des gents comme toi.
    Bonjour et merci Argyronet,

    Suite a ta remarque j'ai simplement ajouté un test dans ma boucle pour sortir s'il y a un changement de référence dans mon Form1
    Voici le code complet.
    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
    Private Sub ImpQuoi(ImpTag As String)
        Dim TmpRefCom As Long
     
        TmpRefCom = Nz(Me.RefETA_Commande, 0)
     
        Me.Refresh
        ChangeAdresse_Click 'vérifie l'existance des adresses
                            'et ouvre le formulaire de choix si inexistantes
        Do ' attend la fermeture du formulaire de choix pour lancer l'impression
            DoEvents
        Loop While CurrentProject.AllForms("ForS_ChoixContAdressComm").IsLoaded And Me.RefETA_Commande = TmpRefCom
     
        If Me.RefETA_Commande = TmpRefCom Then 'Annule l'impression s'il y a un changement de la commande active
            DoCmd.OpenReport "EtatCommande", acViewPreview, , , , ImpTag
        Else
            MsgBox "Arrêt de l'impression suite au changement de la commande active", vbExclamation
        End If
     
    End Sub
    ps1 : j'utilise déjà "OpenArgs" dans mon premier code (passage du paramètre : "Me.ImpDevis.Tag" ; remplacer par la variable "ImpTag" dans celui-ci).
    ps2 : je te soutiens pour les abeilles !
    ps3 : encore merci pour ton aide et pour ce forum Professionnel très actif grâce à des personnes comme toi.

    Pierre

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

Discussions similaires

  1. Réponses: 2
    Dernier message: 14/12/2009, 15h30
  2. [Mysql 3.23] stopper l'execution d'une requete
    Par griese dans le forum Requêtes
    Réponses: 2
    Dernier message: 04/01/2007, 09h17
  3. Déclarer une sous-procédure
    Par omisster dans le forum Langage
    Réponses: 1
    Dernier message: 05/12/2006, 22h42
  4. execution d'une macro d'access sous delphi
    Par galendor_d'ambre dans le forum Bases de données
    Réponses: 6
    Dernier message: 10/02/2004, 15h58
  5. Execution d'une procedure avec TNotifyEvent;
    Par Chupakabra dans le forum Langage
    Réponses: 2
    Dernier message: 30/01/2003, 14h50

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