Précédent   Forum des professionnels en informatique > Logiciels > Microsoft Office > Access > VBA Access
VBA Access Le forum pour les questions relatives au code VBA sous Access, et à son environnement de développement VBE.
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 07/03/2011, 14h08   #1
Membre du Club
 
Homme Pierre SERANT
Consultant ERP
Inscription : février 2009
Messages : 40
Détails du profil
Informations personnelles :
Nom : Homme Pierre SERANT
Localisation : Belgique

Informations professionnelles :
Activité : Consultant ERP
Secteur : Industrie

Informations forums :
Inscription : février 2009
Messages : 40
Points : 44
Points : 44
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 :
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
pierre.serant est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 08/03/2011, 16h59   #2
Rédacteur/Modérateur

 
Avatar de argyronet
 
Homme Jean-Philippe AMBROSINO
Panseur de bobos en solutions ETL
Inscription : mai 2004
Messages : 3 650
Détails du profil
Informations personnelles :
Nom : Homme Jean-Philippe AMBROSINO
Localisation : France

Informations professionnelles :
Activité : Panseur de bobos en solutions ETL
Secteur : Finance

Informations forums :
Inscription : mai 2004
Messages : 3 650
Points : 6 210
Points : 6 210
Envoyer un message via MSN à argyronet
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
__________________
Ils comptent sur vous...

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.

Web Site@Mail
Livres : VBA pour OFFICE 2007 et MICROSOFT ACCESS 2007
Nouveau Tutoriel : Déployer vos applications avec Microsoft Access 2010
MDB Viewer : Visionneuse Access v4.0
argyronet est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 09/03/2011, 08h50   #3
Membre du Club
 
Homme Pierre SERANT
Consultant ERP
Inscription : février 2009
Messages : 40
Détails du profil
Informations personnelles :
Nom : Homme Pierre SERANT
Localisation : Belgique

Informations professionnelles :
Activité : Consultant ERP
Secteur : Industrie

Informations forums :
Inscription : février 2009
Messages : 40
Points : 44
Points : 44
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 :
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
pierre.serant est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 16h01.


 
 
 
 
Partenaires

Hébergement Web