Imprimer une msflexgrid

Soyez le premier à donner votre avis sur cette source.

Snippet vu 17 141 fois - Téléchargée 34 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
celemida
Messages postés
1
Date d'inscription
mercredi 29 mars 2006
Statut
Membre
Dernière intervention
3 mai 2006

3 mai 2006 à 16:14
Salut,

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

27 juin 2005 à 08:42
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.
jvuillaume
Messages postés
8
Date d'inscription
jeudi 29 janvier 2004
Statut
Membre
Dernière intervention
20 février 2006

21 juin 2005 à 11:56
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
GuyFALESSE
Messages postés
61
Date d'inscription
samedi 19 février 2005
Statut
Membre
Dernière intervention
18 novembre 2012

20 juin 2005 à 16:44
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
mynyroger
Messages postés
20
Date d'inscription
mardi 25 février 2003
Statut
Membre
Dernière intervention
1 février 2010

20 juin 2005 à 16:15
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.