Boite de dialogue d'Impression [Résolu]

A voir également:Boite de dialogue d'impressionBoite de dialogue pour nombre d'impression. ✓ - Forum - VB / VBA Boite de dialogue javascript - Articles Télécharger les codecs automatiquement n'est pas activée dans la boîte de dialogue options ✓ - Forum - Montage vidéo Quel réglage principal dans la boite de dialogue onglet permet de distinguer un sommaire d'une table des matières ? ✓ - Forum - Word Fermer boite de dialogue word - Forum - Logiciels

Bonjour

Je travaille sur un projet d'application ( en VB6 avec Access ). J'ai un problème de procédure de commande d'impression dans le cas d'une boucle.

Dans le cas d'impression d'une seul compte, tout marche bien. Lors de commander l'impression, la boite de dialogue est (grâce à la propriété "True" de "DRGrandLivre.PrintReport True, rptRangeAllPages") renvoyée pour pouvoir sélectionner l'imprimante ciblée.

Dans le cas d'impression d'une série de compte en bloc , le problème commence. car la boite de dialogue permettant la sélection de l'imprimante ciblée et le nombre de copies est renvoyée à chaque compte, ce qui est incommode.
Ce que je cherche dans ce cas, est le renvoie de cette boite de dialogue seulement une seule fois à la première ligne de la boucle,. Une fois la sélection de l'imprimante est faite, l'impression se lancerait.


Merci pour toute aide

Forum

A voir également:Boite de dialogue d'impressionBoite de dialogue pour nombre d'impression. ✓ - Forum - VB / VBA Boite de dialogue javascript - Articles Télécharger les codecs automatiquement n'est pas activée dans la boîte de dialogue options ✓ - Forum - Montage vidéo Quel réglage principal dans la boite de dialogue onglet permet de distinguer un sommaire d'une table des matières ? ✓ - Forum - Word Fermer boite de dialogue word - Forum - Logiciels

Web: www.shapebootstrap.net

1 réponse

Marsh

NOVEMBER 9, 2013 AT 9:15 PM

bonjour, toi seul sait ce qu'est DRGrandLivre, de quoi s'agit-il?
as-tu essayé de jouer sur la propriété ShowDialog, la mettre à Vrai au premier appel, et à Faux ensuite?

