Précédent   Forum des professionnels en informatique > Logiciels > Microsoft Office > Excel > Macros et VBA Excel
Macros et VBA Excel Vos questions relatives aux macros Excel, à l'utilisation de VBA et à l'automatisation de vos classeurs Excel.
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 25/01/2012, 08h53   #1
Membre habitué
 
Avatar de fowlie
 
Étudiant
Inscription : mai 2011
Messages : 335
Détails du profil
Informations personnelles :
Localisation : France

Informations professionnelles :
Activité : Étudiant
Secteur : Industrie

Informations forums :
Inscription : mai 2011
Messages : 335
Points : 146
Points : 146
Par défaut Imprimer un userform au format paysage

Bonjour,

Comme l'indique le sujet, je souhaite imprimer un userform au format paysage. Pour le moment mon code me permet de l'imprimer au format portrait, et le problème est donc qu'il ne remplit que la moitié d'une page A4. Voici mon code, trés basique :
Code :
1
2
3
Private Sub CommandButton1_Click()
    Me.PrintForm
End Sub
Pour effectuer mes test je n'imprime pas, mais j'enregistre au format PDF, celà est-il du à la fonction ou aux paramétres par défaut d'impression de mon ordinateur?

C'est la première fois que j'utilise cette fonction alors je ne la connait pas trés bien ...

Merci d'avance pour votre aide et vos conseils
__________________
---Fowlie---
fowlie est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 25/01/2012, 11h09   #2
Expert Confirmé Sénior
 
Homme Daniel
aucune
Inscription : septembre 2011
Messages : 2 004
Détails du profil
Informations personnelles :
Nom : Homme Daniel
Localisation : France, Seine et Marne (Île de France)

Informations professionnelles :
Activité : aucune

Informations forums :
Inscription : septembre 2011
Messages : 2 004
Points : 4 037
Points : 4 037
Bonjour, j'ai trouvé ceci en cherchant sur internet. Le principe estde copier l'image de l'userform, de la copier sur une feuille, de mettre ma forme au format paysage et de l'imprimer. L'userform doit être visible. Le code prévoit un boouton de commande sur l'userform pour commander l'impression. Dans un module standard :

Code :
1
2
3
4
5
6
7
Declare Sub keybd_event Lib "user32" (ByVal bVk As Byte, _
ByVal bScan As Byte, ByVal dwFlags As Long, ByVal dwExtraInfo As Long)
 
Public Const VK_SNAPSHOT = 44
Public Const VK_LMENU = 164
Public Const KEYEVENTF_KEYUP = 2
Public Const KEYEVENTF_EXTENDEDKEY = 1
Le code du bouton d'impression :

Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
Private Sub CommandButton1_Click()
' keybd_event VK_SNAPSHOT, 0, 0, 0
DoEvents
keybd_event VK_LMENU, 0, KEYEVENTF_EXTENDEDKEY, 0
keybd_event VK_SNAPSHOT, 0, KEYEVENTF_EXTENDEDKEY, 0
keybd_event VK_SNAPSHOT, 0, KEYEVENTF_EXTENDEDKEY + _
KEYEVENTF_KEYUP, 0
keybd_event VK_LMENU, 0, KEYEVENTF_EXTENDEDKEY + _
KEYEVENTF_KEYUP, 0
DoEvents
Workbooks.Add
Application.Wait Now + TimeValue("00:00:01")
ActiveSheet.PasteSpecial Format:="Bitmap", Link:=False, _
DisplayAsIcon:=False
ActiveSheet.Range("A1").Select
'added to force landscape
ActiveSheet.PageSetup.Orientation = xlLandscape
'ActiveWindow.SelectedSheets.PrintOut Copies:=1 '
ActiveWindow.SelectedSheets.PrintPreview
ActiveWorkbook.Close False
End Sub
Je ne sais pas s'il est possible d'éviter de passer par un commandbutton.
__________________
Cordialement.

Daniel

Citation:
La plus perdue de toutes les journées est celle où l'on n'a pas ri.
Chamfort
Daniel.C est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 25/01/2012, 11h17   #3
Membre habitué
 
Avatar de fowlie
 
Étudiant
Inscription : mai 2011
Messages : 335
Détails du profil
Informations personnelles :
Localisation : France

Informations professionnelles :
Activité : Étudiant
Secteur : Industrie

Informations forums :
Inscription : mai 2011
Messages : 335
Points : 146
Points : 146
Merci je vais essayer ça =D de toute façon je passe déja par un commande bouton alors ce n'est pas un problème =)
__________________
---Fowlie---
fowlie est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 25/01/2012, 11h26   #4
Rédacteur
 
Avatar de Ormonth
 
Homme Didier GONARD
Formateur Développeur Office - indépendant
Inscription : février 2008
Messages : 2 353
Détails du profil
Informations personnelles :
Nom : Homme Didier GONARD
Localisation : France, Loire Atlantique (Pays de la Loire)

Informations professionnelles :
Activité : Formateur Développeur Office - indépendant

Informations forums :
Inscription : février 2008
Messages : 2 353
Points : 4 685
Points : 4 685
Bonjour,

