Creer un calendrier de poche

Soyez le premier à donner votre avis sur cette source.

Vue 6 296 fois - Téléchargée 623 fois

Description

Création d'un calendrier pliable pour la nouvelle année. Le code est en VB2008 et utilise Word pour l'impression du calendrier recto-verso. Vous ouvrez 2 images pour le recto et ensuite tout est automatique. Le verso est chargé d'un calendrier annuel 2012. Vous pouvez à tout moment cesser l'impression. Dans les documents Word, la mise en page est réglée sur: Papier 10x15 sans bordure(avec languette), vous pouvez la regler différemment. Vous pouvez créer un calendrier sans Word. On utilise un bitmap pour mettre 2 images dans une PictureBox et l'on redimensionne les images pour imprimer en 10x15.Réglage de l'imprimante par code.
Bonne programmation.

Source / Exemple :


Voir zip

Conclusion :


Pour les débutants utiliser Word à partir de VB2008.
Mettre 2 images dans une PictureBox à l'aide d'un bitmap.
Redimensionnement des images pour l'impression
Régler l'imprimante par code
Merci à ADN56 pour l'optimisation du code.
Merci également pour les réponses sur le Forum à Jack et marcPL

Codes Sources

A voir également

Ajouter un commentaire

Commentaires

Messages postés
6920
Date d'inscription
jeudi 13 septembre 2007
Statut
Contributeur
Dernière intervention
14 septembre 2020
112
ADN56, j'ai suivi ta suggestion. Faire cela sans Word.Cela n'a pas été facile, il fallait redimensionner les images. Ce que faisait Word. ensuite créer un bitmap pour insérer 2 images dans la PictureBox. Un petit hic que je n'ai pas résolu. Avec cette méthode on ne peut pas supprimer les images à la fermeture. Je l'ai fait à l'ouverture. Avec Word cela ne posait pas de problème.J'ai tout essayé Picture Nothing, mettre une autre image, rien n'y fait cela bug!
@+ en attendant de te relire
Le Pivert
Messages postés
1172
Date d'inscription
jeudi 24 mai 2007
Statut
Membre
Dernière intervention
28 septembre 2013
1
bien les commentaires ne s'affichent plus, mais j'ai vu que tu avais modifié ta source. C'est presque nickel ^^ et oui regarde ça :
If PictureBox1.Image Is Nothing Then Exit Sub puis
If PictureBox2.Image Is Nothing Then Exit Sub !
namého un petit OR quoi ! lol

If PictureBox1.Image Is Nothing _
Or PictureBox2.Image Is Nothing _
Then Exit Sub

;) bon boulot pivert, il te reste plus qu'a charger ton calendrier sur une 3iéme image et de tout imprimer via ton soft ;) bon courage et au plaisir de te relire (si les comms s'affichent bien sur ^^)

kenavo
Messages postés
6920
Date d'inscription
jeudi 13 septembre 2007
Statut
Contributeur
Dernière intervention
14 septembre 2020
112
Merci ADN56 cela fonctione à merveille. Je vais poster la maj, car j'ai une réponse de Jack qui m'a dit que l'on pouvez fermer le document cela n'empêchait pes l'impression. C'est exact.
Bonne fin d'année
@+ Le Pivert
Messages postés
1172
Date d'inscription
jeudi 24 mai 2007
Statut
Membre
Dernière intervention
28 septembre 2013
1
re, en effet j'avais pas vu que les images tournent chacune dans un sens, mais encore une fois cette fonction est mieux dans la function OPEN, il te suffit de passer un paramétre à cette function pour pivoter l'image dans le bon sens :
function open (byval seconde_image as boolean) as image
[...]
'Affiche et attend la fermeture de la boite de dialogue
If .ShowDialog() = DialogResult.OK And _
Not (.FileName Is Nothing) Then 'si clic sur OK et nom de fichier <> nothing attribu l'image
monImage = Image.FromFile(openFD.FileName)
if not second_image then
If monImage.Width > monImage.Height Then monImage.RotateFlip(RotateFlipType.Rotate90FlipX)
else
If monImage.Width > monImage.Height Then monImage.RotateFlip(RotateFlipType.Rotate270FlipX)
end if

