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 09/11/2011, 23h14   #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 et alertes marges

Bonjour à tous,

Pour éviter les alertes de marges à chaque section et après avoir constaté que modifier les marges ne change rien hormis "mettre en vrac" mon document, j'utilise le script suivant :
Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
 Sub TurnOffAlertsAndPrint()
      ' Store current Background Printing setting.
      Dim x As Boolean
      x = Options.PrintBackground
      ' Turn off error messaging and Background Printing.
      Application.DisplayAlerts = wdAlertsNone
      Options.PrintBackground = False
      ' Print the active document.
      ActiveDocument.PrintOut
      ' Turn on error messaging and restore Background Printing
      ' to original setting.
      Application.DisplayAlerts = wdAlertsAll
      Options.PrintBackground = x
   End Sub
Malheureusement le script imprime tout le document.

Je souhaiterais que Word me demande quelles pages sont à imprimer :
- toutes
- pages 1 sur 5
- page 1;2;3;4

Malgré toute ma bonne volonté, je ne trouve pas de solution adéquate.

Quelqu'un pourrait-il m'aider?

Merci
Thomas
tom0ne est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 10/11/2011, 08h11   #2
Responsable Word

 
Avatar de Heureux-oli
 
Homme Olivier Lebeau
Contrôleur d'industrie
Inscription : février 2006
Messages : 17 333
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 333
Points : 29 239
Points : 29 239
Salut,


C'est normal, si tu ne passes pas d'argument à la méthode .PrintOut, toutes les pages sont imprimées.

Tu peux passer le paramètre Pages.

La valeur de ce paramètre est un String
Code :
1
2
 
ActiveDocument.PrintOut Page:="1, 3-5"
__________________
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 20
Vieux 11/11/2011, 02h07   #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
Merci pour ta réponse Heureux-Oli,
En fait, je n'ai pas précisé que je n'imprime jamais les même pages du document.

Ta solution marche très bien mais je dois modifier les pages à imprimer à chaque impression et en ouvrant le script chaque fois.
D'où mon souhait de créer un invite de commande dans le script.

Mais là c'est peut être trop en demander à word

Bon week end
Thomas
tom0ne est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 11/11/2011, 08h48   #4
Responsable Word

 
Avatar de Heureux-oli
 
Homme Olivier Lebeau
Contrôleur d'industrie
Inscription : février 2006
Messages : 17 333
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 333
Points : 29 239
Points : 29 239
Salut,

Ça, j'avais compris.

Les pages que je donne sont juste un exemple.
C'est à toi de gérer les pages souhaitées avec un UserForm ou un InputBox.
Et on passe le résultat en argument.
__________________
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 11/11/2011, 13h30   #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 de ta réponse,

Je viens d'essayer dans Visual Basic de créer un userForm,
Niveau esthétique c'est pas mal,
par contre niveau code c'est pas gagné.

Là, j'ai vraiment besoin d'aide pour associer l'userForm à la macro et fermer automatiquement l'userForm après avoir appuyer sur "Imprimer"

http://www.hostingpics.net/viewer.ph...13Image000.png

Si il y en a qui travaillent le 11 novembre...
exemple bien venu

bon week end,

Thomas
Fichiers attachés
Type de fichier : rar USERFORM.rar (1,2 Ko, 2 affichages)
tom0ne est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 11/11/2011, 14h44   #6
Responsable Word

 
Avatar de Heureux-oli
 
Homme Olivier Lebeau
Contrôleur d'industrie
Inscription : février 2006
Messages : 17 333
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 333
Points : 29 239
Points : 29 239
Salut,

Avec ton UserForm, tu proposes trois choix.

Tout, En cours ou Certaines pages.

La première chose est donc une procédure décisionnelle.

Pour éviter un choix multiple, je pense que tu devrais avoir trois cases à cocher et un effet bouton radio sur ces trois cases.
En fonction du choix, on passe l'un ou l'autre paramètre.
__________________
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 11/11/2011, 14h55   #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
Merci Heureux Oli,

Je comprend ce que tu veux dire :
lorsque je coche une case à cocher ça validerat le bouton radio.

Par contre, aurais tu un exemple car je ne suis pas capable de réaliser ces associations.

J'ai déjà mis la matinée pour créer le formulaire

Si je savais par quel bout l'attraper... lol

Merci
tom0ne est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 11/11/2011, 18h41   #8
Responsable Word

 
Avatar de Heureux-oli
 
