IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

VB.NET Discussion :

Enregistrement automatique avec un nom variable


Sujet :

VB.NET

  1. #1
    Membre habitué
    Homme Profil pro
    Administrateur systèmes et réseaux
    Inscrit en
    Juin 2005
    Messages
    608
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Meurthe et Moselle (Lorraine)

    Informations professionnelles :
    Activité : Administrateur systèmes et réseaux
    Secteur : Santé

    Informations forums :
    Inscription : Juin 2005
    Messages : 608
    Points : 145
    Points
    145
    Par défaut Enregistrement automatique avec un nom variable
    Bonjour,
    Dans mon appli, je genere en fin de calculs un formulaire d'impression qui me permet d'imprimer, d'enregistrer le formulaire en JPG dans un repertoire.
    Mon idée est d'enregistrer automatiquement le formulaire apres 3 secondes d'affichage (il s'affiche tout seul avec un timer) toujours sous forme jpg, dans le repertoire "enregistrements" situé dans "mes documents" mais avec un nom que l'on retrouve dans une textbox du formulaire.
    Exemple : si le nom dans le textbox est DURAND, je voudrais enregistrer automatiquement le fichier durand.jpg dans "c:\mes documents\enregistrements"

    Voici le code que j'ai actuellement et qui permet l'enregistrement via un button appelé "image".

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
     
    Private Sub Image_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Image.Click
            ' enregistre la feuille sous forme de fichier image .jpg
            Imprimer.Visible = False
            Image.Visible = False
            Quitter.Visible = False
            Avant.Visible = False
            Arriere.Visible = False
            Using p As New ClassImpression()
                Try
                    p.SetDocument(Me)
                    PictureBox.Image = buffer ' ici que picturebox contient le résultat 
     
                    ' boite de sauvegarde du fichier
                    With SaveFileDialog
                        .Title = "Enregistrer sous"        'Titre de la barre de titre
                        .InitialDirectory = BddPath        'répertoire de départ        
                        .Filter = "Fichiers jpg|*.jpg"     ' on travaille uniquement sur les .jpg
                        .ValidateNames = True              'n'accepte que les noms valides (win 32)
                        .AddExtension = True               'ajoute une extension au nom s'il n'y en a pas
                        .CreatePrompt = True               ' Message de confirmation si création d'un nouveau fichier
                        .OverwritePrompt = True            'Message si le fichier existe déjà : évite l'effacement d'anciennes données
                        If .ShowDialog = DialogResult.OK Then  'L'utilisateur a bien cliqué sur ok
                            PictureBox.Image.Save(.FileName)
                        End If
                    End With
     
                Catch ex As Exception
                    If langue = "en" Then
                        messageaff = "Image .jpg Error"
                        infoaff = "Error"
                    Else
                        messageaff = "Erreur fichier image .jpg"
                        infoaff = "Erreur"
                    End If
                    MessageBox.Show(messageaff, infoaff, MessageBoxButtons.OK, MessageBoxIcon.Error)
                End Try
            End Using
            If flagnavigate = True Then
                Afficheboutons()
            End If
            Imprimer.Visible = True
            Image.Visible = True
            Quitter.Visible = True
     
        End Sub
    Je pensais reutiliser un timer pour l'enregistrement auto mais j'ai un peu de mal a modifier la sub pour les autres paramètres d'enregistrement.
    Merci beaucoup de vos suggestions

  2. #2
    Membre éprouvé

    Homme Profil pro
    Inscrit en
    Mars 2012
    Messages
    691
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Israël

    Informations forums :
    Inscription : Mars 2012
    Messages : 691
    Points : 929
    Points
    929
    Par défaut
    Salut
    c'est quoi ton formulaire ta form ?

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    Private Sub Saveform()
            Try
                Dim imgFinal As New Bitmap(Me.Width, Me.Height)
                ' TextBox1.Text = "coucou"
                Me.DrawToBitmap(imgFinal, ClientRectangle)
                imgFinal.Save(My.Computer.FileSystem.SpecialDirectories.MyDocuments & "\enregistrements\" & TextBox1.Text & ".jpeg", ImageFormat.Jpeg)
            Catch ex As Exception
                MessageBox.Show(ex.Message)
            End Try
        End Sub
    appelle saveform dans un timer

  3. #3
    Membre habitué
    Homme Profil pro
    Administrateur systèmes et réseaux
    Inscrit en
    Juin 2005
    Messages
    608
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Meurthe et Moselle (Lorraine)

    Informations professionnelles :
    Activité : Administrateur systèmes et réseaux
    Secteur : Santé

    Informations forums :
    Inscription : Juin 2005
    Messages : 608
    Points : 145
    Points
    145
    Par défaut
    Salut ShayW,
    Merci pour l'aide, je n'arrivais pas a donner le nom correct au fichier, je teste cela de suite

  4. #4
    Membre habitué
    Homme Profil pro
    Administrateur systèmes et réseaux
    Inscrit en
    Juin 2005
    Messages
    608
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Meurthe et Moselle (Lorraine)

    Informations professionnelles :
    Activité : Administrateur systèmes et réseaux
    Secteur : Santé

    Informations forums :
    Inscription : Juin 2005
    Messages : 608
    Points : 145
    Points
    145
    Par défaut
    arfff alors la sub genere bien l'enregistrement mais le souci est que je n'ai rien de rien dans ma feuille hormis les frames
    pour exemple :
    voici ce que j'obtiens avec Image_Click, mon enregistrement via click sur button Image


    et voici ce que la sub saveform me donne :



    la quasi totalité des elements n'y sont pas et les bords droit et bas sont tronqués
    aurais je oublie quelque chose ?

    La savefiledialog de mon code initial est superflue maintenant. N'est il pas possible de la remplacer par le chemin d'enregistrement et les nom/extension du fichier ?

  5. #5
    Membre éprouvé

    Homme Profil pro
    Inscrit en
    Mars 2012
    Messages
    691
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Israël

    Informations forums :
    Inscription : Mars 2012
    Messages : 691
    Points : 929
    Points
    929
    Par défaut
    c'est quoi ton formulaire ?
    dans ton dossier enregistrement tu obiens bien un fichier *.jpeg ?
    et quand tu l'ouvre il est vide ?

  6. #6
    Membre habitué
    Homme Profil pro
    Administrateur systèmes et réseaux
    Inscrit en
    Juin 2005
    Messages
    608
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Meurthe et Moselle (Lorraine)

    Informations professionnelles :
    Activité : Administrateur systèmes et réseaux
    Secteur : Santé

    Informations forums :
    Inscription : Juin 2005
    Messages : 608
    Points : 145
    Points
    145
    Par défaut
    Je ne comprends pas trop le sens de ta question
    Ce que j'imprime est un formulaire standard contenant textbox, picturebox, labels, rectangleshapes et checkbox.
    Ce formulaire contient aussi une saveFileDialog, un PrintDocument et un printDialog.
    Que puis je dire de plus qui t'aiderais ?

    Oui j'obtiens bien un fichier .jpeg dans enregistrements, le fichier est bien nommé par rapport au textbox voulu mais quand je l'ouvre, j'obtiens l'image du dessus alors que avec l'appui sur button avec mon code initial, tout est bien rempli mais j'ai une boite de dialogue qui m'ennuie et je suis obligé d'entrer le nom du jpeg a la main

    Tres clairement le .jpeg est en fait exactement une capture d'ecran du formulaire d'impression

  7. #7
    Membre éprouvé

    Homme Profil pro
    Inscrit en
    Mars 2012
    Messages
    691
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Israël

    Informations forums :
    Inscription : Mars 2012
    Messages : 691
    Points : 929
    Points
    929
    Par défaut
    j'obtiens l'image du dessus

    chez moi j'ai bien une capture d'écran de la taille de la form
    envois une image pour illustrer

  8. #8
    Membre éprouvé

    Homme Profil pro
    Inscrit en
    Mars 2012
    Messages
    691
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Israël

    Informations forums :
    Inscription : Mars 2012
    Messages : 691
    Points : 929
    Points
    929
    Par défaut
    si cela peut aider

    une sub pour imprimer et sauvegarder il faudra un peu modifier

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
     Private Sub printdoc()
            Try
                Dim ppd As New PrintPreviewDialog
                'document à imprimer
                Dim doc As New PrintDocument
                'nom pour le gestionnaire d'imprimante
                doc.DocumentName = "MaForm"
                'abonnement à l'événement PrintPage
                AddHandler doc.PrintPage, AddressOf Saveform
                'paramètres de page
                Dim ps As New PageSettings
                'ici en paysage pour l'exemple
                ps.Landscape = True
                doc.DefaultPageSettings = ps
                'indique à la prévisualisation le document à montrer
                ppd.Document = doc
                'previsualisation plein écran
                ppd.WindowState = FormWindowState.Maximized
                'imprssion si ok
                If ppd.ShowDialog = Windows.Forms.DialogResult.OK Then
                    ppd.Document.Print()
                End If
            Catch ex As Exception
                MessageBox.Show(ex.Message)
            End Try
        End Sub
        Private Sub Saveform(ByVal sender As Object, ByVal e As PrintPageEventArgs)
            Try
                Dim imgFinal As New Bitmap(ClientRectangle.Width, ClientRectangle.Height)
                          Me.DrawToBitmap(imgFinal, ClientRectangle)
                e.Graphics.DrawImage(imgFinal, 0, 0, ClientRectangle.Width, ClientRectangle.Height)
                imgFinal.Save(My.Computer.FileSystem.SpecialDirectories.MyDocuments & "\enregistrement\" & TextBox1.Text & ".jpeg", ImageFormat.Jpeg)
     
            Catch ex As Exception
                MessageBox.Show(ex.Message)
            End Try
        End Sub
    si tu dois cliquer sur un bouton à chaque impression
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     Private Sub ButtonP_MouseClick(ByVal sender As Object, ByVal e As System.Windows.Forms.MouseEventArgs) Handles ButtonP.MouseClick
            printdoc()
        End Sub

  9. #9
    Membre habitué
    Homme Profil pro
    Administrateur systèmes et réseaux
    Inscrit en
    Juin 2005
    Messages
    608
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Meurthe et Moselle (Lorraine)

    Informations professionnelles :
    Activité : Administrateur systèmes et réseaux
    Secteur : Santé

    Informations forums :
    Inscription : Juin 2005
    Messages : 608
    Points : 145
    Points
    145
    Par défaut
    je t'envoie ca shayW mais c'est rigoureusement ce que tu vois dans mon post du dessus

  10. #10
    Membre habitué
    Homme Profil pro
    Administrateur systèmes et réseaux
    Inscrit en
    Juin 2005
    Messages
    608
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Meurthe et Moselle (Lorraine)

    Informations professionnelles :
    Activité : Administrateur systèmes et réseaux
    Secteur : Santé

    Informations forums :
    Inscription : Juin 2005
    Messages : 608
    Points : 145
    Points
    145
    Par défaut
    J'ai teste le saveform a peu pres dans toutes les configurations possibles et j'ai toujours la même chose, la quasi majorité des informations sont absentes et l'image est tronquée a droite et en bas.
    Mon but est bien d' enregistrer sans action sur un button et de ce coté, cela fonctionne. Juste que toutes les données ne sont pas visibles

  11. #11
    Membre éprouvé

    Homme Profil pro
    Inscrit en
    Mars 2012
    Messages
    691
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Israël

    Informations forums :
    Inscription : Mars 2012
    Messages : 691
    Points : 929
    Points
    929
    Par défaut
    un peu différent

    une class

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
      Imports System.Drawing.Printing
    Public Class ClassPrint
        Private Declare Function StretchBlt Lib "gdi32.dll" Alias "BitBlt" (ByVal _
               hdcDest As IntPtr, ByVal nXDest As Integer, ByVal nYDest As _
               Integer, ByVal nWidth As Integer, ByVal nHeight As Integer, ByVal _
               hdcSrc As IntPtr, ByVal nXSrc As Integer, ByVal nYSrc As Integer, _
               ByVal dwRop As System.Int32) As Long
        Private myimage As Bitmap
        Private thectrl As Control
        Public Function returnimage() As Bitmap
            myimage = Capturectrl(thectrl)
            Return myimage
        End Function
        Private Function Capturectrl(ByVal ctrl As Control) As Bitmap
            Dim memoryImage As Bitmap
            Dim mygraphics As Graphics = ctrl.CreateGraphics()
            Dim s As Size = ctrl.Size
            memoryImage = New Bitmap(s.Width, s.Height, mygraphics)
            Dim memoryGraphics As Graphics = Graphics.FromImage(memoryImage)
            Dim dc1 As IntPtr = mygraphics.GetHdc
            Dim dc2 As IntPtr = memoryGraphics.GetHdc
            StretchBlt(dc2, 0, 0, ctrl.ClientRectangle.Width, _
               ctrl.ClientRectangle.Height, dc1, 0, 0, 13369376)
            mygraphics.ReleaseHdc(dc1)
            memoryGraphics.ReleaseHdc(dc2)
            Return memoryImage
        End Function
        Public Sub printdoc()
            Try
                Dim ppd As New PrintPreviewDialog
                'document à imprimer
                Dim doc As New PrintDocument
                'nom pour le gestionnaire d'imprimante
                doc.DocumentName = "MaForm"
                'abonnement à l'événement PrintPage
                Capturectrl(thectrl)
                AddHandler doc.PrintPage, AddressOf printform
                'paramètres de page
                Dim ps As New PageSettings
                'ici en paysage pour l'exemple
                ps.Landscape = True
                doc.DefaultPageSettings = ps
                'indique à la prévisualisation le document à montrer
                ppd.Document = doc
                'previsualisation plein écran
                ppd.WindowState = FormWindowState.Maximized
                'imprssion si ok
                If ppd.ShowDialog = Windows.Forms.DialogResult.OK Then
                    ppd.Document.Print()
                End If
            Catch ex As Exception
                MessageBox.Show(ex.Message)
            End Try
        End Sub
     
        Private Sub printform(ByVal sender As Object, ByVal e As PrintPageEventArgs)
            Try
                e.Graphics.DrawImage(myimage, 0, 0)
     
     
            Catch ex As Exception
                MessageBox.Show(ex.Message)
            End Try
        End Sub
     
        Public Sub New(ByVal ctrl As Control)
            thectrl = ctrl
        End Sub
    End Class
    utilisation de la class
    dans ta form

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    Private showimage As Bitmap
      Private Sub ButtonP_MouseClick(ByVal sender As Object, ByVal e As System.Windows.Forms.MouseEventArgs) Handles ButtonP.MouseClick
            Dim printer As New ClassPrint(Me)
            showimage = printer.returnimage
            printer.printdoc()
            Timer1.Interval = 3000
            Timer1.Start()
               End Sub
     Private Sub Timer1_Tick(ByVal sender As Object, ByVal e As System.EventArgs) Handles Timer1.Tick
            Try
                showimage.Save(My.Computer.FileSystem.SpecialDirectories.MyDocuments & "\enregistrement\" & TextBox1.Text & ".jpeg", ImageFormat.Jpeg)
                Timer1.Stop()
            Catch ex As Exception
                MessageBox.Show(ex.Message)
            End Try
     
        End Sub

Discussions similaires

  1. [WD-2003] Publispostage - Enregistrer avec un nom variable
    Par volesk dans le forum Word
    Réponses: 2
    Dernier message: 10/08/2011, 11h57
  2. "enregistrer.sous" avec un nom de fichier récupéré dans une variable
    Par mauriceguillier dans le forum Macros et VBA Excel
    Réponses: 5
    Dernier message: 10/10/2010, 14h49
  3. Enregistrement automatique avec ADO
    Par soso78 dans le forum VB 6 et antérieur
    Réponses: 1
    Dernier message: 05/10/2007, 15h51
  4. Réponses: 1
    Dernier message: 30/05/2006, 16h41
  5. [XSLT] - Comment selectionner une balise avec un nom variable ?
    Par bchabot dans le forum XSL/XSLT/XPATH
    Réponses: 2
    Dernier message: 25/04/2006, 09h59

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo