Imprimer un tableau MSFlexgrid1 [Résolu/Fermé]

Messages postés
13
Date d'inscription
dimanche 30 mars 2014
Dernière intervention
26 mai 2016
- 26 mai 2016 à 10:58 - Dernière réponse :
Messages postés
18039
Date d'inscription
lundi 7 décembre 2009
Statut
Modérateur
Dernière intervention
11 avril 2018
- 28 mai 2016 à 17:08
Bonjour,

Je viens vers vous sujet d'un problème que je rencontre en ce moment.
Voici le sujet:

J'ai un form2
un tableau MSflexgrid1
un bouton imprimer

j'aimerai imprimer mon tableau mais qui contient 4 chaînes caractères et je bloque dessus...

Si vous avez le code ou de l'aide à m'apporter je vous en serais reconnaisant.

J'aimerai que le font soit en comic sans ms et en gras.

Je vous remercie d'avance de votre aide.

Cordialement

Lou
Afficher la suite 

16 réponses

Messages postés
18039
Date d'inscription
lundi 7 décembre 2009
Statut
Modérateur
Dernière intervention
11 avril 2018
- Modifié par ucfoutu le 26/05/2016 à 12:31
0
Merci
Bonjour,
- tu développes finalement sous quoi ? Tu as ouvert cette discussion dans le forum général Visual Basic !)
- quel code, que tu ne montres pas, as-tu pour l'instant tenté ?
(tu te contentes ici de dire ce que tu voudrais ...) !
- on attend toujours la suite donnée à cette discussion :
http://codes-sources.commentcamarche.net/forum/affich-10053753-tri-par-ordre-alphabetique-dans-une-combobox

________________________
Nul ne saurait valablement coder ce qu'il ne saurait exposer clairement.
Messages postés
13
Date d'inscription
dimanche 30 mars 2014
Dernière intervention
26 mai 2016
- Modifié par NHenry le 26/05/2016 à 13:35
0
Merci
Bonjour UCFoutu, désolé pour le précédent message. J'ai résolu le tri par ordre alpha, je viens de classer le sujet, dsl de ne pas l'avoir fait avant.

Pour information je code sous Visual Basic studio 6.0...

Le code que j'applique pour imprimer le MSflexgrid ne fonctionne visiblement pas, voici ce que j'écris:

For i = 0 To MSFlexGrid1.Cols - 1 
    If i = 0 Then
        Printer.FontBold = True 
    Else
        Printer.FontBold = False 
    End If
    For j = 1 To MSFlexGrid1.Rows - 1 
        gauche = 500 + ((j - 1) * (Printer.Width / (MSFlexGrid1.Cols - 1))) 
        haut = 3000 + (i * 200) 
        Printer.CurrentX = gauche
        Printer.CurrentY = haut
        Printer.Print MSFlexGrid1.TextMatrix(i, j) 
        Printer.Line ((gauche - 50), 3000)-((gauche - 50), (haut + 200)), RGB(29, 66, 132)
    Next j
    Printer.Line ((Printer.Width - 450), 3000)-((Printer.Width - 450), (haut + 200)), RGB(29, 66, 132)
    Printer.Line (450, (haut - 10))-((Printer.Width - 450), (haut - 10)), RGB(29, 132, 66)
    If i = 30 Then
        Printer.NewPage
    End If
Next i
Printer.Line (450, (haut + 200))-((Printer.Width - 450), (haut + 200)), RGB(29, 132, 66) 
Printer.EndDoc
End sub


Il doit probablement avoir un autre moyen plus optimisé d'imprimer ce control...