En cherchant sur DVP, tu as ceci avec les liens Tutos


Imprimer toutes les pages d'un USF Multipages

Cordialement,

Ps : si le côté technique de la réponse = OK ou pas => pensez à cliquer sur les pouces et quand question résolue à la taguer résolue, et chaque action vous rapporte des points

Didier
__________________
Didier Gonard

Ps :
Pour noter positivement ou négativement un post, vous pouvez cliquer sur les pouces en bas à droite !
Tutoriels : Voir la liste de mes tutoriels et mon site pro sur ma Page DVP
N'oubliez pas de mettre : ..quand c'est le cas !
Ormonth est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 25/01/2012, 11h46   #5
Membre habitué
 
Avatar de fowlie
 
Étudiant
Inscription : mai 2011
Messages : 335
Détails du profil
Informations personnelles :
Localisation : France

Informations professionnelles :
Activité : Étudiant
Secteur : Industrie

Informations forums :
Inscription : mai 2011
Messages : 335
Points : 146
Points : 146
Merci pour vos réponses,

J'ai essayé le code de Daniel, puis celui du tuto DVP et j'ai le même problème dans les deux cas... Lorsque je clique sur mon bouton imprimer, j'ai apparemment un aperçu avant impression qui s'ouvre, mais j'ai toujours mon userform en premier plan et là ça bloque, je ne peux rien fermer, rien arrêter .. je suis obligé de passer par le gestionnaire de tâches =s

Voici le dernier code tester
Code :
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
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 PrintButton_Click()
    If TextBox3.Value = "" Then
        MsgBox "Vous devez rentrer le nombre de personnes de ce secteur"
    Else
        Dim Ws As Worksheet
 
        'Copie d'écran de la forme active
        keybd_event vbKeySnapshot, 1, 0&, 0&
        DoEvents
 
        'Ajoute une feuille pour coller l'image de la forme
        Set Ws = Sheets.Add
        Ws.Paste
        ActiveSheet.PageSetup.Orientation = xlLandscape
        'impression centrée dans la page
        With Ws
            .PageSetup.CenterHorizontally = True
            .PageSetup.CenterVertically = True
            '.PrintOut
            .PrintPreview
        End With
    End If
 
End Sub
__________________
---Fowlie---
fowlie est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 25/01/2012, 11h54   #6
Membre du Club
 
Homme Jean-Christophe DERCHAIN
Inscription : janvier 2007
Messages : 40
Détails du profil
Informations personnelles :
Nom : Homme Jean-Christophe DERCHAIN
Localisation : France

Informations forums :
Inscription : janvier 2007
Messages : 40
Points : 46
Points : 46
Bonjour,

tu ne "decharche"pas ton userform. est-ce normal ?
tu devrait essayer de mettre
quelque part.

Salutation.
jcderchain est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 25/01/2012, 12h12   #7
Rédacteur
 
Avatar de Ormonth
 
Homme Didier GONARD
Formateur Développeur Office - indépendant
Inscription : février 2008
Messages : 2 353
Détails du profil
Informations personnelles :
Nom : Homme Didier GONARD
Localisation : France, Loire Atlantique (Pays de la Loire)

Informations professionnelles :
Activité : Formateur Développeur Office - indépendant

Informations forums :
Inscription : février 2008
Messages : 2 353
Points : 4 685
Points : 4 685
Bonjour,

Citation:
Envoyé par fowlie
J'ai essayé.. puis celui du tuto DVP
copier coller, c'est bien, lire ce qui est marqué pour comprendre, c'est encore mieux

Citation:
Envoyé par Tutoriel
III-F. Effectuer l'aperçu avant impression d'une feuille de calcul depuis un UserForm
Lorsque vous souhaitez effectuer un aperçu avant impression d'une feuille de calcul, depuis un UserForm, utilisez:
Vba


Private Sub CommandButton1_Click()
Me.Hide
'Aperçu avant impression de la Feuil1
Feuil1.PrintPreview
Me.Show
End Sub
Code :
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
Private Sub CommandButton1_Click()
    If TextBox3.Value = "" Then
        MsgBox "Vous devez rentrer le nombre de personnes de ce secteur"
    Else
        Dim Ws As Worksheet
 
        'Copie d'écran de la forme active
        keybd_event vbKeySnapshot, 1, 0&, 0&
        DoEvents
 
        'Ajoute une feuille pour coller l'image de la forme
        Set Ws = Sheets.Add
        Ws.Paste
        ActiveSheet.PageSetup.Orientation = xlLandscape
        'impression centrée dans la page
        Me.Hide
        With Ws
            .PageSetup.CenterHorizontally = True
            .PageSetup.CenterVertically = True
            '.PrintOut
            .PrintPreview
        End With
    End If
 Me.Show
End Sub
vois dans l'aide VBA et les tutos la notion de USF modal ou non , Hide etc...

Cordialement,

Ps : si le côté technique de la réponse = OK ou pas => pensez à cliquer sur les pouces et quand question résolue à la taguer résolue, et chaque action vous rapporte des points

Didier
__________________
Didier Gonard