Homme Olivier Lebeau
Contrôleur d'industrie
Inscription : février 2006
Messages : 17 333
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 333
Points : 29 239
Points : 29 239
Salut,

Ça devrait ressembler à ça.
Fichiers attachés
Type de fichier : zip UF Print.zip (10,1 Ko, 3 affichages)
__________________
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 10
Vieux 11/11/2011, 23h00   #9
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 beaucoup pour ton exemple Heureux Oli,

J'ai appris plein de chose avec ton code.

J’espère que tous les "forumeur" ne sont pas tous aussi débutant que moi.

Deux points encore :

La macro suivante ouvre bien l' UserForm mais n'imprime pas.

Code :
1
2
3
4
Sub USERFORMPRINT()
UserForm4.Show
 
End Sub
J'ai constaté aussi qu’après la validation de "OK" l'UserForm ne se ferme pas tout seul.

Alors j'ai tenté des manipulations diverses,
Ne te moque pas svp

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
Option Explicit
 
Private Sub ToggleButton3_Click()
Me.txtPages.Enabled = True
 
End Sub
 
Private Sub CommandButton1_Click()
If Me.OptionButton1 Then MsgBox "Page en cours"
If Me.OptionButton2 Then MsgBox "Toutes les pages"
If Me.OptionButton3 Then MsgBox Me.txtPages
 
End Sub
 
 
Private Sub OptionButton3_Click()
Me.txtPages.Enabled = True
 
End Sub
 
Private Sub UserForm_Click()
 Debug.Print Me.OptionButton1.Value
 Dim x As Boolean
      x = Options.PrintBackground
      ' Turn off error messaging and Background Printing.
      Application.DisplayAlerts = wdAlertsNone
      Options.PrintBackground = False
      ' Print the active document.
      Application.PrintOut FileName:="", Range:=wdPrintCurrentPage, Item:= _
        wdPrintDocumentContent, Copies:=1, Pages:="", PageType:=wdPrintAllPages, _
        ManualDuplexPrint:=False, Collate:=True, Background:=True, PrintToFile:= _
        False, PrintZoomColumn:=0, PrintZoomRow:=0, PrintZoomPaperWidth:=0, _
        PrintZoomPaperHeight:=0
      ' Turn on error messaging and restore Background Printing
      ' to original setting.
      Application.DisplayAlerts = wdAlertsAll
      Options.PrintBackground = x
   Wend
 
rs.Close
Set rs = Nothing
Set db = Nothing
 
 
End Sub
Si tu pouvais m'aider encore pour en finir,

Merci,
et re merci pour répondre un 11 novembre, 11/11/11
tom0ne est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 11/11/2011, 23h13   #10
Responsable Word

 
Avatar de Heureux-oli
 
Homme Olivier Lebeau
Contrôleur d'industrie
Inscription : février 2006
Messages : 17 333
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 333
Points : 29 239
Points : 29 239
Salut,

Pour un UserForm, il y a plein de choses possibles.

La première est d'y mettre des contrôles, par contrôles, on entend des zones de texte, des cases à cocher, des boutons, ...
Chaque objet déposé sur un userform réagit à des évènements comme le clic, le double-clic, ...

Dans le code on sait qu'il s'agit d'un évènement lorsque le nom du contrôle est suivi d'un évènement.

Code :
Public Sub MonBonton_Clic()
va être appelé lorsque je vais cliquer sur mon bouton

Si je met

Code :
Private Sub UserForm_Click()
Mon code sera exécuté lorsque je vais cliquer sur mon UserForm.
Mais pas sur un controle comme mon bouton.

Dans le code que j'avais mis dans le UserForm, on obtiens le résultat des boutons d'options en cliquant sur le bouton.

Code :
1
2
3
4
5
6
Private Sub CommandButton1_Click()
If Me.OptionButton1 Then MsgBox "Page en cours"
If Me.OptionButton2 Then MsgBox "Toutes les pages"
If Me.OptionButton3 Then MsgBox Me.txtPages
 
End Sub
C'est là que tu dois lancer ton code pour l'impression.
__________________
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 10
Vieux 12/11/2011, 00h29   #11
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
Le 11 novembre et de nuit !
Nous sommes au moins 2 ce soir devant un ordi.

En voilà un bout :

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
ption Explicit
 
Private Sub ToggleButton3_Click()
Me.txtPages.Enabled = True
 
End Sub
 