Merci
Messages postés
18039
Date d'inscription
lundi 7 décembre 2009
Statut
Modérateur
Dernière intervention
11 avril 2018
- Modifié par ucfoutu le 26/05/2016 à 16:57
0
Merci
Bonjour,
L'objet Printer se manipule exactement de la même manière qu'un objet PictureBox (je te conseille d'ailleurs à ce propos de t'exercer d'abord sur une picturebox pour éviter un gaspillage de papier et d'encre, puis d'utiliser l'objet Printer à la place de la picturebox lorsque tu auras maîtrisé).
Que sont ces multiplications dans ton code ?
- Ton objet printer (comme une picturebox) doit être d'abord défini (taille du papier, scalemode, Police, etc ...)
- tous les positionnements et toutes les dimensions doivent être calculées en unités de cette échelle (le scalemode).
- les méthodes Scalex et Scaley permettent de transposer au besoin d'une échelle (celle de ton form) à l'autre (celle de ton objet Printer)
- tu connais (en unités logiques de ton Form) les largeurs de colonnes (ne les détermine qu'une seule fois, puisque toujours les mêmes)
- il te faut par contre déterminer la hauteur de tes lignes. Cela dépend tant du scalemode que de la police de caractères utilisée. Sers-toi à cette fin de la méthode TextHeight
A partir de là, tout n'est qu'application de calculs arithmétiques

Ouvre ton aide VB6 sur chacun des mots que j'ai mis en gras.

NB : tu ne dis pas comment est alimentée cette grille. Si résultat d'une requête sur une table de données, tu aurais également la possibilité d'utiliser le jeu d'enregistrements résultant de cette requête avec Crystal Report.


EDIT : il te serait par ailleurs plus facile de concaténer le contenu des cellules de chaque ligne, puis d'imprimer de ligne en ligne ces contenus.
Regarde ce que fait par exemple ceci :
MsgBox Format("aaa", "@@@@@@@@@@@@@") & Format("b", "@@@@@@@@@@@@@@@@@@")

ou ceci :
MsgBox "aaa" & String(10 - Len("aaa"), " ") & "bbbbbb" & String(15 - Len("bbbbbb"), " ")

(si cela peut te donner des idées ...)
________________________
Nul ne saurait valablement coder ce qu'il ne saurait exposer clairement.
Messages postés
13
Date d'inscription
dimanche 30 mars 2014
Dernière intervention
26 mai 2016
- Modifié par Louwest59 le 26/05/2016 à 17:17
0
Merci
Je te remercie UCFoutu. Alors pour t'en dire +, mon tableau est alimenté via des informations sorties d'un textbox suite à un calcul général servant à avoir des intérêts à payer sur X durée, le coût d'un assurance global et le capital restant dû d'un crédit.

Par contre UCFOUTU, mon aide vb6 je l'ai en *.rar sur mon bureau mais je ne sais pas dans quel dossier mettre MSDN... Pourrais tu m'indiquer s'il te plaît dans quel répertoire précisément je dois le déposer?

Merci d'avance.
Messages postés
18039
Date d'inscription
lundi 7 décembre 2009
Statut
Modérateur
Dernière intervention
11 avril 2018
- 26 mai 2016 à 17:19
0
Merci
Je t'ai alors déjà répondu (ma première partie).
Je vais t'aider un peu plus :
Regarde ce que fait ceci (par exemple) avec une picturebox Picture1 et un bouton de commande:
Private Sub Command1_Click()
Font = "Tahoma"
FontSize = 12
With Picture1
.Font = "Tahoma"
.FontSize = 12
.ScaleMode = 6 ' échelle en millimètres
.ScaleWidth = 30
hautligne = ScaleY(.TextHeight("N'importe quoi"))
.CurrentY = 2
For i = 1 To 10
Picture1.Print Format("aaa", "@@@@@@@@@@@@@") & Format("b", "@@@@@@@@@@@@@@@@@@")
.CurrentY = .CurrentY + hautligne
Next
End With
End Sub

Tu devrais commencer à comprendre mieux.
Messages postés
13
Date d'inscription
dimanche 30 mars 2014
Dernière intervention
26 mai 2016
- 26 mai 2016 à 17:27
0
Merci
J'ai très bien compris ton code UCfoutu et je t'en remercie. Cependant je comprends pas trop bien le pictureBox... Comment faire de mon tableau un picture Box?
Messages postés
18039
Date d'inscription
lundi 7 décembre 2009
Statut
Modérateur
Dernière intervention
11 avril 2018
- 26 mai 2016 à 17:52
0
Merci
Ben ...
Dans la boucle for to next : tu remplaces les "aaa" & "b" (etc ... au besoin) par le contenu des cellules d'une même ligne de ta grille !
Et lorsque tu auras maîtrisé (facile), tu remplace la picturebox par l'objet Printer.
Je ne vois pas où est le problème, là-dedans ...
Messages postés
18039
Date d'inscription
lundi 7 décembre 2009
Statut
Modérateur
Dernière intervention
11 avril 2018
- 26 mai 2016 à 18:09
0
Merci
Enfin quoi :
Simulation avec une flexgrid à 2 colonnes, un bouton de commande et une picturebox :
Private Sub Command1_Click()
Font = "Tahoma"
FontSize = 14
With Picture1
.Font = "Tahoma"
.FontSize = 14
.ScaleMode = 6 ' échelle en millimètres
.ScaleWidth = 30
hautligne = ScaleY(.TextHeight("N'importe quoi"))
.CurrentY = 2
For i = 0 To MSFlexGrid1.Rows - 1
Picture1.Print Format(MSFlexGrid1.TextMatrix(i, 0), "@@@@@@@@@@@@@@@@") & Format(MSFlexGrid1.TextMatrix(i, 1), "@@@@@@@@@@@@@@@@@@")
.CurrentY = .CurrentY + hautligne
Next
End With
End Sub

Private Sub Form_Activate()
MSFlexGrid1.Height = 735
MSFlexGrid1.TextMatrix(0, 0) = "coucou"
MSFlexGrid1.TextMatrix(0, 1) = "couic"
MSFlexGrid1.TextMatrix(1, 0) = "voilà"
MSFlexGrid1.TextMatrix(1, 1) = "hé bé"
MSFlexGrid1.TextMatrix(2, 0) = "et hop"
MSFlexGrid1.TextMatrix(2, 1) = "titi"
MSFlexGrid1.TextMatrix(3, 0) = "bonjour"
MSFlexGrid1.TextMatrix(3, 1) = "toto"
MSFlexGrid1.TextMatrix(4, 0) = "au revoir"
MSFlexGrid1.TextMatrix(4, 1) = "tata"
End Sub

Que te faut-il de plus, sinon de décider, pour chaque colonne le nombre de "@@@@@@..." du format, en fonction de ce que tu as.
0
Merci
Ahhhh :) Voicla un superbe exemple UCfoutu!! C'est tellement plus clair. Je te remercie bcp pour ton intervention. Je vais désormais gérer au mieux ce que j'aimerai faire. Encore Merci!
0
Merci
sinon UCfoutu, as tu la moindre idée d'où je peux mettre mon dossier MSDN? Dans quel répertoire de VB dois-je l'inclure?
Messages postés
1709
Date d'inscription
samedi 11 janvier 2014
Statut
Contributeur
Dernière intervention
18 novembre 2018
- 26 mai 2016 à 20:12
Bonjour
tu dis : "mon aide vb6 je l'ai en *.rar sur mon bureau
Si c'est l'aide MSDN officielle de VB 6 tu dois décompresser ce fichier .rar et exécuter le Setup inclus dans le dossier de décompression
Ceci t'installera automatiquement l'aide VB 6 et celle-ci sera accessible directement dans ton IDE
un salut à Ucfoutu
Messages postés
18039
Date d'inscription
lundi 7 décembre 2009
Statut
Modérateur
Dernière intervention
11 avril 2018
- 26 mai 2016 à 20:27
0
Merci
Bonjour, VB95,
On répond à qui, en fait ?
1) le demandeur (et donc Louwest59), membre inscrit depuis deux ans ?
ou
2) un certain "ben hate" inconnu au bataillon ?

