Imrpimer sur List sur une form problème de recherche

Signaler
Messages postés
4
Date d'inscription
samedi 3 janvier 2009
Statut
Membre
Dernière intervention
3 août 2010
-
Messages postés
3258
Date d'inscription
jeudi 26 novembre 2009
Statut
Membre
Dernière intervention
3 décembre 2019
-
Bonjour voilà, ceci est mon code rattaché à un bouton imrpimer. Cela a pour but de prendre chaque ligne d'une list1 et de les integrer dans un tableau sur une nouvelle form. Seulement je n'arrive vraiment pas à faire marcher tout ça, & je n'arrive surtout pas à localiser l'erreur. voici mon code
Dim beginpage, endpage, numcopie, i
For j = 0 To 24
Form30.Label1(j).Caption = ""
Form30.Label2(j).Caption = ""
Form30.Label3(j).Caption = ""
Form30.Label4(j).Caption = ""
Form30.Label5(j).Caption = ""
Next j
CommonDialog1.CancelError = True
On Error GoTo errhandler
CommonDialog1.ShowPrinter
beginpage = CommonDialog1.FromPage
endpage = CommonDialog1.ToPage
numcopies = CommonDialog1.Copies
For j = 1 To numcopies
Next
'Mise en place de la liste sur la feuille d'impression
NbAff = Form28.List1.ListCount
Nblig = 0
NbP = 1
For i = 0 To NbAff
If Nblig = 25 Then 'Feuille pleine
Nblig = 0
Form30.Label24.Caption NbP: NbP NbP + 1
Form30.PrintForm
For j = 0 To 24 'mise a jour de la form
Form30.Label1(j).Caption = ""
Form30.Label2(j).Caption = ""
Form30.Label3(j).Caption = ""
Form30.Label4(j).Caption = ""
Form30.Label5(j).Caption = ""
Next j
End If
mach = Form28.List1.List(i)
numadv = Mid(mach, 1, 11) 'je prends mon critere de recherche dans la ligne extrait de list1

Form28.Data2.Recordset.MoveFirst
crit = "[N° de Com]='" & numadv & "'"
Form28.Data2.Recordset.FindFirst crit 'prise des infos dans sma dtb
typ = Form28.Data2.Recordset.Fields("Type").Value
mdl = Form28.Data2.Recordset.Fields("Modèle").Value
con = Form28.Data2.Recordset.Fields("N° de Contrat").Value
cli = Form28.Data2.Recordset.Fields("Client").Value

Form30.Label1(Nblig).Caption = numadv 'remplissage dans tableau
Form30.Label2(Nblig).Caption = typ
Form30.Label3(Nblig).Caption = mdl
Form30.Label4(Nblig).Caption = con
Form30.Label5(Nblig).Caption = cli
Nblig = Nblig + 1
Next i

'impression de la page
Form30.Label24.Caption = NbP
Form30.PrintForm
errhandler:
Exit Sub
End Sub



En vous remerciant d'avance

7 réponses

Messages postés
3258
Date d'inscription
jeudi 26 novembre 2009
Statut
Membre
Dernière intervention
3 décembre 2019
50
Salut
Peux tu expliquer mieux
Le compiler indique une erreur?
ou le code n'exécute pas ce que tu demandes?
Messages postés
4
Date d'inscription
samedi 3 janvier 2009
Statut
Membre
Dernière intervention
3 août 2010

Désolé pour ma confusion, lorsque je compile & appuie sur mon bouton 'Imprimer', cela me renvoie une erreur en me surlignant comme ligne 'CommonDialog1.CancelError = True ', ce qui ne m'avance pas grandement. Et evidemment mon impression ne se lance pas.
Je tourne sous vb5 aussi desfois que ca change la donne !
Messages postés
3258
Date d'inscription
jeudi 26 novembre 2009
Statut
Membre
Dernière intervention
3 décembre 2019
50
Pourquoi utiliser le commondialog?
tu as le printdialog et le printdocument
Je ne sais pas si il y a avec vb2005 comme j'ai le vb2008
exemple
 Private Sub printButton_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles printButton.Click
        printDocument1.DocumentName = "myFile.txt"
        printDocument1.PrinterSettings.FromPage = 1
        printDocument1.PrinterSettings.ToPage = totalPages
        printDocument1.PrinterSettings.MinimumPage = 1
        printDocument1.PrinterSettings.MaximumPage = totalPages
        printDialog1.AllowSomePages = True
        If printDialog1.ShowDialog() = DialogResult.OK Then
            If printDialog1.PrinterSettings.PrintRange = Drawing.Printing.PrintRange.SomePages Then
                page = printDocument1.PrinterSettings.FromPage
                maxPage = printDocument1.PrinterSettings.ToPage
            Else
                page = 1
                maxPage = totalPages
            End If
        End If
        printDocument1.Print()
    End Sub



Si tu veux avec le commondialog mais un
breakpoint sur CommonDialog1.CancelError = True
lances ton programme et continues avec f8
et dis quelle est l'erreur
Messages postés
3258
Date d'inscription
jeudi 26 novembre 2009
Statut
Membre
Dernière intervention
3 décembre 2019
50
non mais un breakpoint mais mets un breakpoint
Messages postés
4
Date d'inscription
samedi 3 janvier 2009
Statut
Membre
Dernière intervention
3 août 2010

