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 :

arreter une routine sur ouverture form


Sujet :

VBA Access

  1. #1
    Candidat au Club
    Profil pro
    Inscrit en
    Avril 2010
    Messages
    5
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2010
    Messages : 5
    Points : 2
    Points
    2
    Par défaut arreter une routine sur ouverture form
    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.

  2. #2
    Membre confirmé Avatar de Tonioyo
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Juin 2008
    Messages
    343
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Juin 2008
    Messages : 343
    Points : 518
    Points
    518
    Par défaut
    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

  3. #3
    Nouveau membre du Club
    Homme Profil pro
    Technicien hygiène
    Inscrit en
    Février 2010
    Messages
    48
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Technicien hygiène
    Secteur : Agroalimentaire - Agriculture

    Informations forums :
    Inscription : Février 2010
    Messages : 48
    Points : 36
    Points
    36
    Par défaut
    ce que je recherche c'est de l'arreter à partir du code, sur ouverture ou sur chargement
    a+

  4. #4
    Membre confirmé Avatar de Tonioyo
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Juin 2008
    Messages
    343
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Juin 2008
    Messages : 343
    Points : 518
    Points
    518
    Par défaut
    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

  5. #5
    Membre confirmé
    Profil pro
    Inscrit en
    Décembre 2006
    Messages
    427
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2006
    Messages : 427
    Points : 520
    Points
    520
    Par défaut
    Bonjour,

    Il est toujours possible d'arrêter une procédure en vérifiant la réalisation d'une condition de manière cyclique.

  6. #6
    Expert éminent sénior

    Avatar de Tofalu
    Homme Profil pro
    Technicien maintenance
    Inscrit en
    Octobre 2004
    Messages
    9 501
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France, Ain (Rhône Alpes)

    Informations professionnelles :
    Activité : Technicien maintenance
    Secteur : Associations - ONG

    Informations forums :
    Inscription : Octobre 2004
    Messages : 9 501
    Points : 32 311
    Points
    32 311
    Par défaut
    Citation Envoyé par Oleff Voir le message
    Bonjour,

    Il est toujours possible d'arrêter une procédure en vérifiant la réalisation d'une condition de manière cyclique.
    En fixant par exemple une variable public dans un module à True ou à False suivant que le code doit se poursuivre ou non.

  7. #7
    Membre confirmé
    Profil pro
    Inscrit en
    Décembre 2006
    Messages
    427
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2006
    Messages : 427
    Points : 520
    Points
    520
    Par défaut
    Citation Envoyé par Tofalu Voir le message
    En fixant par exemple une variable public dans un module à True ou à False suivant que le code doit se poursuivre ou non.
    Je n'osais être aussi précis sans avoir une idée plus précise de la stucture du code, mais encore une fois la précision sort de la plume du maître

  8. #8
    Candidat au Club
    Profil pro
    Inscrit en
    Avril 2010
    Messages
    5
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2010
    Messages : 5
    Points : 2
    Points
    2
    Par défaut
    Je vous remercie pour vos réponses, seulement je n'ai aucune idée comment faire.

    Si vous aviez des exemples ?

  9. #9
    Membre confirmé
    Profil pro
    Inscrit en
    Décembre 2006
    Messages
    427
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2006
    Messages : 427
    Points : 520
    Points
    520
    Par défaut
    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

  10. #10
    Candidat au Club
    Profil pro
    Inscrit en
    Avril 2010
    Messages
    5
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2010
    Messages : 5
    Points : 2
    Points
    2
    Par défaut
    Suite à ta lecture, en fait je crois que ce que je voudrais c'est qq chose comme :

    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
    ou encore

    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
    Mais aucun des deux ne marche

    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

  11. #11
    Membre confirmé
    Profil pro
    Inscrit en
    Décembre 2006
    Messages
    427
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2006
    Messages : 427
    Points : 520
    Points
    520
    Par défaut
    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.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    Option Compare Database
    Option Explicit
    Public traitEncore As boolean
    Si tu utilises les options citées. Sinon c'est en tête du module qu'il faut déclarer ceci.

    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).

  12. #12
    Candidat au Club
    Profil pro
    Inscrit en
    Avril 2010
    Messages
    5
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2010
    Messages : 5
    Points : 2
    Points
    2
    Par défaut
    Je n'ai pas compris ou je dois mettre

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Public Automat_Annucapt As Boolean
    Est ce dans le module ou se trouve cette routine ?
    Ou est ce dans le code du formulaire possedant le code Form_Timer ?

    Je vais essayer les deux ...

    Le reste est écrit pareil :
    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
    Ca ne bugue pas mais ca ne fonctionne pas ..

    Merci a +

  13. #13
    Membre confirmé
    Profil pro
    Inscrit en
    Décembre 2006
    Messages
    427
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2006
    Messages : 427
    Points : 520
    Points
    520
    Par défaut
    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.

  14. #14
    Candidat au Club
    Profil pro
    Inscrit en
    Avril 2010
    Messages
    5
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2010
    Messages : 5
    Points : 2
    Points
    2
    Par défaut
    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 :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    Private Sub Form_Timer()
              Automat_Annucapt
    End Sub
    Sur le second formulaire j'ai changé le propriétés.

    - 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 :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    DoCmd.MoveSize , , 8800, 6500
    Le code ne s'arrete pas, mais le fait d'ouvrir le second formulaire ne le fait pas buguer non plus.

    Encore merci et a +

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

Discussions similaires

  1. [AC-2003] erreur 2501 sur ouverture form
    Par AndréPe dans le forum IHM
    Réponses: 2
    Dernier message: 22/12/2011, 10h12
  2. Affciher contenu d'une table sur le form
    Par cheikhoufia dans le forum NetBeans
    Réponses: 0
    Dernier message: 09/06/2011, 13h55
  3. faire une routine sur ts les fichiers xls d'un répertoire ?
    Par tibofo dans le forum VB 6 et antérieur
    Réponses: 2
    Dernier message: 25/03/2010, 23h45
  4. Ajout d'une fonctionnalité sur un form dynamique
    Par bisvan dans le forum jQuery
    Réponses: 1
    Dernier message: 14/12/2009, 22h22
  5. Paramétrer une page sur ouverture d'un onglet
    Par belocom dans le forum Firefox
    Réponses: 2
    Dernier message: 14/03/2008, 13h01

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