Précédent   Forum des professionnels en informatique > Logiciels > Microsoft Office > Word > VBA Word
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 17/12/2011, 17h36   #1
Candidat au titre de Membre du Club
 
Homme
Inscription : novembre 2011
Messages : 60
Détails du profil
Informations personnelles :
Sexe : Homme

Informations forums :
Inscription : novembre 2011
Messages : 60
Points : 10
Points : 10
Par défaut Impression avec userform

Salut,

Cette discussion poursuit celle d'ici :
http://www.developpez.net/forums/d11...lertes-marges/

Elle avait été mentionnée comme "résolu" alors je préfère re-poster.

-----------------------------------------------------------------------
A l'usage, je me rends compte qu'il manque à mon userform une option NOMBRE DE COPIES.

J'ai donc ajouté à l'USERFORM une case txtbox nommée txtImpr

J'ai ensuite modifié le code comme ci-dessous :

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
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
 
 
Option Explicit
 
Private Sub ToggleButton3_Click()
Me.txtPages.Enabled = True
 
End Sub
 
Private Sub CommandButton1_Click()
 
 With ActiveDocument.Bookmarks
        .Add Range:=Selection.Range, Name:="Positioncurseur"
        .DefaultSorting = wdSortByName
        .ShowHidden = False
    End With
    Selection.WholeStory
    Selection.Range.HighlightColorIndex = wdNoHighlight
    Selection.GoTo What:=wdGoToBookmark, Name:="Positioncurseur"
    Selection.Find.ClearFormatting
    With Selection.Find
        .Text = ""
        .Replacement.Text = ""
        .Forward = True
        .Wrap = wdFindAsk
        .Format = False
        .MatchCase = False
        .MatchWholeWord = False
        .MatchWildcards = False
        .MatchSoundsLike = False
        .MatchAllWordForms = False
    End With
Application.DisplayAlerts = wdAlertsNone
Options.PrintBackground = False
Dim myStr As String
myStr = Me.txtPages + Me.txtImpr
 
 
If Me.OptionButton4 Then ActivePrinter = "HP Officejet Pro K550 Series"
If Me.OptionButton5 Then ActivePrinter = "Adobe PDF"
If Me.OptionButton1 Then Application.PrintOut Range:=wdPrintCurrentPage
If Me.OptionButton2 Then Application.PrintOut Range:=wdPrintAllDocument
If Me.OptionButton3 Then Application.PrintOut Range:=wdPrintRangeOfPages, Pages:=myStr, Copies:=myStr
 
Application.DisplayAlerts = wdAlertsAll
ActivePrinter = "HP Officejet Pro K550 Series"
Unload Me
 
End Sub
 
Private Sub UserForm_Activate()
Me.OptionButton3 = True
Me.txtPages.Enabled = True
Me.txtImpr.Enabled = True
Me.txtPages.SetFocus
 
End Sub
 
 
Private Sub OptionButton1_Click()
 
End Sub
 
Private Sub UserForm_Click()
Debug.Print Me.OptionButton1.Value
 
 
End Sub
Évidement ma modification doit comporter une erreur car l'impression ne se lance pas... et je n'ai pas d'erreur...

Merci de votre ide.

Thomas
Images attachées
Type de fichier : png Image 000.png (11,8 Ko, 3 affichages)
tom0ne est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 17/12/2011, 23h27   #2
Responsable Word

 
Avatar de Heureux-oli
 
Homme Olivier Lebeau
Contrôleur d'industrie
Inscription : février 2006
Messages : 17 338
Détails du profil
Informations personnelles :
Nom : Homme Olivier Lebeau
Âge : 47
Localisation : Belgique

Informations professionnelles :
Activité : Contrôleur d'industrie
Secteur : Aéronautique - Marine - Espace - Armement

Informations forums :
Inscription : février 2006
Messages : 17 338
Points : 29 246
Points : 29 246
Salut,

et quand tu fais un pas à pas de ton code, que se passe-t-il ?
__________________
J'ai pas encore de décodeur, alors, postez en clair ! Comment mettre une balise de code ?
Débutez en VBA

Mes articles


Dans un MP, vous pouvez me dire que je suis beau, ... mais si c'est une question technique je ne la lis pas ! Vous êtes prévenus !
Heureux-oli est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 19/12/2011, 16h42   #3
Candidat au titre de Membre du Club
 
Homme
Inscription : novembre 2011
Messages : 60
Détails du profil
Informations personnelles :
Sexe : Homme

Informations forums :
Inscription : novembre 2011
Messages : 60
Points : 10
Points : 10
Bonjour olivier,

Merci de ta réponse,

En mode débogage pas à pas détaillé, je ne rencontre aucune erreur, l'icône de l'imprimante dans la barre des tâches apparait puis disparait et rien ne s'imprime.

Par contre si j’enlève les références à txtImpr aux lignes dans le code, comme ci-dessous, j'obtiens bien l'impression.

Code :
1
2
myStr = Me.txtPages + Me.txtImpr
Range:=wdPrintRangeOfPages, Pages:=myStr, Copies:=myStr
Je ne trouve vraiment pas d'où cela peut venir,
As tu une idée?

Merci
Thomas
tom0ne est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 19/12/2011, 20h02   #4
Responsable Word

 
Avatar de Heureux-oli
 
Homme Olivier Lebeau
Contrôleur d'industrie
Inscription : février 2006
Messages : 17 338
Détails du profil
Informations personnelles :
Nom : Homme Olivier Lebeau
Âge : 47
Localisation : Belgique

Informations professionnelles :
Activité : Contrôleur d'industrie
Secteur : Aéronautique - Marine - Espace - Armement