Et les deux (aussi bien l'un que l'autre) semblent être en possession d'une appli VB6.exe "tombée du camion" ou non installée complètement.

Pas très sérieux, tout cela.

0
Merci
Euh, tu as un sacré culot quand même... Ma version de VB6 est pas installé entièrement et louwest59 était un programmeur que je connaissais qui est plus sur ce site. Quoi qu'il en soit, je trouve tes propos largement déplacés. Merci ton aide et bonne soirée.
Messages postés
18039
Date d'inscription
lundi 7 décembre 2009
Statut
Modérateur
Dernière intervention
11 avril 2018
- 26 mai 2016 à 20:42
0
Merci
louwest59 était un programmeur que je connaissais qui est plus sur ce site

Et comment a-t-il alors ouvert cette discussion (sans être sur ce site) ????
Tu lui aurais chipé sen pseudo et son mot de passe, alors ?
Il est par ailleurs techniquement impossible à un autre que lui de cliquer (ce qui a été fait) sur le tag RESOLU !!!
Tu prétends te moquer de qui, ici ?
Explique-toi vite et clairement !
Messages postés
18039
Date d'inscription
lundi 7 décembre 2009
Statut
Modérateur
Dernière intervention
11 avril 2018
- Modifié par ucfoutu le 26/05/2016 à 21:52
0
Merci
Un échange de messages privés avec Louwest59, qui me dit qu'il est bien également "Ben Hate" (et se contredit donc), me conduit à fermer la présente discussion.

________________________
Nul ne saurait valablement coder ce qu'il ne saurait exposer clairement.
Messages postés
18039
Date d'inscription
lundi 7 décembre 2009
Statut
Modérateur
Dernière intervention
11 avril 2018
- 28 mai 2016 à 17:08
0
Merci
Discussion ouverte à nouveau un instant, juste pour signaler que j'ai déposé un snippet assez complet et détaillé, ici :
http://codes-sources.commentcamarche.net/source/101499-impression-d-une-msflexgrid-vb6
On verra bien, à sa lecture, qu'il est impensable de coder la chose sans lecture (attentive, en plus) de l'aide VB6. Le composant MsFlexGrid n'a pas été conçu dans les normes habituelles en ce qui concerne la définition des dimensions (non dépendantes de l'échelle du container).
Je referme, maintenant.

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.