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 19/11/2010, 09h05   #1
Nouveau Membre du Club
 
Inscription : octobre 2009
Messages : 71
Détails du profil
Informations forums :
Inscription : octobre 2009
Messages : 71
Points : 30
Points : 30
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 :
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
CrasherSEP est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 19/11/2010, 10h05   #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,

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 :
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
__________________
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 19/11/2010, 10h40   #3
Nouveau Membre du Club
 
Inscription : octobre 2009
Messages : 71
Détails du profil
Informations forums :
Inscription : octobre 2009
Messages : 71
Points : 30
Points : 30
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
CrasherSEP est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 19/11/2010, 12h15   #4
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
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
__________________
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 19/11/2010, 13h01   #5
Nouveau Membre du Club
 
Inscription : octobre 2009
Messages : 71
Détails du profil
Informations forums :
Inscription : octobre 2009
Messages : 71
Points : 30
Points : 30
As-tu une idée :-)

Et surtout, ou dois-je mettre ce code. Sur le bouton d'ouverture de l'état ?
CrasherSEP est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 19/11/2010, 13h11   #6
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
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
__________________
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 19/11/2010, 13h43   #7
Nouveau Membre du Club
 
Inscription : octobre 2009
Messages : 71
Détails du profil
Informations forums :
Inscription : octobre 2009
Messages : 71
Points : 30
Points : 30
et non...

Code :
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
CrasherSEP est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 19/11/2010, 15h17   #8
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
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 :
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 :
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 :
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
__________________
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 22/11/2010, 09h38   #9
Nouveau Membre du Club
 
Inscription : octobre 2009
Messages : 71
Détails du profil
Informations forums :
Inscription : octobre 2009
Messages : 71
Points : 30
Points : 30
J'ai des messages d'erreurs,

Pourriez-vous me donner un exemple ???

Grand merci :-)
CrasherSEP 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 09h47.


 
 
 
 
Partenaires

Hébergement Web