Ps :
Pour noter positivement ou négativement un post, vous pouvez cliquer sur les pouces en bas à droite !
Tutoriels : Voir la liste de mes tutoriels et mon site pro sur ma Page DVP
N'oubliez pas de mettre : ..quand c'est le cas !
Ormonth est déconnecté   Envoyer un message privé Réponse avec citation 10
Vieux 26/01/2012, 11h23   #8
Membre habitué
 
Avatar de fowlie
 
Étudiant
Inscription : mai 2011
Messages : 335
Détails du profil
Informations personnelles :
Localisation : France

Informations professionnelles :
Activité : Étudiant
Secteur : Industrie

Informations forums :
Inscription : mai 2011
Messages : 335
Points : 146
Points : 146
Merci effectivement ça marche mieux comme ça
Par contre est-il possible de faire la même chose mais uniquement avec l'intérieur du userform, sans le titre et le contour de fenêtre bleu? A la base c'est plutôt ce que je recherchais ...

quelqu'un saurait-il s'il est possible d'imprimer uniquement l'intérieur du userform? Enfin j'y arrive avec Me.PrintForm mais je voudrais imprimer le userform au format paysage. Ce dernier point, j'y arrive avec l'aide apportée par le forum ci-dessus ... Mais j'affiche aussi le titre du userform et son contour.

Comment faire pour imprimer l'intérieur uniquement et au format paysage?

Merci d'avance pour votre aide!
__________________
---Fowlie---
fowlie est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 26/01/2012, 17h28   #9
Expert Confirmé Sénior
 
Homme Daniel
aucune
Inscription : septembre 2011
Messages : 2 004
Détails du profil
Informations personnelles :
Nom : Homme Daniel
Localisation : France, Seine et Marne (Île de France)

Informations professionnelles :
Activité : aucune

Informations forums :
Inscription : septembre 2011
Messages : 2 004
Points : 4 037
Points : 4 037
A mon avis, ce n'est pas possible. Pourquoi mets-tu les contrôles sur un userform ? est-ce que tu ne peux pas les mettre sur une feuille de données ?
__________________
Cordialement.

Daniel

Citation:
La plus perdue de toutes les journées est celle où l'on n'a pas ri.
Chamfort
Daniel.C est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 27/01/2012, 08h09   #10
Membre habitué
 
Avatar de fowlie
 
Étudiant
Inscription : mai 2011
Messages : 335
Détails du profil
Informations personnelles :
Localisation : France

Informations professionnelles :
Activité : Étudiant
Secteur : Industrie

Informations forums :
Inscription : mai 2011
Messages : 335
Points : 146
Points : 146
Cad les controles sur le userform? tu parles du bouton d'impression? tu proposerais quoi sinon?
__________________
---Fowlie---
fowlie est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 27/01/2012, 10h26   #11
Expert Confirmé Sénior
 
Homme Daniel
aucune
Inscription : septembre 2011
Messages : 2 004
Détails du profil
Informations personnelles :
Nom : Homme Daniel
Localisation : France, Seine et Marne (Île de France)

Informations professionnelles :
Activité : aucune

Informations forums :
Inscription : septembre 2011
Messages : 2 004
Points : 4 037
Points : 4 037
Je veux dire que tu pourrais peut-être ne pas utiliser un userform. Tu mettrais les contrôles de ton userform sur une feuille.
__________________
Cordialement.

Daniel

Citation:
La plus perdue de toutes les journées est celle où l'on n'a pas ri.
Chamfort
Daniel.C est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 27/01/2012, 14h44   #12
Membre habitué
 
Avatar de fowlie
 
Étudiant
Inscription : mai 2011
Messages : 335
Détails du profil
Informations personnelles :
Localisation : France

Informations professionnelles :
Activité : Étudiant
Secteur : Industrie

Informations forums :
Inscription : mai 2011
Messages : 335
Points : 146
Points : 146
C'est une idée, mais je manque de temps.
finalement j'ai réussi, comme quoi tout est possible ^^ bon c'est un système D mais ça marche :
Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
        Dim Ws As Worksheet
        'Copie d'écran de la forme active
        keybd_event vbKeySnapshot, 1, 0&, 0&
        DoEvents
 
        'Ajoute une feuille pour coller l'image de la forme
        Set Ws = Sheets.Add
        Ws.Paste
        ActiveSheet.PageSetup.Orientation = xlLandscape
            Selection.ShapeRange.PictureFormat.CropTop = 21.75
        'impression centrée dans la page
        Me.Hide
 
        Selection.ShapeRange.PictureFormat.CropRight = 3.75
        Selection.ShapeRange.PictureFormat.CropBottom = 4.5
        Selection.ShapeRange.PictureFormat.CropLeft = 3#
        Selection.ShapeRange.IncrementLeft -3#
        Selection.ShapeRange.IncrementTop -21.75
        Selection.ShapeRange.ScaleWidth 1.04, msoFalse, msoScaleFromTopLeft
        ActiveWindow.SelectedSheets.PrintOut Copies:=1, Collate:=True
        Ws.Delete
__________________
---Fowlie---
fowlie est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 23h57.


 
 
 
 
Partenaires

Hébergement Web