Imprimer une msflexgrid

Soyez le premier à donner votre avis sur cette source.

Snippet vu 16 843 fois - Téléchargée 32 fois

Contenu du snippet

Procédure pour imprimer une grille msflexgrid avec sauts de page.

Source / Exemple :


Private Sub Imprimer()
On Error Resume Next
Dim NbLigne As Long
Dim Y As Double
Dim X As Double
Dim I As Long
Dim j As Integer
Dim Txt As Variant
Dim NbPages As Integer
Dim Rep As String
Dim NumPage As Integer
'grille=msflexgrid'
Printer.ScaleMode = 7
Printer.ScaleHeight = 29.7
Printer.ScaleWidth = 21
Printer.Font = "arial"
NbLigne = Me.Grille.Rows
NbPages = Int((NbLigne / 32) + 1)
Rep = InputBox("Préparez votre imprimante pour environ " & NbPages & " pages.", Vapi_Nomprog, "OUI")
If Rep <> "oui" Then
Exit Sub
End If
Y = 1
NumPage = 1
For I = 0 To Me.Grille.Rows
Y = Y + 0.4
'position des colonnes'
Printer.CurrentX = 1: Printer.CurrentY = Y: Printer.Print Me.Grille.TextMatrix(I, 1)
Printer.CurrentX = 8: Printer.CurrentY = Y: Printer.Print Me.Grille.TextMatrix(I, 2)
Printer.CurrentX = 11: Printer.CurrentY = Y: Printer.Print Me.Grille.TextMatrix(I, 3)
Printer.CurrentX = 14: Printer.CurrentY = Y: Printer.Print Me.Grille.TextMatrix(I, 4)
Printer.CurrentX = 17: Printer.CurrentY = Y: Printer.Print Me.Grille.TextMatrix(I, 5)
If I > 1 Then
Y = Y + 0.3
For j = 1 To 17
Printer.CurrentY = Y: Printer.CurrentX = j: Printer.Print "_________";
Next j
End If
If Y > 27 Then
Printer.CurrentX = 1: Printer.CurrentY = 28: Printer.Print "Page " & NumPage
Y = 1
NumPage = NumPage + 1
Printer.EndDoc
Y = 1
End If
Next I
Printer.CurrentX = 1: Printer.CurrentY = 28: Printer.Print "Fin/Page " & NumPage
Printer.EndDoc
End Sub

A voir également

Ajouter un commentaire

Commentaires

Messages postés
1
Date d'inscription
mercredi 29 mars 2006
Statut
Membre
Dernière intervention
3 mai 2006

Salut,

Tu pourras supprimer la ligne 42 et remplacer Numpage par Printer.Page sur les lignes 40 et 47.
Célestin.
Messages postés
20
Date d'inscription
mardi 25 février 2003
Statut
Membre
Dernière intervention
1 février 2010

Il est vrai que chacun programme à sa façon, mais il est aussi vrai que l'on peut progresser en modifiant la sienne en tenant compte de certaines observations que l'on jugent bonnes ou maivaises.

Je n'ai jamais écrit qu'il fallait supprimer les currentX mais certains currentY.
le ; conserve la même ligne et vous réglez la tabulation avec currentX.

D'autre part il est facilement de déterminer le nombre de colonnes et leut largeur avec :

s$ = "col0|col1|colonne2|col3|col4|col5|col6"
Me.Grile.FormatString = s$
Ce qui donne 6 colonnes.

Vous verrez que la colonne 2 aura une largeur différente réglée sur le texte auquel on peut ajouter des espaces pour élargir encore la colonne.

Ou s$ peut être créé en saisie dans un textbox en fonction des besoins

L'impression et la tabulation peuvent alors être gérées par une boucle en fonction du nombre de colonnes et de leur largeur réelle.
Messages postés
8
Date d'inscription
jeudi 29 janvier 2004
Statut
Membre
Dernière intervention
20 février 2006

Je garde la programmation Me.?? (j'ai mongtemps programmé access) car en faisant me. j'ai la liste de tous les controles du formulaire.
si je mets currentx=un nombre, cela permet de garder la tabulation de la colonne ce que ne permet pas le ;(je crois). De toute façon, nous avons chacun nos habitudes de programmation(bonnes ou mauvaises), le but de ces publications étant de donner un piste pour résoudre un pb. La mienne et de lire chaque cellule d'une grille et d'en programmer le mise en page.
Cordialment à tous...Joël Vuillaume
Messages postés
61
Date d'inscription
samedi 19 février 2005
Statut
Membre
Dernière intervention
18 novembre 2012

Salut MynyRoger,

effectivement, j'ai supprimé mes lignes pour n'en garder qu'une dizaine et je n'ai gardé que 5 colonnes et là, ça fonctionne:-)
@+

Guy FALESSE
Messages postés
20
Date d'inscription
mardi 25 février 2003
Statut
Membre
Dernière intervention
1 février 2010

Attention à la lecture je m'apperçois qu'il ne prend en compte que les 5 premières colonnes !
Sinon fait un test avec une grille de 5 colonnes et une dizaines de rangs
Afficher les 11 commentaires

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.