Reply
réponses:
  • auteur

  • auteur

    Bonjour

    La DRGandLivre est a DataReport du ( Grand livre )
    Pour la propriété DhowDialog je ne l'ai pas encore essayer

    Merci pour votre conseil

  • auteur

    c'est la propriété que tu mets à True dans ton exemple. je suggère de la mettre à True une seule fois, False ensuite.

  • auteur

    Bonjour

    J'ai sélectionneé un CommonDialog (nommé "cmnDialog"), mais pour vous dire la vérité je ne sais pas comment l'utiliser.

    sur mon boton de commande (CmdImprimer), j'ai ecris :

    CmnDialog.ShowPrinter

    après je me suis bloqué

    Merci pour toute aide

  • auteur

    n'as-tu pas créé une boucle contenant DRGrandLivre.PrintReport ?

  • auteur

    Re bonjour

    Pour le moment je tente d'apprendre l'utilisation de cette boite de dialogue avec l"impresion d'un seul compte
    Lors du renvoie de la CommonDialog , si je clique imprimer, l'impression se lance et lorsque je clique annuler , rien ne se passe

  • auteur

    Re bonjour

    Pour avoir une idée claire de mon code initial d'impression, voir ci dessous:



    On Error Resume Next


    SQLs = "select * from TableGrandLivre where ((Dossier='" & CStr(VarDossier) & "')and (Compte=" & CLng(CmbCompte) & "))" & "order by NOrdreGl asc"

    If RS.State = adStateOpen Then RS.Close
    RS.Open SQLs, DB, adOpenKeyset, adLockPessimistic



    ADGL.RecordSource = SQLs

    Set DRGrandLivre.DataSource = ADGL


    ADGL.Refresh



    DRGrandLivre.Sections("Section4").Controls("LDossier").Caption = VarDossier
    DRGrandLivre.Sections("Section4").Controls("LDateDebut").Caption = VarDateD
    DRGrandLivre.Sections("Section4").Controls("LDateFinale").Caption = VarDateF
    DRGrandLivre.Sections("Section4").Controls("LblDate").Caption = DateAN
    DRGrandLivre.Sections("Section4").Controls("LblJournal").Caption = NomR
    DRGrandLivre.Sections("Section4").Controls("LTitre").Caption = CmbCompte & " " & LblCompte
    DRGrandLivre.Sections("Section4").Controls("LblSoldeInitial").Caption = Format(SoldeAN, "#,##0.00")




    DRGrandLivre.Sections("Section5").Controls("LblSolde").Caption = Format(SoldeGL, "#,##0.00")
    DRGrandLivre.Sections("Section5").Controls("LblDebitG").Caption = Format(SommeD, "#,##0.00")
    DRGrandLivre.Sections("Section5").Controls("LblCreditG").Caption = Format(SommeC, "#,##0.00")
    DRGrandLivre.Sections("Section5").Controls("LblSoldeG").Caption = Format(SoldeG, "#,##0.00")

    DRGrandLivre.Show
    DRGrandLivre.WindowState = 2



    DRGrandLivre.PrintReport True, rptRangeAllPages




    Ce cas est pour la sélection d'un seul compte, pas besoin d'une boucle.
    Mon but ici est comment utiliser ma boite de dialogue que j'ai crée (CommonDialog, nommé CmnDialog) ?

    Merci d'avance

  • auteur

    comment se passe l'impression d'une série de comptes en bloc?

  • auteur

    Re bonjour

    Avec la propriété True de :

    DRGrandLivre.PrintReport True, rptRangeAllPages

    A chaque compte selon la boucle, la boite de dialogue est renvoyée, et il faut cliquer sur Imprimer

    Alors qu'avec la propriété False de

    DRGrandLivre.PrintReport false, rptRangeAllPages

    Tous les comptes de la boucle s'impriment sur l'imprimante par défaut, sans que la boite de dialogue ne soit renvoyée

  • auteur

    ma suggestion étant de mettre True la première fois.

  • auteur

    Re

    Effectivement, votre idée a pu marché bien, mon code est devenu comme suite:



    'NBoucle est le n° de la boucle

    If NBoucle = 1 Then
    DRGrandLivre.PrintReport True, rptRangeAllPages
    GoTo PBoite:
    Exit Sub
    ElseIf NBoucle > 1 Then
    DRGrandLivre.PrintReport False, rptRangeAllPages
    GoTo NBoite:
    Exit Sub
    End If

    PBoite:
    NBoite


    Next NBoucle

      

    En cliquant sur "Imprimer" lors du renvoie de la boite du dialogue, l'impression se lançait.
    Mais en cliquant sur "Annuler" , au lieu de quitter sans rien faire, l'impression se lançait.
    Comment à votre avis pourrai je remédier à ce problème technique ?


    Merci pour tout

  • auteur

    j'ai l'impression qu'il manque une partie du code.
    merci aussi d'utiliser les balises de code: lis ceci

    ceci me semble plus simple:

    If NBoucle = 1 Then     DRGrandLivre.PrintReport True, rptRangeAllPages Else     DRGrandLivre.PrintReport False, rptRangeAllPages End If 

    et, en effet, comme tu l'as écrit, même si tu cliques sur annuler pour la première impression, le reste va s'imprimer.

  • auteur

    Bonjour

    Alors comment pourrai je faire pour qu'en cliquant sur annuler lors du renvoi de la premiére boite, l'impression s'arrêtent pour tous les autres ?

  • auteur

    comment te donner des conseils sans savoir ce que tu fais? montre la boucle complète.

  • auteur

    Re bonjour

    Pour vous permettre d'avoir une idée claire de ma boucle, je vous la remets l en integralité.





    Sub GrandLivre()


    'S'assurer de l'existence des écritures


    Dim NbreL As Integer

    SQLs = "select * from TableTraitement"

    If RS.State = adStateOpen Then RS.Close
    RS.Open SQLs, DB, adOpenKeyset, adLockPessimistic

    NbreL = RS.RecordCount
    RS.Close

    If NbreL > 0 Then
    GoTo OkG:
    Exit Sub
    Else
    GoTo NoG:
    Exit Sub
    End If

    OkG:




    '______________________________Vider la TableGrandLivreClas

    SQLs = "delete * from TableGrandLivreClas where (Dossier='" & CStr(VarDossier) & "')"

    If RS.State = adStateOpen Then RS.Close
    RS.Open SQLs, DB, adOpenKeyset, adLockPessimistic



    '_________________Récupérer les valeurs de la TablePrincipale et les enregistrer dans la Table de transit
    Dim PN, DN, N, NOrdreR As Integer

    SQLs = "select * from TableTraitement where (Dossier='" & CStr(VarDossier) & "')" & "order by NOrdre asc"

    If RS.State = adStateOpen Then RS.Close
    RS.Open SQLs, DB, adOpenKeyset, adLockPessimistic

    If RS![NOrdre] <> 0 Then
    RS.MoveFirst
    PN = RS![NOrdre]
    End If
    RS.Close

    SQLs = "select * from TableTraitement where (Dossier='" & CStr(VarDossier) & "')" & "order by NOrdre asc"

    If RS.State = adStateOpen Then RS.Close
    RS.Open SQLs, DB, adOpenKeyset, adLockPessimistic

    If RS![NOrdre] <> 0 Then
    RS.MoveLast
    DN = RS![NOrdre]
    End If
    RS.Close




    Dim CompteR, IntituleR As String
    '_______________________________


    NOrdreR = 1

    For N = PN To DN Step 1



    SQLs = "select * from TableTraitement where ((Dossier='" & CStr(VarDossier) & "') and (NOrdre=" & CInt(N) & "))"

    If RS.State = adStateOpen Then RS.Close
    RS.Open SQLs, DB, adOpenKeyset, adLockPessimistic

    If RS![NOrdre] = N Then
    CompteR = RS![Compte]
    IntituleR = RS![Intitule]
    End If
    RS.Close



    '___________________________________

    SQLs = "select * from TableGrandLivreClas where ((Dossier='" & CStr(VarDossier) & "') and (Compte='" & CStr(CompteR) & "'))" & "order by NOrdreGL asc"

    If RS.State = adStateOpen Then RS.Close
    RS.Open SQLs, DB, adOpenKeyset, adLockPessimistic


    If RS.EOF Then
    GoTo Aj:
    Exit Sub
    Else
    GoTo Nj:
    Exit Sub
    End If

    Aj:

    RS.AddNew
    RS![Dossier] = VarDossier
    RS![Compte] = CompteR
    RS![Intitule] = IntituleR
    RS.Update
    RS.Close




    Nj:



    Next N

    '____________Ajouter les n° de classement


    NOrdreLignes = 1

    SQLs = "select * from TableGrandLivreClas where (Dossier='" & CStr(VarDossier) & "')" & "order by Compte asc"
    If RS.State = adStateOpen Then RS.Close
    RS.Open SQLs, DB, adOpenKeyset, adLockPessimistic


    Do While Not RS.EOF

    RS![NOrdreGL] = NOrdreLignes
    RS.Update

    NOrdreLignes = NOrdreLignes + 1

    RS.MoveNext
    Loop
    RS.Close









    '________Rempmir la TableGrandLivre par boucle


    Dim PNBoucle, DNBoucle, NBoucle As Integer
    Dim ClasBoucle, NomBoucle, CompteBoucle, IntituleBoucle, LibelleBoucle As String
    Dim DateBoucle As Date
    Dim DebitBoucle, CreditBoucle, SoldeBoucle, CumulBoucle As Double


    SQLs = "select * from TableGrandLivreClas where (Dossier='" & CStr(VarDossier) & "') " & "order by NOrdreGL asc"

    If RS.State = adStateOpen Then RS.Close
    RS.Open SQLs, DB, adOpenKeyset, adLockPessimistic

    If RS![NOrdreGL] <> 0 Then
    RS.MoveFirst
    PNBoucle = RS![NOrdreGL]
    End If


    SQLs = "select * from TableGrandLivreClas where (Dossier='" & CStr(VarDossier) & "') " & "order by NOrdreGL asc"

    If RS.State = adStateOpen Then RS.Close
    RS.Open SQLs, DB, adOpenKeyset, adLockPessimistic

    If RS![NOrdreGL] <> 0 Then
    RS.MoveLast
    DNBoucle = RS![NOrdreGL]
    End If


    For NBoucle = PNBoucle To DNBoucle Step 1


    SQLs = "select * from TableGrandLivreClas where ((Dossier='" & CStr(VarDossier) & "') and (NOrdreGL=" & CInt(NBoucle) & "))"

    If RS.State = adStateOpen Then RS.Close
    RS.Open SQLs, DB, adOpenKeyset, adLockPessimistic


    If RS![NOrdreGL] = NBoucle Then
    CompteBoucle = RS![Compte]
    End If
    RS.Close


    '_________________________________________
    Dim NomR As String

    NomR = "AN"




    NOrdreGL = 1


    SQLs = " select Classement,DateTraitement,Nom,Compte, Intitule,Libelle, sum(Debit) as totaldebit, sum(Credit) as totalcredit " _
    & " from TableTraitement " _
    & " where (Dossier='" & CStr(VarDossier) & "') and (Nom<>'" & CStr(NomR) & "') and (Compte= '" & CStr(CompteBoucle) & "') group by Classement,DateTraitement,Nom,Compte, Intitule,Libelle order by Compte"
    RSTrait.Open SQLs, DB, adOpenKeyset, adLockPessimistic

    DB.Execute "delete * from TableGrandLivre where Dossier='" & CStr(VarDossier) & "' "

    RSBal.Open "TableGrandLivre", DB, adOpenKeyset, adLockPessimistic

    Cumul = 0


    Do While Not RSTrait.EOF


    RSBal.AddNew
    RSBal![NOrdreGL] = NOrdreGL
    RSBal![Societe] = VarSociete
    RSBal![Dossier] = VarDossier
    RSBal![DateTraitement] = RSTrait!DateTraitement
    RSBal![Classement] = RSTrait!Classement
    RSBal![Nom] = RSTrait!Nom
    RSBal![Compte] = RSTrait!Compte
    RSBal![Intitule] = RSTrait!Intitule
    RSBal![Libelle] = RSTrait!Libelle
    RSBal![Debit] = RSTrait!totaldebit
    RSBal![Credit] = RSTrait!totalcredit
    RSBal![Solde] = RSTrait!totaldebit - RSTrait!totalcredit
    Cumul = Cumul + RSBal![Solde]
    RSBal![Cumul] = Cumul
    RSBal.Update


    RSTrait.MoveNext

    NOrdreGL = NOrdreGL + 1
    Loop

    RSTrait.Close
    RSBal.Close


    '____________________________________________
    Dim DateAN As Date
    Dim ClasAN, IntituleAN As String
    Dim DebitAN, CreditAN, SoldeAN As Double


    ClasAN = ""
    IntituleAN = ""
    DebitAN = 0
    CreditAN = 0

    '________________________________

    SQLs = "select * from TablePlanComptable where ((Societe='" & CStr(VarSociete) & "') and (Compte='" & CStr(CompteBoucle) & "'))"

    If RS.State = adStateOpen Then RS.Close
    RS.Open SQLs, DB, adOpenKeyset, adLockPessimistic

    If RS![Compte] = CompteBoucle Then
    IntituleAN = RS![Intitule]
    End If
    RS.Close



    '__________________________________
    SQLs = "select * from TableTraitement where ((Dossier='" & CStr(VarDossier) & "') and (Compte='" & CStr(CompteBoucle) & "')and (Nom='" & CStr(NomR) & "'))"

    If RS.State = adStateOpen Then RS.Close
    RS.Open SQLs, DB, adOpenKeyset, adLockPessimistic

    If RS.EOF Then
    DateAN = VarDateD
    ClasAN = ""
    DebitAN = 0
    CreditAN = 0
    Else
    DateAN = RS![DateTraitement]
    ClasAN = RS![Classement]
    DebitAN = RS![Debit]
    CreditAN = RS![Credit]

    End If
    RS.Close



    SoldeAN = Format((CDbl(DebitAN) - CDbl(CreditAN)), "#,##0.00")

    '_______________________________________
    Dim SommeD, SommeC As Double


    SQLs = "select sum(Debit) from TableTraitement where ((Dossier='" & CStr(VarDossier) & "') and (Compte='" & CStr(CompteBoucle) & "'))"

    If RS.State = adStateOpen Then RS.Close
    RS.Open SQLs, DB, adOpenKeyset, adLockPessimistic

    SommeD = RS.Fields(0)
    RS.Close


    SQLs = "select sum(Credit) from TableTraitement where ((Dossier='" & CStr(VarDossier) & "') and (Compte='" & CStr(CompteBoucle) & "'))"

    If RS.State = adStateOpen Then RS.Close
    RS.Open SQLs, DB, adOpenKeyset, adLockPessimistic

    SommeC = RS.Fields(0)
    RS.Close




    SoldeG = Format((CDbl(SommeD) - CDbl(SommeC)), "#,##0.00")


    '______________________________Impression


    Dim IBoiteD As Integer




    On Error Resume Next


    SQLs = "select * from TableGrandLivre where ((Dossier='" & CStr(VarDossier) & "')and (Compte=" & CLng(CompteBoucle) & "))" & "order by NOrdreGl asc"

    If RS.State = adStateOpen Then RS.Close
    RS.Open SQLs, DB, adOpenKeyset, adLockPessimistic



    ADGL.RecordSource = SQLs

    Set DRGrandLivre.DataSource = ADGL


    ADGL.Refresh


    DRGrandLivre.Sections("Section4").Controls("LDossier").Caption = VarDossier
    DRGrandLivre.Sections("Section4").Controls("LDateDebut").Caption = VarDateD
    DRGrandLivre.Sections("Section4").Controls("LDateFinale").Caption = VarDateF
    DRGrandLivre.Sections("Section4").Controls("LblDate").Caption = DateAN
    DRGrandLivre.Sections("Section4").Controls("LblJournal").Caption = NomR
    DRGrandLivre.Sections("Section4").Controls("LTitre").Caption = CompteBoucle & " " & IntituleAN
    DRGrandLivre.Sections("Section4").Controls("LblSoldeInitial").Caption = Format(SoldeAN, "#,##0.00")



    DRGrandLivre.Sections("Section5").Controls("LblDebitG").Caption = Format(SommeD, "#,##0.00")
    DRGrandLivre.Sections("Section5").Controls("LblCreditG").Caption = Format(SommeD, "#,##0.00")
    DRGrandLivre.Sections("Section5").Controls("LblSoldeG").Caption = Format(SoldeG, "#,##0.00")

    DRGrandLivre.Show
    DRGrandLivre.WindowState = 2


    If NBoucle = 1 Then
    DRGrandLivre.PrintReport True, rptRangeAllPages
    GoTo PBoite:
    Exit Sub
    ElseIf NBoucle > 1 Then
    DRGrandLivre.PrintReport False, rptRangeAllPages
    GoTo NBoite:
    Exit Sub
    End If

    PBoite:
    NBoite:


    Next NBoucle


    NoG:


    End Sub

  • auteur

    Re

    Sincèrement je n'arrive pas à cadrer mes codes comme vous le faites avec ces fameuses balises.
    J'essaie d'appliquer les conseils de l'exemple que vous m'aviez indiqué sans vaine.

  • auteur

    as-tu sélectionné le langage "basic"?

  • auteur

    Re

    Bien sûr, je sélectionne mon code puis, je clique sur la flèche pour sélectionner basic, à ce moment mon code se désélectionne.
    Quand je sélectionne "basic", un message est renvoyé "le corps du message est vide"

  • auteur

    Re bonjour

    J'ai tenté une solution, et elle marche. je vous prie de la revoir et me communiquer vos remarques.


    '______________________________Impression


    If NBoucle = 1 Then
    GoTo A1:
    Exit Sub
    ElseIf NBoucle > 1 Then
    GoTo A2:
    Exit Sub
    End If

    A1:

    On Error GoTo nnn:

    CmnDialog.ShowPrinter

    A2:


    On Error Resume Next


    SQLs = "select * from TableGrandLivre where ((Dossier='" & CStr(VarDossier) & "')and (Compte=" & CLng(CompteBoucle) & "))" & "order by NOrdreGl asc"

    If RS.State = adStateOpen Then RS.Close
    RS.Open SQLs, DB, adOpenKeyset, adLockPessimistic



    ADGL.RecordSource = SQLs

    Set DRGrandLivre.DataSource = ADGL


    ADGL.Refresh


    DRGrandLivre.Sections("Section4").Controls("LDossier").Caption = VarDossier
    DRGrandLivre.Sections("Section4").Controls("LDateDebut").Caption = VarDateD
    DRGrandLivre.Sections("Section4").Controls("LDateFinale").Caption = VarDateF
    DRGrandLivre.Sections("Section4").Controls("LblDate").Caption = DateAN
    DRGrandLivre.Sections("Section4").Controls("LblJournal").Caption = NomR
    DRGrandLivre.Sections("Section4").Controls("LTitre").Caption = CompteBoucle & " " & IntituleAN
    DRGrandLivre.Sections("Section4").Controls("LblSoldeInitial").Caption = Format(SoldeAN, "#,##0.00")



    DRGrandLivre.Sections("Section5").Controls("LblDebitG").Caption = Format(SommeD, "#,##0.00")
    DRGrandLivre.Sections("Section5").Controls("LblCreditG").Caption = Format(SommeD, "#,##0.00")
    DRGrandLivre.Sections("Section5").Controls("LblSoldeG").Caption = Format(SoldeG, "#,##0.00")

    DRGrandLivre.Show
    DRGrandLivre.WindowState = 2




    DRGrandLivre.PrintReport False, rptRangeAllPages







    Next NBoucle

    nnn:

  • auteur

    je pense qu'il est plus simple de mettre le code suivant avant la boucle:

         On Error exit sub     CmnDialog.ShowPrinter     On Error Resume Next 

  • auteur

    Bonjour

    Merci pour votre réponse, seulement l'application n'accepte pas ( On Error exit sub ), elle exige ( Goto )

    Je crois c'est mieux avec


    On Error Goto nnn:


    'Après la fin de la boucle

    nnn:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed