bonjour
Est il possible d'arreter une routine ou une fonction vba utilisée dans un formulaire sur ouverture d'un autre formulaire.
Merci par avance de vos réponse.
bonjour
Est il possible d'arreter une routine ou une fonction vba utilisée dans un formulaire sur ouverture d'un autre formulaire.
Merci par avance de vos réponse.
Bonjour,
Il est possible d'arrêter tout code visual basic en execution en utilisant les touches de raccourcis clavier Ctrl + Pause.
loi de LeBlanc : Plus tard signifie jamais. extrait de Coder proprement Auteur:Robert C. Martin
ce que je recherche c'est de l'arreter à partir du code, sur ouverture ou sur chargement
a+
Il est possible d'ajouter un break point sur la déclaration de la méthode (en appuyant sur la touche F9) ou d'écrire l'instruction Stop sur la première ligne de la méthode.
loi de LeBlanc : Plus tard signifie jamais. extrait de Coder proprement Auteur:Robert C. Martin
Bonjour,
Il est toujours possible d'arrêter une procédure en vérifiant la réalisation d'une condition de manière cyclique.
Ce message vous a été utile ? Si oui, cliquez sur
Mes tutoriels Access
La rubrique Microsoft Access
Cours et tutoriels pour apprendre Access
La FAQ Access
Le Forum Access
Offres d'emploi développeur Access
Je vous remercie pour vos réponses, seulement je n'ai aucune idée comment faire.
Si vous aviez des exemples ?
Quelle est la structure de ton code ?
Par exemple sit tu as une boucle tu peux à chaque passage tester un booléen en entrée de boucle
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9 Dim joueEncore as Boolean ... début du code... joueEncore = true Do while Not joueEncore if [condition de fin de boucle] or [test formulaire ouvert] then joueEncore = false end if loop
Suite à ta lecture, en fait je crois que ce que je voudrais c'est qq chose comme :
ou encore
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8 Private Sub Form_Timer() If forms.FrmContacts.Visible = false Then 'Frm contacts est indépendant Automat_Annucapt else exit sub end if End Sub
Mais aucun des deux ne marche
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9 Private Sub Form_Timer() If forms.FrmContacts.Visible Then 'Frm contacts est indépendant exit sub else Automat_Annucapt end if End Sub
Est ce que cette forme est correcte ?
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12 Private Sub Form_Timer() Dim Automat_Annucapt As Boolean If forms.FrmContacts.Visible Then 'Frm contacts est indépendant Automat_Annucapt = False else Automat_Annucapt = True end if End Sub
Pour que la valeur du booléen soit récupérable il faut le déclarer en variable publique dans le module de la procédure à arrêter.
Si tu utilises les options citées. Sinon c'est en tête du module qu'il faut déclarer ceci.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3 Option Compare Database Option Explicit Public traitEncore As boolean
Ensuite tu peux mettre à jour la valeur de traitEncore sur un évènement timer ou à louverture du formulaire.
Le troisième point c'est de tester cette valeur dans le code à interrompre.
Si tu n'arrives pas à le placer dans une boucle je pense que le niveau de complexité de l'arret du code va croître très vite (gestion de thread peut-être).
Je n'ai pas compris ou je dois mettre
Est ce dans le module ou se trouve cette routine ?
Code : Sélectionner tout - Visualiser dans une fenêtre à part Public Automat_Annucapt As Boolean
Ou est ce dans le code du formulaire possedant le code Form_Timer ?
Je vais essayer les deux ...
Le reste est écrit pareil :
Ca ne bugue pas mais ca ne fonctionne pas ..
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11 Private Sub Form_Timer() Dim Automat_Annucapt As Boolean If forms.FrmContacts.Visible Then Automat_Annucapt = False else Automat_Annucapt = True end if End Sub
Merci a +
Bonjour,
Il faut que tu mettes le booléen Automat_Annucapt au tout début du module où est la procédure à arrêter.
Ensuite ce n'est pas parce que tu changes la valeur du booléen que la procédure va s'arrêter.
Pour que la procédure s'arrête il faut qu'elle lise la valeur du booléen.
OU
Il faut que tu gères le thread d'éxécution du code et que tu le casses.
Merci pour tes explications, mais n'étant pas informaticien ca devenait compliqué pour moi.
J'ai donc contourné le problème autrement. J'ai écrit le code ainsi :
Sur le second formulaire j'ai changé le propriétés.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3 Private Sub Form_Timer() Automat_Annucapt End Sub
- Dans le do.cmd.openform j'avais un acdialog à la fin que j'ai viré
- J'ai rendu le formulaire indépendant
Et je lui ai donné une taille prédéfinie :
Le code ne s'arrete pas, mais le fait d'ouvrir le second formulaire ne le fait pas buguer non plus.
Code : Sélectionner tout - Visualiser dans une fenêtre à part DoCmd.MoveSize , , 8800, 6500
Encore merci et a +
Vous avez un bloqueur de publicités installé.
Le Club Developpez.com n'affiche que des publicités IT, discrètes et non intrusives.
Afin que nous puissions continuer à vous fournir gratuitement du contenu de qualité, merci de nous soutenir en désactivant votre bloqueur de publicités sur Developpez.com.
Partager