Private Sub CommandButton1_Click()
If Me.OptionButton1 Then
Dim x As Boolean
      x = Options.PrintBackground
      ' Turn off error messaging and Background Printing.
      Application.DisplayAlerts = wdAlertsNone
      Options.PrintBackground = False
      ' Print the active document.
      Application.PrintOut FileName:="", Range:=wdPrintCurrentPage, Item:= _
        wdPrintDocumentContent, Copies:=1, Pages:="", PageType:=wdPrintAllPages, _
        ManualDuplexPrint:=False, Collate:=True, Background:=True, PrintToFile:= _
        False, PrintZoomColumn:=0, PrintZoomRow:=0, PrintZoomPaperWidth:=0, _
        PrintZoomPaperHeight:=0
      ' Turn on error messaging and restore Background Printing
      ' to original setting.
      Application.DisplayAlerts = wdAlertsAll
 
End If
If Me.OptionButton2 Then
        x = Options.PrintBackground
      ' Turn off error messaging and Background Printing.
      Application.DisplayAlerts = wdAlertsNone
      Options.PrintBackground = False
      ' Print the active document.
       Application.PrintOut FileName:="", Range:=wdPrintAllDocument, Item:= _
        wdPrintDocumentContent, Copies:=1, Pages:="", PageType:=wdPrintAllPages, _
        ManualDuplexPrint:=False, Collate:=True, Background:=False, PrintToFile:= _
        False, PrintZoomColumn:=0, PrintZoomRow:=0, PrintZoomPaperWidth:=0, _
        PrintZoomPaperHeight:=0
      ' Turn on error messaging and restore Background Printing
      ' to original setting.
      Application.DisplayAlerts = wdAlertsAll
 
End If
 
End Sub
Reste le plus compliqué,
Récupérer la variable...
tom0ne est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 12/11/2011, 01h29   #12
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
Bon je cale !

Pour l'option 3 je comprend le principe mais je ne trouve pas la bonne syntaxe :

Code :
1
2
3
4
5
Application.PrintOut FileName:="", Range:=wdPrintAllDocument, Item:= _
        wdPrintDocumentContent, Copies:=1, Pages:=txtPages, PageType:=wdPrintAllPages, _
        ManualDuplexPrint:=False, Collate:=True, Background:=False, PrintToFile:= _
        False, PrintZoomColumn:=0, PrintZoomRow:=0, PrintZoomPaperWidth:=0, _
        PrintZoomPaperHeight:=0
tom0ne est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 12/11/2011, 11h50   #13
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
Je ne trouve vraiment pas, quelqu'un a une idée?
Merci
Thomas
tom0ne est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 12/11/2011, 12h42   #14
Responsable Word

 
Avatar de Heureux-oli
 
Homme Olivier Lebeau
Contrôleur d'industrie
Inscription : février 2006
Messages : 17 333
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 333
Points : 29 239
Points : 29 239
Salut,

Pas besoin de répéter tout le code à chaque fois.

Voilà à quoi devrait ressembler ton code :

Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
 
Private Sub CommandButton1_Click()
      ' Turn off error messaging and Background Printing.
      Application.DisplayAlerts = wdAlertsNone
      Options.PrintBackground = False
 
If Me.OptionButton1 Then
      ' Print the active document.
    Application.PrintOut Range:=wdPrintCurrentPage
 
End If
If Me.OptionButton2 Then
      ' Print the active document.
    Application.PrintOut Range:=wdPrintAllDocument
 
End If
If Me.optionbutton3 Then
    Application.PrintOut Pages:=Me.txtPages
 
End If
Application.DisplayAlerts = wdAlertsAll
 
End Sub
__________________
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 10
Vieux 12/11/2011, 15h07   #15
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
Salut voisin européen,

Je rêverai d'aller à Bruges, c'est parait-il superbe.
Peut-être à noël... j'espère,

Pour le code,
Je te remercie du temps que tu me consacre et de l'aide que tu m'apporte,
C'est extrêmement gentil de ta part.

Lorsque je lance le script, j'ai une erreur sur l'option 3 :
"erreur d'execution '13'
incompatibilité de type
Si je clic sur débogage : "Application.PrintOut Pages:=Me.txtPages" est surligné en jaune.

Par ailleurs, j'ai testé, dans les propriété du "OptionButton3" de mettre value "true" pour que la case soit cochée par défault.

Malheureusement ça bloque la case du dessous : "pages"

Enfin, y a t il un moyen pour que l'user Form se ferme tout seul aprés avoir cliqué sur OK "CommandButton1" ?

Merci,

Bon aprés midi,

Thomas
tom0ne est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 12/11/2011, 21h59   #16
Responsable Word

 
Avatar de Heureux-oli
 