fin de la function....
puis enfin comme tu l'imagine déja dans l'appel de la function :
Private Sub cmdopen_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles cmdopen.Click
' revenons à nos fonctions ^^
PictureBox1.Image = open(false) 'ouvrir 1ère image
PictureBox2.Image = open(true) 'ouvrir seconde image
et voila le tour est joué ;)
kenavo et @++
Messages postés
6920
Date d'inscription
jeudi 13 septembre 2007
Statut
Contributeur
Dernière intervention
14 septembre 2020
112
Bravo ADN56, c'est parfait. J'ai fait juste une petite correction. Tu avais mis la rotation de l'image dans la fonction.Mais les images tournent à l'inverse l'une de l'autre.
Voici le code:
#Region "Déclarations"
Dim hauteur As Integer
Dim largeur As Integer
Dim monChemin1 As String = Application.StartupPath & "\Configuration\image_1.jpg"
Dim monChemin2 As String = Application.StartupPath & "\Configuration\image_2.jpg"
Dim shape As Integer
Dim oWord As Object
#End Region
#Region "Ouverture et fermeture"
Private Sub cmdopen_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles cmdopen.Click
' revenons à nos fonctions ^^
PictureBox1.Image = open() 'ouvrir 1ère image
If hauteur < largeur Then
PictureBox1.Image.RotateFlip(RotateFlipType.Rotate270FlipXY) 'position de l'image dans la PictureBox
End If
PictureBox2.Image = open() 'ouvrir seconde image
If hauteur < largeur Then
PictureBox2.Image.RotateFlip(RotateFlipType.Rotate90FlipXY) 'position de l'image dans la PictureBox
End If
save(PictureBox1.Image, monChemin1) 'enregistrer 1ère image
save(PictureBox2.Image, monChemin2) 'enregistrer seconde image
print_image()
End Sub
Private Sub Form1_FormClosing(ByVal sender As Object, ByVal e As System.Windows.Forms.FormClosingEventArgs) Handles Me.FormClosing
'supprime les fichier images à la fermeture
File.Delete(monChemin1)
File.Delete(monChemin2)
MessageBox.Show("N'oubliez pas de fermer les documents Word: Recto et Verso.", "Creer calendrier", MessageBoxButtons.OK, MessageBoxIcon.Information)
End Sub
Private Function open() As Image
'Mise en place d'un objet OpenFileDialog pour ouvrir un fichier image
Dim monImage As Image
Dim openFD As New OpenFileDialog
With openFD
.Filter = "JPeg Files (*.jpg,*.jpeg)|*.jpg;*.jpeg|Bitmap Files (*.bmp)|*.bmp|Gif Files (*.gif)|*.gif|Icon Files (*.ico)|*.ico|Png Files (*.png)|*.png"
.FilterIndex = 1
.Title = "Sélectionnez le fichier image que vous souhaitez ouvrir."

'Affiche et attend la fermeture de la boite de dialogue
If .ShowDialog() = DialogResult.OK And _
Not (.FileName Is Nothing) Then 'si clic sur OK et nom de fichier <> nothing attribu l'image
monImage = Image.FromFile(openFD.FileName)
' test largeur/hauteur
largeur = monImage.Width
hauteur = monImage.Height
Else
MessageBox.Show("ouverture impossible", "Echec", MessageBoxButtons.OK, MessageBoxIcon.Information)
Return Nothing
Exit Function
End If
End With
openFD.Dispose()
Return monImage
End Function
#End Region
#Region "Enregistrements des images dans la bonne position"
Private Sub save(ByVal cetteImage As Image, ByVal chemin As String)
' Recevez un Bitmap.
Dim bm As Image = cetteImage
' Sauvez l'image comme un JPEG
bm.Save(chemin, System.Drawing.Imaging.ImageFormat.Jpeg)
End Sub
#End Region
Je ne poste pas encore la maj, je voudrais régler le problème de la fermeture du doc Word à la fin de l'impression. Je vais faire appel au Forum, car je n'ai rien trouvé à part PrintDocument, mais je ne l'utilise pas.
Je te tiens au courant et encore merci pour l'optmisation du code
Bon WE @+ Le Pivert
Afficher les 10 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.