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 :

Test Formulaire ouvert à l'ouverture d'un état [AC-2007]


Sujet :

VBA Access

  1. #1
    Membre habitué
    Homme Profil pro
    Inscrit en
    Octobre 2009
    Messages
    380
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Octobre 2009
    Messages : 380
    Points : 134
    Points
    134
    Par défaut Test Formulaire ouvert à l'ouverture d'un état
    Bonjour,

    J'aimerais faire un test à l'ouverture d'un état, ce test serait : si le formulaire (Formulaire01) est ouvert, alors l'état (Etat01) se lance, autrement une fenêtre demande soit : ouvrir le formulaire, puis lancer l'état, soit rien...

    en bref ;-)

    J'utilise un formulaire pour configurer un état, critères, filtres, etc...

    Donc évidement, si je lance mon état sans avoir ouvert le formulaire, l'état se plante, message d'erreur... d'où l'obligation d'ouvrir le formulaire avant de lancer l'état :-)


    Merci d'avance pour votre future code ;-)

    Mon code pour ouvrir un état :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    Function Macro_etat()
    On Error GoTo Macro_etat_Err
     
        DoCmd.OpenReport "Etat_Table1", acViewReport, "", "", acNormal
     
     
    Macro_etat_Exit:
        Exit Function
     
    Macro_etat_Err:
        MsgBox Error$
        Resume Macro_etat_Exit
     
    End Function

  2. #2
    Rédacteur/Modérateur
    Avatar de argyronet
    Homme Profil pro
    Panseur de bobos en solutions ETL
    Inscrit en
    Mai 2004
    Messages
    5 123
    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 123
    Points : 12 169
    Points
    12 169
    Billets dans le blog
    5
    Par défaut
    Bonjour,

    J'ai un peu de mal à comprendre le coté logique de ta demande...
    Voici un point de départ (à coller dans un module pour commencer)
    Lance alors "Tester" (F5)
    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
    20
    21
    22
    23
    Sub Tester()
    Const OUI = True
    Const NON = False
        OuvrirEtatSelon "Formulaire01", "Etat01", NON
    End Sub
     
    Sub OuvrirEtatSelon(ByVal MonForm As String, ByVal EtatAOuvrir As String, ByVal Imprimer As Boolean)
    Dim intReponse                                         As Integer
     
        If CurrentProject.AllForms(MonForm).IsLoaded = True Then
            If CurrentProject.AllForms(MonForm).CurrentView <> 0 Then
                DoCmd.OpenReport EtatAOuvrir, IIf(Imprimer, acViewNormal, acViewPreview), "", "", acNormal
            End If
        Else
            intReponse = MsgBox("Le formulaire " & MonForm & " n'est pas ouvert..." & vbCrLf & vbCrLf & "Voulez-vous l'ouvrir ?", vbQuestion + vbYesNo, "Qu'est ce qu'on fait ?")
            If intReponse = vbYes Then
                DoCmd.OpenForm MonForm, acNormal, , , acFormEdit, acWindowNormal
            Else
                MsgBox "Bon, eh bien on ne fait rien alors...", , "Tanpis"
            End If
     
        End If
    End Sub
    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
    *** Je recherche des profils (2 ans min.) Java EE, Fullstack, Front, .Net, Mobile... pour CDI ***

  3. #3
    Membre habitué
    Homme Profil pro
    Inscrit en
    Octobre 2009
    Messages
    380
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Octobre 2009
    Messages : 380
    Points : 134
    Points
    134
    Par défaut
    en bref ;-)

    J'utilise un formulaire pour configurer un état, critères, filtres, etc...

    Donc évidement, si je lance mon état sans avoir ouvert le formulaire, l'état se plante, message d'erreur... d'où l'obligation d'ouvrir le formulaire avant de lancer l'état :-)

    Je test le code, merci

    Voili voilo

  4. #4
    Rédacteur/Modérateur
    Avatar de argyronet
    Homme Profil pro
    Panseur de bobos en solutions ETL
    Inscrit en
    Mai 2004
    Messages
    5 123
    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 123
    Points : 12 169
    Points
    12 169
    Billets dans le blog
    5
    Par défaut
    Citation Envoyé par CrasherSEP Voir le message
    Donc évidement, si je lance mon état sans avoir ouvert le formulaire, l'état se plante, message d'erreur... d'où l'obligation d'ouvrir le formulaire avant de lancer l'état :-)
    Humm, c'est ce qui me semblait mais ce n'était pas évoqué ainsi donc, mon code, même s'il te donne une piste, ne répond pas exactement à ton dernier paragraphe plus explicite mais transpose exactement ce que tu as formulé dans ton premier post.

    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
    *** Je recherche des profils (2 ans min.) Java EE, Fullstack, Front, .Net, Mobile... pour CDI ***

  5. #5
    Membre habitué
    Homme Profil pro
    Inscrit en
    Octobre 2009
    Messages
    380
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Octobre 2009
    Messages : 380
    Points : 134
    Points
    134
    Par défaut
    As-tu une idée :-)

    Et surtout, ou dois-je mettre ce code. Sur le bouton d'ouverture de l'état ?

  6. #6
    Rédacteur/Modérateur
    Avatar de argyronet
    Homme Profil pro
    Panseur de bobos en solutions ETL
    Inscrit en
    Mai 2004
    Messages
    5 123
    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 123
    Points : 12 169
    Points
    12 169
    Billets dans le blog
    5
    Par défaut
    Oui, tu peux lever l'événement NoData() avec Cancel à True accompagné d'un message (MsgBox) et qui ouvre justement le formulaire en question...

    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
    *** Je recherche des profils (2 ans min.) Java EE, Fullstack, Front, .Net, Mobile... pour CDI ***

  7. #7
    Membre habitué
    Homme Profil pro
    Inscrit en
    Octobre 2009
    Messages
    380
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Octobre 2009
    Messages : 380
    Points : 134
    Points
    134
    Par défaut
    et non...

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    Private Sub Report_NoData(Cancel As Integer)
    MsgBox "Impossible d'ouvrir l'état : aucune données à afficher", vbCritical
        Cancel = True
    End Sub
    ne fonctionne pas, enfin si ,il fonctionne, mais ne change rien à mon problème... parce que mes données sont présentent...

    Configuration :
    J'ai un formulaire avec les différents choix de critères pour l'état, et un bouton, qui lance cet état, donc, normalement, l'état ne devrait être ouvert cas partir de ce formulaire... MAIS j'aimerais, que si un utilisateur lance l'état via la liste de droite, tables, requêtes, formulaires, états, etc... sans avoir lancer le formulaire, un avertissement s'affiche...

    Donc, je crois que la vérification, doit se faire obligatoirement sur l'événement "sur ouverture" de l'état, qui vérifierait l'ouverture du formulaire, et si non, un choix entre l'ouvrir ou ne rien faire...

    Merciiiiiiiiiiiiii

  8. #8
    Rédacteur/Modérateur
    Avatar de argyronet
    Homme Profil pro
    Panseur de bobos en solutions ETL
    Inscrit en
    Mai 2004
    Messages
    5 123
    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 123
    Points : 12 169
    Points
    12 169
    Billets dans le blog
    5
    Par défaut
    Ton état doit être basé sur une table ou un nom de requête (pas de clause SQL)
    => Dans un module tu poses cette fonction :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    Public Function FormParamEstOuvert(ByVal MonForm As String) As Boolean
    Dim intReponse                                         As Integer
        FormParamEstOuvert = False
        If CurrentProject.AllForms(MonForm).IsLoaded = True Then
            If CurrentProject.AllForms(MonForm).CurrentView <> 0 Then
                FormParamEstOuvert = True
            End If
        End If
    End Function
    => Dans ton état :
    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
    '*********************
    ' CODE DU L'ETAT
    '*********************
    Option Compare Database
    Option Explicit
     
    Private Sub Report_NoData(Cancel As Integer)
        MsgBox "Vous ne pouvez pas ouvrir l'état sans passer par le formulaire de paramètre !", vbExclamation
        Cancel = True
        DoCmd.OpenForm "Formulaire01", acNormal
    End Sub
     
    Private Sub Report_Open(Cancel As Integer)
        If FormParamEstOuvert("Formulaire01") = False Then
            Me.RecordSource = "SELECT * FROM " & Me.RecordSource & " WHERE 1 = 0"
        End If
    End Sub
    => Et dans ton formulaire :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    '*********************
    ' CODE DU FORMULAIRE
    '*********************
    Option Compare Database
    Option Explicit
     
    Private Sub cmdOuvrirEtat_Click()
        DoCmd.OpenReport "Etat01", acPreview
    End Sub
    Ouvre l'état et ça devrait répondre à ce que tu cherches à faire...

    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
    *** Je recherche des profils (2 ans min.) Java EE, Fullstack, Front, .Net, Mobile... pour CDI ***

  9. #9
    Membre habitué
    Homme Profil pro
    Inscrit en
    Octobre 2009
    Messages
    380
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Octobre 2009
    Messages : 380
    Points : 134
    Points
    134
    Par défaut
    J'ai des messages d'erreurs,

    Pourriez-vous me donner un exemple ???

    Grand merci :-)

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

Discussions similaires

  1. Réponses: 5
    Dernier message: 31/01/2012, 16h37
  2. Réponses: 2
    Dernier message: 23/10/2011, 16h39
  3. Fermeture état en fonction du formulaire ouvert
    Par Marcopololo dans le forum IHM
    Réponses: 6
    Dernier message: 05/07/2008, 19h37
  4. Réponses: 1
    Dernier message: 08/02/2008, 17h27
  5. Réponses: 1
    Dernier message: 16/07/2007, 20h03

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