En utilisant un breakpoint il me confirme l'erreur sur la ligne CommonDialog1.CancelError = True . J'utilise le commondialog sur les conseils & sources d'un ami mais au final vu que je n'arrivais pas à bien utiliser ton code ci dessus, j'ai tenter un boui-boui qui marche & qui m'imprime bien ma fiche avec les données insérées dans mon tableau, je joins le code :
Private Sub Command1_Click()
For j = 0 To 19
Form30.Label1(j).Caption = ""
Form30.Label2(j).Caption = ""
Form30.Label3(j).Caption = ""
Form30.Label4(j).Caption = ""
Form30.Label5(j).Caption = ""
Next j
For j = 0 To 5 'donnes fixes lié à la list (entreprise, adresse...)
Form30.Label6(j).Caption = ""
Next j

'Mise en place de la liste sur la feuille d'impression
NbAff = Form28.List1.ListCount - 1
Nblig = 0
NbP = 1
For i = 0 To NbAff
If Nblig = 20 Then 'Feuille pleine
Nblig = 0
Form30.Label24.Caption = NbP
NbP = NbP + 1
Form30.Label6(0).Caption = Form28.Combo4.Text & " " & Form28.Combo5.Text 'je remplis les champs de renseignements, j'imprime & je reset la feuille
Form30.Label6(1).Caption = Form28.Combo1.Text
Form30.Label6(2).Caption = Form28.Combo3.Text
Form30.Label6(3).Caption = Form28.Label6.Caption & " " & Form28.Label8.Caption
Form30.Label6(4).Caption = Form28.Combo2.Text
Form30.Label6(5).Caption = Form28.Label1.Caption & " " & Form28.Label3.Caption
Form30.PrintForm

For j = 0 To 19
Form30.Label1(j).Caption = ""
Form30.Label2(j).Caption = ""
Form30.Label3(j).Caption = ""
Form30.Label4(j).Caption = ""
Form30.Label5(j).Caption = ""
Next j
For j = 0 To 5
Form30.Label6(j).Caption = ""
Next j
End If
mach = Form28.List1.List(i)
numadv = Mid(mach, 1, 11)

Form28.Data2.Recordset.MoveFirst
crit = "[N° de Com]='" & numadv & "'"
Form28.Data2.Recordset.FindFirst crit 'prise des infos dans suicom
Typ = Form28.Data2.Recordset.Fields("Type").Value
Mdl = Form28.Data2.Recordset.Fields("Modèle").Value
con = Form28.Data2.Recordset.Fields("N° de Contrat").Value
cli = Form28.Data2.Recordset.Fields("Client").Value

Form30.Label1(Nblig).Caption = numadv 'remplissage dans tableau
Form30.Label2(Nblig).Caption = Typ
Form30.Label3(Nblig).Caption = Mdl
Form30.Label4(Nblig).Caption = con
Form30.Label5(Nblig).Caption = cli
Nblig = Nblig + 1
Next i

Form30.Label24.Caption = NbP 'je remplis les champs de renseignements & j'imprime
Form30.Label6(0).Caption = Form28.Combo4.Text & " " & Form28.Combo5.Text
Form30.Label6(1).Caption = Form28.Combo1.Text
Form30.Label6(2).Caption = Form28.Combo3.Text
Form30.Label6(3).Caption = Form28.Label6.Caption & " " & Form28.Label8.Caption
Form30.Label6(4).Caption = Form28.Combo2.Text
Form30.Label6(5).Caption = Form28.Label1.Caption & " " & Form28.Label3.Caption
Form30.PrintForm

End Sub


Le nouveau problème que je rencontre ici est que lors d'une impression sur une feuille, tout se passe bien, mais dès que j'imprime une liste qui necessite 2feuilles ou bien que je lance 2 impressions à la suite, la feuille imprimée est tronquée en bas d'environ 1/5 de la taille de la feuille (environ mon bas de page & 3-4cellules). J'ai beau changer d'ordi, d'imprimante le problème persiste. Si tu pouvais m'éclairer de nouveau ^^'
Messages postés
4
Date d'inscription
samedi 3 janvier 2009
Statut
Membre
Dernière intervention
3 août 2010

Je précise que pour mon problème de 2feuilles à imprimer, la première est toujours bien, les suivantes sont tronquées (2impressions à la suite = 1ere bonne, 2ème tronquée / 2 feuilles = 1ere bonne 2 eme tronquée).
Désolé si j'ai du mal à m'exprimer ou à être clair, je me rends compte que c'est assez dur de s'exprimer lorsqu'on est débutant !
Messages postés
3258
Date d'inscription
jeudi 26 novembre 2009
Statut
Membre
Dernière intervention
3 décembre 2019
50
Salut
Moi aussi je suis débutant
j'ai essayé ton code avec le vb2008
form30.printform? ne connais pas en vb.net
en vb6 oui

le problème est que une form prend la moitié ou
moins qu'une feuille A4
donc quand tu imprimes une liste nécessitant
2 feuilles c'est toi qui le dis mais pas pour
l'imprimante
tu as écrit If Nblig = 20 Then 'Feuille pleine
Nblig = 0 pour qui c'est ?

essayes d'utiliser le printdialog et le printdocument
2 controls que tu places sur la form

printdialog.ShowDialog affiche le showdialog box
  Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click

        PrintDocument1.PrinterSettings.FromPage = 1
        PrintDocument1.PrinterSettings.ToPage = 2
        PrintDocument1.PrinterSettings.MinimumPage = 1
        PrintDocument1.PrinterSettings.MaximumPage = 2
        printdialog1.Document = PrintDocument1
        Dim result As DialogResult = printdialog1.ShowDialog
        If (result = DialogResult.OK) Then
            PrintDocument1.Print()
        End If

    End Sub


Il faut essayé c'est comme ça qu'on apprend