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
@+ en attendant de te relire
Le Pivert
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
Bonne fin d'année
@+ Le Pivert
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 @++
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
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.