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

Macros et VBA Excel Discussion :

[VBA-E]Impression d'une form


Sujet :

Macros et VBA Excel

  1. #1
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Juillet 2004
    Messages
    41
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2004
    Messages : 41
    Points : 37
    Points
    37
    Par défaut [VBA-E]Impression d'une form
    Bonjour,

    J'ai un problème qui doit être des plus classique, mais je ne trouve pas la réponse dans les forums.

    Je voudrais imprimer sous VBA (Excel) une Form, au mieux en pouvant parametrer la mise en forme et au minimum en pouvant passer l'impression en paysage.

    Je ne sais pas si Printer est la solution, si oui, comment le faire reconnaitre par VBA ?

    Merci.

    P.R

  2. #2
    Membre averti
    Profil pro
    Inscrit en
    Septembre 2005
    Messages
    290
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Septembre 2005
    Messages : 290
    Points : 374
    Points
    374
    Par défaut Imprimer UserForm
    Bonjour,
    Pour imprimer un UserForm, c'est simple, mais pour le mode paysage, je n'ais pas encore trouvé (vais chercher).
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    Private Sub CommandButton1_Click()
    Application.ScreenUpdating = False
        UserForm1.PrintForm
      Application.ScreenUpdating = True
    End Sub
    jpleroisse

  3. #3
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Juillet 2004
    Messages
    41
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2004
    Messages : 41
    Points : 37
    Points
    37
    Par défaut
    C'est gentil de répondre, mais ça ne fait pas avancer mon problème d'un pixel

    P.R

  4. #4
    Expert éminent sénior

    Homme Profil pro
    Inscrit en
    Août 2005
    Messages
    3 317
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Secteur : Industrie

    Informations forums :
    Inscription : Août 2005
    Messages : 3 317
    Points : 20 150
    Points
    20 150
    Par défaut
    bonjour

    j'espere que cet exemple pourra t'aider


    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
    Option Explicit
     
    Private Declare Sub keybd_event Lib "user32" ( _
    ByVal bVk As Byte, ByVal bScan As Byte, ByVal dwFlags As Long, _
    ByVal dwExtraInfo As Long)
     
    Private Sub CommandButton1_Click()
    Dim Wrd As Object, WrdDoc As Object
     
    'Copie d'écran de la forme active
    keybd_event vbKeySnapshot, 1, 0&, 0&
    DoEvents
     
    Set Wrd = CreateObject("Word.Application") 'creation session Word
    Wrd.Visible = False 'pour que Word reste masqué pendant l'opération
     
    On Error Resume Next
    Set WrdDoc = Wrd.Documents.Add
    WrdDoc.PageSetup.Orientation = wdOrientLandscape
     
    Wrd.Selection.PasteSpecial 'colle dans le document Word
     
    With WrdDoc.Shapes(1) 'redimensionnement et positionnement de l'objet imprimé
    .Left = 50 'bord gauche
    .Top = 50 'bord haut
    .Width = 400
    End With
     
    WrdDoc.PrintOut 'impression
     
    WrdDoc.Close False 'ferme le document Word sans sauvegarde
    WrdDoc.Quit 'ferme l'application Word
    End Sub

    cordialement
    michel

  5. #5
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Juillet 2004
    Messages
    41
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2004
    Messages : 41
    Points : 37
    Points
    37
    Par défaut
    C'est tordu, mais ça marche !

    J'ai un peu simplifié le code, puisque je suis déjà dans Excel, autant faire l'impression sur une feuille Excel plutôt que d'ouvrir un objet Word.

    Voila ce que cela donne et merci beaucoup.

    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
     
    ' Impression de la form active
    Public Function imprimeFormActive()
    '   On Error GoTo gestErreur
     
        ' Init
        Dim feuilleImp As Object
     
        ' Suppression de la mise a jour de l'affichage et des messages d'alerte
        application.ScreenUpdating = False
        application.DisplayAlerts = False
     
        ' Copie d'ecran de la forme active
        keybd_event vbKeySnapshot, 1, 0&, 0&
        DoEvents
     
        ' Creation d'une nouvelle feuille
        Set feuilleImp = ThisWorkbook.Sheets.Add
     
        ' Mise en page de la feuille
        With feuilleImp.PageSetup
            .LeftMargin = application.InchesToPoints(0.393700787401575)
            .RightMargin = application.InchesToPoints(0.393700787401575)
            .TopMargin = application.InchesToPoints(0.196850393700787)
            .BottomMargin = application.InchesToPoints(0.196850393700787)
            .HeaderMargin = application.InchesToPoints(0.511811023622047)
            .FooterMargin = application.InchesToPoints(0.511811023622047)
            .CenterHorizontally = True
            .CenterVertically = True
            .Orientation = xlLandscape
        End With
     
        ' Collage dans la feuille Excel
        feuilleImp.PasteSpecial
     
        ' Impression
        feuilleImp.PrintOut
     
        ' Suppression de la feuille
        feuilleImp.Delete
     
        ' Reactivation de la mise a jour de l'affichage et des messages d'alerte
        application.ScreenUpdating = True
        application.DisplayAlerts = True
     
    Exit Function
    gestErreur:
    gestion_Erreur Err, "imprimeFormActive"
    End Function
    PR

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Impression d'une form
    Par breizh44 dans le forum Débuter
    Réponses: 5
    Dernier message: 06/03/2008, 19h26
  2. Probleme d'impression d'une Form
    Par andreditdd dans le forum Delphi
    Réponses: 6
    Dernier message: 29/01/2007, 22h11
  3. Améliorer la qualité d'impression d'une form
    Par akabane dans le forum Delphi
    Réponses: 2
    Dernier message: 08/07/2006, 14h31
  4. [VB6] position de l'impression d'une form sur une feuille
    Par cisnake dans le forum VB 6 et antérieur
    Réponses: 7
    Dernier message: 22/05/2006, 02h06
  5. Impression d'une form avec controle MSHFlexGrid
    Par felix14 dans le forum VB 6 et antérieur
    Réponses: 4
    Dernier message: 10/01/2006, 18h59

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