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

IHM Discussion :

Imprimer un état avec les données d'un formulaire...


Sujet :

IHM

  1. #1
    Membre habitué
    Profil pro
    Inscrit en
    Mars 2006
    Messages
    481
    Détails du profil
    Informations personnelles :
    Âge : 54
    Localisation : France

    Informations forums :
    Inscription : Mars 2006
    Messages : 481
    Points : 165
    Points
    165
    Par défaut Imprimer un état avec les données d'un formulaire...
    Bonjour,

    Voilà ce qui m'amène aujourd'hui : J'ai créé un formulaire avec des sous formulaires, des comboBox, des champs de texte... et je souhaiterais imprimer ce formulaire.

    Pour ce faire, j'ai fais enregistrer sous de mon formulaire au format état.

    Et c'est là que j'ai quelques soucis...

    Voici ce que m'a suggéré une de mes connaissances :

    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
     
     
     
    Private Sub Report_Open(Cancel As Integer)
    Dim formulaire  As Form
    Dim Control
    'Dim etat        As Report
     
        Set formulaire = Forms(Form_FrmListeDesIncidents.Name)
        For Each Control In Me.Controls
            On Error GoTo sous_formulaire '(par ce que je ne sais plus identifier un controle renvoyant sur un sous formulaire)
            Control.Value = formulaire.Controls(Control.Name).Value
            GoTo pas_de_sous_formulaire
     
    sous_formulaire:
            Control.RowSource = formulaire.Controls(Control.Name).RowSource
    pas_de_sous_formulaire:
     
        Next Control
     
    End Sub
    Or, il se trouve que ça ne marche pas trops en fait. Malgrè le on error goto, j'ai un message d'erreur...

    Est ce que vous pourriez m'aider s'il vous plait ?

    Maintenant si jamais vous avez une solution plus simple à mettre en oeuvre surtout n'hésitez pas. J'avoue que ce qui me gêne un peut dans ce bout de code, c'est l'usage des "goto"...

    Par avance merci.

    Marco.

  2. #2
    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
    Le code que tu as s'applique à un état et non à un formulaire. Dans tous les cas, les formulaires ne sont pas fait pour présenter des données sous format papier mais uniquement sur un écran

  3. #3
    Membre habitué
    Profil pro
    Inscrit en
    Mars 2006
    Messages
    481
    Détails du profil
    Informations personnelles :
    Âge : 54
    Localisation : France

    Informations forums :
    Inscription : Mars 2006
    Messages : 481
    Points : 165
    Points
    165
    Par défaut
    Le message d'erreur est le suivant :


    Erreur d'exécution 2465 : Impossible de trouver le champs 'NumIncident' auquel il est fait référence dans votre expression.
    Il apparaît sur la ligne :
    Control.RowSource = formulaire.Controls(Control.Name).RowSource

    Qu'est ce que vous en pensez ?

    Par avance merci.

    Marco.

  4. #4
    Membre habitué
    Profil pro
    Inscrit en
    Mars 2006
    Messages
    481
    Détails du profil
    Informations personnelles :
    Âge : 54
    Localisation : France

    Informations forums :
    Inscription : Mars 2006
    Messages : 481
    Points : 165
    Points
    165
    Par défaut
    Merci de ta prompte réponse Tofalu,

    Tu veux dire qu'il ne me faut pas placer ce code dans l'évènement open de l'état, mais à l'intérieur de la procédure où se fait l'appel de ce formulaire c'est bien ça ?

    Par avance merci.

    Marco.

  5. #5
    Membre habitué
    Profil pro
    Inscrit en
    Mars 2006
    Messages
    481
    Détails du profil
    Informations personnelles :
    Âge : 54
    Localisation : France

    Informations forums :
    Inscription : Mars 2006
    Messages : 481
    Points : 165
    Points
    165
    Par défaut
    Bonsoir à tous,

    En fait comme mon état est construit à partir d'un formulaire, je me dis qu'il faut sans doute donner les mêmes arguments que ceux qui m'ont permis d'ouvrir le formulaire en me positionant sur sur un enregistrement particulier :

    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
    24
    25
    26
    27
    
        
        StrOpenArgs = StrDroits & "¤" & StrRegion & "¤" & StrStatut & "¤" & StrUser & "¤" & "Visualisation"
    
        DoCmd.OpenForm "FrmFormulaireIncident", , , , acFormEdit, , StrOpenArgs
    
        If Not ModDroits.FctDroitsEnregistrement(StrDroits, StrRegion, StrStatut, StrUser) Then
            Exit Function
        End If
    
            If Not IsNull(Form_FrmListeDesIncidents.LstResultQuery.ItemsSelected) Then
                Set rs = Form_FrmFormulaireIncident.RecordsetClone '.MoveFirst
                Dim StrSearchName As String
                StrSearchName = Str(Form_FrmListeDesIncidents.LstResultQuery.Column(0, Form_FrmListeDesIncidents.LstResultQuery.ItemsSelected(0)))
                rs.FindFirst "NumIncident = " & StrSearchName
                If rs.NoMatch Then
                    Err.Description = "Enregistrement inexistant."
                    Err.Raise 1
                Else
                    Form_FrmFormulaireIncident.Bookmark = rs.Bookmark
                End If
                rs.Close
                Set rs = Nothing
            Else
                StrSearchName = ""
            End If
    Mais à ce stade là apparemment la méthode qui consiste à utiliser le "findnext" et "bookmark" ne fonctionne àas avec les états.

    Ou bien les éléments que je viens de saisir dans le nouveau formulaire et que voudrais imprimer tels que...

    Je précise que le bout de code ci-dessus me permet juste d'ouvrir un formulaire en me positionnant un enregistrement spécifique et je voudrais à présent ouvrir un état en me positionnant sur l'enregistrement qui s'affiche sur le formulaire en cours. J'espère que je suis bien clair dans ma question ?

    Qu'en pensez vous ?

    A très bientôt.

    Marco.

  6. #6
    Membre habitué
    Profil pro
    Inscrit en
    Mars 2006
    Messages
    481
    Détails du profil
    Informations personnelles :
    Âge : 54
    Localisation : France

    Informations forums :
    Inscription : Mars 2006
    Messages : 481
    Points : 165
    Points
    165
    Par défaut
    Là dessus, j'ai aussi une autre question (annexe) qui est que la fenêtre d'apperçu avant impression apparaît mais il n'y aucun bouton pour la fermer (et sur une fenêtre modale, vous imaginez si c'est pratique)...

    En plus j'ai des menus flattants qui apparaissent quand je fais un clic droit sur la barre de titre de la fenêtre de preview.

    Est ce que vous savez comemnt faire pour (1)faire apparaître un boutton de fermeture sur la barre de titre et (2) faire disparaître ce menu flottant et bien sur toujours (3) faire en sorte que l'impression se fasse sur l'enregistrement qui est affiché sur le formulaire source ?

    Je sais que ça fait beaucoups de questions à la fois, mais là j'avoue que je sèche complètement et lamentablement depuis ce matin.

    Par avance merci.

    Marco.

  7. #7
    Membre habitué
    Profil pro
    Inscrit en
    Mars 2006
    Messages
    481
    Détails du profil
    Informations personnelles :
    Âge : 54
    Localisation : France

    Informations forums :
    Inscription : Mars 2006
    Messages : 481
    Points : 165
    Points
    165
    Par défaut Imprimer un état avec les données d'un formulaire...
    En fait après un nouveau tour dans quelques discution concernant les impressions, je dois bien préciser que ce n'est pas vraiement d'impression de formulaire qu'il s'agit, notamment comme dans la discution suivante : http://www.developpez.net/forums/sho...+%E9tat+access

    J'ai fais enregistrer sous de mon formulaire en tant que état et je veux donner les infos du formulaire courant à mon état pour l'imprimer, et c'eszt ça que je n'arrive pas à faire.

  8. #8
    Membre actif Avatar de Mariboo
    Profil pro
    Inscrit en
    Mai 2006
    Messages
    254
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations forums :
    Inscription : Mai 2006
    Messages : 254
    Points : 238
    Points
    238
    Par défaut

    Private Sub Report_Open(Cancel As Integer)
    Dim formulaire As Form
    Dim Control
    'Dim etat As Report

    Set formulaire = Forms(Form_FrmListeDesIncidents.Name)
    For Each Control In Me.Controls
    On Error GoTo sous_formulaire '(par ce que je ne sais plus identifier un controle renvoyant sur un sous formulaire)
    Control.Value = formulaire.Controls(Control.Name).Value
    GoTo pas_de_sous_formulaire

    sous_formulaire:
    Control.RowSource = formulaire.Controls(Control.Name).RowSource
    pas_de_sous_formulaire:

    Next Control

    End Sub
    Essaie d'écrire ce m^me code sur l'événement "Sur Activé" de l'état. normalement l'erreur :
    Erreur d'exécution 2465 : Impossible de trouver le champs 'NumIncident' auquel il est fait référence dans votre expression.
    devrait disparaitre ... je pense ... c pas sûr ...

  9. #9
    Membre habitué
    Profil pro
    Inscrit en
    Mars 2006
    Messages
    481
    Détails du profil
    Informations personnelles :
    Âge : 54
    Localisation : France

    Informations forums :
    Inscription : Mars 2006
    Messages : 481
    Points : 165
    Points
    165
    Par défaut
    Bonjour,

    En fait non le message d'erreur n'a pas disparu en fait.

    A bientôt.

    Marco.

  10. #10
    Membre habitué
    Profil pro
    Inscrit en
    Mars 2006
    Messages
    481
    Détails du profil
    Informations personnelles :
    Âge : 54
    Localisation : France

    Informations forums :
    Inscription : Mars 2006
    Messages : 481
    Points : 165
    Points
    165
    Par défaut
    Salut Mariboo,

    En fin de compte, j'ai bien essayé et apparemment il ne rentre même pas dans l'évènement activé de l'état.

    Est ce quelqu'un aurait une autre idée ?

    Par avance merci.

    Marco.

  11. #11
    Candidat au Club
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    8
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2006
    Messages : 8
    Points : 3
    Points
    3
    Par défaut
    Salut,

    J'ai peut-être une solution .
    En cours on nous a demandé de faire une base de données dans laquel on avait un état correspondant à un formulaire et c'est beaucoup plus simple que ça pour faire le lien entre ton formulaire et ton état.
    Il te suffit d'aller dans la requête de ton état, la tu prends l'entité qui a une valeur variable et qui fait le lien entre ton formulaire et ton état. Dans le critère de cette entité, tu fais un lien vers l'entité correspondant à celle de ton formulaire et qui est la même dans ton état.
    Avec cela quand j'ajoute le bouton dans mon formulaire pour avoir un aperçu dans l'état de mon formulaire, je visionne l'état correspondant uniquement à ce que je veux (dans mon cas des fiches de location).

    En espérant t'avoir aidé @+

  12. #12
    Membre habitué
    Profil pro
    Inscrit en
    Mars 2006
    Messages
    481
    Détails du profil
    Informations personnelles :
    Âge : 54
    Localisation : France

    Informations forums :
    Inscription : Mars 2006
    Messages : 481
    Points : 165
    Points
    165
    Par défaut
    Bonsoir et merci de ta réponse,

    Alors voilà où j'en usis (si j'ai bien compris ce que tu m'as dis) :

    Dans l'état appelé :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
     
     
     
     
    Private Sub Report_Open(Cancel As Integer)
        Dim StrRequete As String
     
        If Not ModSQL.FctGetClauseWhereFicheIncident(StrRequete) Then ' .FctGetRowSourceFicheIncident(StrRequete) Then
            Exit Sub
        End If
        StrRequete = Mid(StrRequete, 1, InStr(1, StrRequete, "order by ") - 1) & " AND Incident.NumIncident= " & Form_FrmFormulaireIncident.NumIncident.Value & " )"
        Me.RecordSource = StrRequete
     
    End Sub

    Et dans l'appel à l'é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
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
     
     
     
     
    Private Sub Imprimer_Click()
    On Error GoTo ErrHandler
        Dim StrRequete  As String
        Dim Nom_Etat    As String
        Dim BoolReponse As Boolean
     
        '1) Récupération des enregistrements
        '***********************************
        If Not ModSQL.FctGetClauseWhereFicheIncident(StrRequete) Then
            GoTo ExitHandler
        End If
     
        '2) Ouverture de l'état en mode aperçu
        '*************************************
        Nom_Etat = "FrmFormulaireIncident3"
        DoCmd.OpenReport Nom_Etat, acViewPreview ', , , acDialog
     
        '3) Mise en page
        '***************
        SendKeys "{f11}"
        SendKeys "{f10}"
        SendKeys "{F}"
        SendKeys "{p}"
        SendKeys "{right}"
        SendKeys "{TAB}"
        SendKeys "{right}"
        SendKeys "{enter}"
     
        '4) Confirmation de l'impression
        '*******************************
        DoEvents
        BoolReponse = (MsgBox("Voulez vous imprimer l'enregistrement courant ?", vbInformation + vbYesNo + vbDefaultButton2, CstAppName) = vbYes)
        If BoolReponse Then
            DoCmd.PrintOut acSelection, 1, 1, , 1
        End If
        DoCmd.Close acReport, Nom_Etat, acSaveNo
     
    ExitHandler:
        Exit Sub
     
    ErrHandler:
    'Resume
        MsgBox Err.Description, vbExclamation, CstAppName
        Resume ExitHandler
     
    End Sub
    En tous les cas, c'est ce que j'ai essayé, même si ça ne marche pas encore tout à fait.

    Entre-autres bugs, j'ai l'ouverture intempestive de fenêtres ou il me demande d'enregistrere mon état... :p

    Par rapport à celà est ce que aurais autre chose .

    Merci en tous les cas de ton message et à très bientôt.

    Marco.

  13. #13
    Candidat au Club
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    8
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2006
    Messages : 8
    Points : 3
    Points
    3
    Par défaut
    Pffiou moi y'en à rien comprendre au VB , je ne suis qu'un débutant.

    Quoi qu'il en soit je te laisse à disposition ma base de données ici : http://rapidshare.de/files/23379369/Location.mdb.html

    Le formulaire qui va t'intéresser est Saisie emprunt, ce formulaire fait appel à la Table Location dans sa totalité. L'Etat correspondant est Etat Location qui a pour requête Requête Etat Location. Là tu vas dans cette requête et tu vas t'apercevoir que le NumLocation à un lien vers le NumLocation du formulaire Saisie Emprunt. Si tu fais un lien du même type pour ta base de données, tu n'as plus qu'à poser les boutons pour avoir un aperçu dans l'état ou imprimer dans l'état et hop ça marche (test avec ma base de données ça marche en tout cas ).

  14. #14
    Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Décembre 2017
    Messages
    1
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 29
    Localisation : Côte d'Ivoire

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Décembre 2017
    Messages : 1
    Points : 2
    Points
    2
    Par défaut aidez requête
    bonsoir M.
    je viens par la présente sollicite votre aide concernant une requête et un état.
    j'ai fais une application et tout passe bien excepté l'impression de mon état voici ma requête:
    SELECT BEP.code_BEP,
    BEP.Lib_BEP,
    BEP.Dat_BEP,
    BEP.Cod_Cam,
    CAMION.Lib_Cam_Citer,
    CAMION.Imma_Citer,
    CAMION.Capac_Citer,
    CAMION.Nbr_Compa_Citer,
    CAMION.Imma_Tract,
    CAMION.Typ_Tract,
    CAMION.Marq_Tract,
    CAMION.NSerie_Tract
    BEP.Code_Bon_Cde,
    BON_CDE.Lib_Bon_Cde,
    BON_CDE.Lieu_Livrais,
    BON_CDE.Dépôt_Livran,
    BON_CDE.Mod_livrai,
    BEP.Code_client
    CLIENT.Nom_client,
    CLIENT.Contact_client

    FROM BEP,CAMION,BON_CDE,
    WHERE BEP.code_BEP={param1}


    et voici mon code d'impression :

    SuspendreRafraichissement(Vrai)


    iAperçu(100)
    iImprimeEtat("ETAT_Table_BEP")


    je souhaiterais imprimer un fichier après avoir saisir le code_BEP et cliquer sur un bouton .
    merci d'avance
    cordialement.

Discussions similaires

  1. Réponses: 1
    Dernier message: 04/12/2014, 14h17
  2. [AC-2013] Imprimer un état avec les boutons
    Par polo68 dans le forum IHM
    Réponses: 1
    Dernier message: 25/01/2014, 10h30
  3. [AC-2007] Imprimer un état avec les données d'un formulaire
    Par Bubulle232 dans le forum IHM
    Réponses: 1
    Dernier message: 17/01/2012, 13h37
  4. Réponses: 1
    Dernier message: 11/01/2008, 04h57
  5. Réponses: 21
    Dernier message: 18/12/2006, 17h50

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