Homme Olivier Lebeau
Contrôleur d'industrie
Inscription : février 2006
Messages : 17 333
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 333
Points : 29 239
Points : 29 239
Salut,

Incompatibilité, c'est que la valeur contenue dans le contrôle n'est pas interprétée comme du texte.

Il faut donc convertir la valeur en text.
Une solution serait de concaténer un " devant et derrière.

Code :
Chr(34) & Me.txtPages & Chr(34)
__________________
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 10
Vieux 13/11/2011, 03h53   #17
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
Salut Heureux,

Désolé mais ça ne marche toujours pas, ça imprime le document en entier
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
Option Explicit
 
Private Sub ToggleButton3_Click()
Me.txtPages.Enabled = True
 
End Sub
 
Private Sub CommandButton1_Click()
      ' Turn off error messaging and Background Printing.
      Application.DisplayAlerts = wdAlertsNone
      Options.PrintBackground = False
 
If Me.OptionButton1 Then
      ' Print the active document.
    Application.PrintOut Range:=wdPrintCurrentPage
 
End If
If Me.OptionButton2 Then
      ' Print the active document.
    Application.PrintOut Range:=wdPrintAllDocument
 
End If
If Me.OptionButton3 Then
    Application.PrintOut Pages:=Chr(34) & Me.txtPages & Chr(34)
 
End If
Application.DisplayAlerts = wdAlertsAll
 
 
End Sub
 
Private Sub OptionButton1_Click()
 
End Sub
 
Private Sub OptionButton3_Click()
Me.txtPages.Enabled = True
End Sub
 
Private Sub UserForm_Click()
Debug.Print Me.OptionButton1.Value
 
 
End Sub
c'est quoi ce 34?
Merci
tom0ne est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 13/11/2011, 09h47   #18
Responsable Word

 
Avatar de Heureux-oli
 
Homme Olivier Lebeau
Contrôleur d'industrie
Inscription : février 2006
Messages : 17 333
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 333
Points : 29 239
Points : 29 239
Salut,

Ce 34 est pour avoir un " qui est interprété par le code comme l'ouverture d'une valeur de type chaîne ou string.

sera un texte avec trois caractères 2, 5 et 6

Alors que

on aura au contraire un nombre.

Pour le code que j'ai donné, il manque un argument et pour contrer l'incompatibilité de type, je passe par une variable texte.

Code :
1
2
3
4
5
6
7
8
9
10
Private Sub CommandButton1_Click()
Dim myStr As String
myStr = Me.txtpages
 
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
 
 
End Sub
__________________
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 10
Vieux 13/11/2011, 22h20   #19
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
Génial !
Merci beaucoup,

C'est trop passionnant !

Écris tu des livres spécialisés en VBA pour apprendre les bases?

Ou en connais tu un de bien écrit pour partir de zéro?

Pour le code :
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
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
 
 
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
Application.DisplayAlerts = wdAlertsAll
Unload Me
 
End Sub
Il fonctionne très bien mais je souhaiterais le faire évoluer un peu plus :

Je souhaiterais que l'optionbutton3 soit activé par défaut et que le curseur soit automatiquement placé dans le "txtPages"

Est-ce possible?

Merci,
Thomas

ps : J'aime bien comment tu m'aide,
Tu ne me donne pas la réponse "toute faite", ça me fait apprendre et réfléchir, c'est top,
Félicitation !

re ps : tu as vu? j'ai trouvé tout seul le fonction "unload me" et comment créer un signet, tout sélectionner, enlever le surlignage puis revenir au signet !!
tom0ne est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 13/11/2011, 23h14   #20
Responsable Word

 
Avatar de Heureux-oli
 
Homme Olivier Lebeau
Contrôleur d'industrie
Inscription : février 2006
Messages : 17 333
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 333
Points : 29 239
Points : 29 239
Salut,

Pour que l'OptionBouton3 soit actif par défaut, il faut simplement mettre sa valeur par défaut à True dans les propriétés.

Pour que le curseur soit dans la case txtPages, il suffit lors du chargement du formulaire de mettre dans le code Me.txtPages.SetFocus

Code :
1
2
3
4
 
Private Sub UserForm_Activate()
Me.txtPages.SetFocus
End Sub
Non, je n'écris pas de livre.

Mais sur la rubrique Word, les rubriques Office et sur mon espace Perso, tu trouveras des tutos sur le VBA.
__________________
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 10
Réponse Proposer ce sujet en actualité
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 06h23.


 
 
 
 
Partenaires

Hébergement Web