Informations forums :
Inscription : février 2006
Messages : 17 338
Points : 29 246
Points : 29 246
Salut,

Page est une chaîne
Dans ton code, il est considéré comme un nombre.

Pour concaténer deux chaînes entre-elles, on utilise l'opérateur & et pas +
__________________
J'ai pas encore de décodeur, alors, postez en clair ! Comment mettre une balise de code ?
Débutez en VBA

Mes articles


Dans un MP, vous pouvez me dire que je suis beau, ... mais si c'est une question technique je ne la lis pas ! Vous êtes prévenus !
Heureux-oli est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 19/12/2011, 20h47   #5
Candidat au titre de Membre du Club
 
Homme
Inscription : novembre 2011
Messages : 60
Détails du profil
Informations personnelles :
Sexe : Homme

Informations forums :
Inscription : novembre 2011
Messages : 60
Points : 10
Points : 10
Merci Oli,

J'ai bien changé le + en & mais ça n'imprime toujours pas ...

Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
Dim myStr As String
myStr = Me.txtPages & Me.txtImpr


If Me.OptionButton4 Then ActivePrinter = "HP Officejet Pro K550 Series"
If Me.OptionButton5 Then ActivePrinter = "Adobe PDF"
If Me.OptionButton1 Then Application.PrintOut Range:=wdPrintCurrentPage
If Me.OptionButton2 Then Application.PrintOut Range:=wdPrintAllDocument
If Me.OptionButton3 Then Application.PrintOut Range:=wdPrintRangeOfPages, Pages:=myStr, Copies:=myStr

Application.DisplayAlerts = wdAlertsAll
ActivePrinter = "HP Officejet Pro K550 Series"
Unload Me
 
End Sub
Je penses que ma ligne en rouge n'est pas correct dans le code ci-dessus mais je ne trouve pas ce que c'est.

Qu'en penses-tu?
tom0ne est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 20/12/2011, 07h12   #6
Responsable Word

 
Avatar de Heureux-oli
 
Homme Olivier Lebeau
Contrôleur d'industrie
Inscription : février 2006
Messages : 17 338
Détails du profil
Informations personnelles :
Nom : Homme Olivier Lebeau
Âge : 47
Localisation : Belgique

Informations professionnelles :
Activité : Contrôleur d'industrie
Secteur : Aéronautique - Marine - Espace - Armement

Informations forums :
Inscription : février 2006
Messages : 17 338
Points : 29 246
Points : 29 246
Salut,

Mais ça doit être une chaine.
__________________
J'ai pas encore de décodeur, alors, postez en clair ! Comment mettre une balise de code ?
Débutez en VBA

Mes articles


Dans un MP, vous pouvez me dire que je suis beau, ... mais si c'est une question technique je ne la lis pas ! Vous êtes prévenus !
Heureux-oli est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 20/12/2011, 12h19   #7
Candidat au titre de Membre du Club
 
Homme
Inscription : novembre 2011
Messages : 60
Détails du profil
Informations personnelles :
Sexe : Homme

Informations forums :
Inscription : novembre 2011
Messages : 60
Points : 10
Points : 10
Que penses-tu de ça :
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
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
 
Option Explicit
 
Private Sub ToggleButton3_Click()
Me.txtPages.Enabled = True
 
End Sub
 
Private Sub CommandButton1_Click()
 
 With ActiveDocument.Bookmarks
        .Add Range:=Selection.Range, Name:="Positioncurseur"
        .DefaultSorting = wdSortByName
        .ShowHidden = False
    End With
    Selection.WholeStory
    Selection.Range.HighlightColorIndex = wdNoHighlight
    Selection.GoTo What:=wdGoToBookmark, Name:="Positioncurseur"
    Selection.Find.ClearFormatting
    With Selection.Find
        .Text = ""
        .Replacement.Text = ""
        .Forward = True
        .Wrap = wdFindAsk
        .Format = False
        .MatchCase = False
        .MatchWholeWord = False
        .MatchWildcards = False
        .MatchSoundsLike = False
        .MatchAllWordForms = False
    End With
Application.DisplayAlerts = wdAlertsNone
Options.PrintBackground = False
Dim myStr As String
myStr = Me.txtPages
Dim myStr1 As String
myStr1 = Me.txtImpr
 
 
 
If Me.OptionButton4 Then ActivePrinter = "HP Officejet Pro K550 Series"
If Me.OptionButton5 Then ActivePrinter = "Adobe PDF"
If Me.OptionButton1 Then Application.PrintOut Range:=wdPrintCurrentPage, Copies:=myStr1
If Me.OptionButton2 Then Application.PrintOut Range:=wdPrintAllDocument, Copies:=myStr1
If Me.OptionButton3 Then Application.PrintOut Range:=wdPrintRangeOfPages, Pages:=myStr, Copies:=myStr1
 
 
Application.DisplayAlerts = wdAlertsAll
ActivePrinter = "HP Officejet Pro K550 Series"
Unload Me
 
End Sub
 
Private Sub UserForm_Activate()
Me.OptionButton3 = True
Me.txtPages.Enabled = True
Me.txtImpr.Enabled = True
Me.txtPages.SetFocus
 
End Sub
 
 
Private Sub UserForm_Click()
Debug.Print Me.OptionButton1.Value
 
 
End Sub
J'ai détourné le problème en créant :
Code :
1
2
Dim myStr1 As String
myStr1 = Me.txtImpr
Il y a surement mieux mais ça a l'air de fonctionner

Qu'en penses-tu?
@++
tom0ne est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 19h55.


 
 
 
 
Partenaires

Hébergement Web