changer l'imprimante par défaut d'un usf

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

civodul

XLDnaute Nouveau
Bonjour ,

j'aimerais changer l'imprimante par défaut pour imprimer un userform.
j'utilise la fonction ' Application.ActivePrinter = ' mais cela ne change pas l'imprimante par défaut.
Même si j'utilise la fonction 'Application.Dialogs(xlDialogPrinterSetup).Show = True' pour changer l'imprimante , l'impression s'effectue sur l'imprimante par défaut.

Merci
 
Re : changer l'imprimante par défaut d'un usf

Bonjour Civodul, Roland

comprends pas trop.... chez moi l'utilisation de la propriété "ActivePrinter" fonctionne (Excel2003). Le code ci-dessous, placé dans le module de l'usf, rattaché à l'événement click d'un bouton, modifie bien l'imprimante et m'imprime l'USF sur la nouvelle imprimante.

Code:
Private Sub CommandButton1_Click()
    Application.ActivePrinter = "\\monréseau\nom imprimante sur Nexx:"
    Me.PrintForm
End Sub

bon après midi
@+
 
Re : changer l'imprimante par défaut d'un usf

Bonjour,

Cette fonction a attiré mon attention, j'ai inséré dans mon code:
Application.Dialogs(xlDialogPrint).Show
Comme suit:

Sub ImpressionDotation_Click()
Sheets("Dotation").Unprotect
Application.Dialogs(xlDialogPrint).Show
Sheets("Dotation").PrintOut Copies:=3
Sheets("Dotation").Range("B4,B6,B10:B12,D4").ClearContents
Sheets("Dotation").Protect
Application.ScreenUpdating = False
End Sub

La boîte de dialogue apparait, mais si je décide d'annuler l'impression, le document s'imprime quand même sur l'imprimante qui avait été proposée par défaut

Bizarre non ??

Merci.
 
Re : changer l'imprimante par défaut d'un usf

re:

à degap05: voir comme ceci et dans cet ordre !

Sub ImpressionDotation_Click()
Sheets("Dotation").Unprotect
Sheets("Dotation").Range("B4,B6,B10:B12,D4").Clear Contents
Application.Dialogs(xlDialogPrint).Show '<<<<< là tu auras le choix !?
Sheets("Dotation").Protect
Application.ScreenUpdating = False
End Sub
 
Re : changer l'imprimante par défaut d'un usf

re:

à toutes fins utiles...
petits exemples que le peut toujours affiner en rajoutant des paramètres perso !?

Code:
Sub ImpressionApercu() 'ceci ouvre direct aperçu pour imprime
ActiveSheet.PageSetup.PrintArea = [A1].CurrentRegion.Address
ActiveWindow.SelectedSheets.PrintPreview
End Sub

Sub ImpressionLPT() 'ceci ouvre la boite de dialog imprimante
Feuil$ = "Feuil1" '<<<<<< nom de la feuille
Rang$ = "A1:B10"
LPTZoneImpression$ = Sheets(Feuil$).Range(Rang$) '<<<<<< range de données
LPTOrientationPage = xlPortrait '<<<<<< ou xlLandscape (paysage)
LPTSautDePage = 0 '<<<<<< ou 1 pour autorisation des sauts pages
MsgEntete$ = "bonjour" '<<<<<< voir avec message en entête ou pas =""
' init...
InitImprimante Feuil$, MsgEntete$, LPTZoneImpression$, LPTOrientationPage, LPTSautDePage
' boite de dialogue...
Application.Dialogs(xlDialogPrint).Show
End Sub

Sub InitImprimante(Feuil$, MsgEntete$, LPTZoneImpression$, LPTOrientationPage, LPTSautDePage)
EspacH = 0: If MsgEntete$ > "" Then EspacH = 1
With Sheets(Feuil$).PageSetup
    .Zoom = False 'pas true sinon FitToPagesTall invalide
  If LPTSautDePage Then
    .FitToPagesTall = False 'permet le saut de page si trop haut
  Else
    .FitToPagesTall = 1 'impose sur la hauteur de la page
  End If
    .FitToPagesWide = 1 'impose sur la largeur de la page(toujours)
    .Orientation = LPTOrientationPage
    .CenterHorizontally = False
    .CenterVertically = False
    If LPTZoneImpression$ > "" Then .PrintArea = LPTZoneImpression$ 'sinon page entière
    .LeftHeader = MsgEntete$
    .CenterHeader = ""
    .RightHeader = ""
    .LeftFooter = ""
    .CenterFooter = ""
    .RightFooter = ""
    .TopMargin = Application.CentimetersToPoints(EspacH)
    .LeftMargin = Application.InchesToPoints(0)
    .RightMargin = Application.InchesToPoints(0)
    .HeaderMargin = Application.InchesToPoints(0)
    .BottomMargin = Application.InchesToPoints(0)
    .FooterMargin = Application.InchesToPoints(0)
End With
End Sub
 
Dernière édition:
Re : changer l'imprimante par défaut d'un usf

Bonjour

Bonjour,

Cette fonction a attiré mon attention, j'ai inséré dans mon code:
Application.Dialogs(xlDialogPrint).Show
Comme suit:

Sub ImpressionDotation_Click()
Sheets("Dotation").Unprotect
Application.Dialogs(xlDialogPrint).Show
Sheets("Dotation").PrintOut Copies:=3
Sheets("Dotation").Range("B4,B6,B10:B12,D4").ClearContents
Sheets("Dotation").Protect
Application.ScreenUpdating = False
End Sub

La boîte de dialogue apparait, mais si je décide d'annuler l'impression, le document s'imprime quand même sur l'imprimante qui avait été proposée par défaut

Bizarre non ??

Merci.

Aide VBA
Utilisation de l'objet Dialog
Pour renvoyer un seul objet Dialog, utilisez Dialogs(index), où index est une constante intégrée identifiant la boîte de dialogue. L'exemple suivant montre comment ouvrir la boîte de dialogue Ouvrir (menu Fichier). La méthode Show renvoie la valeur True si Microsoft Excel parvient à ouvrir le fichier et False si l'utilisateur annule la boîte de dialogue.

dlgAnswer = Application.Dialogs(xlDialogOpen).Show

Si on applique cette idée à Application.Dialogs(xlDialogPrint).Show on obtient toujours
"False" quelque soit le bouton utilisé.

Ce qui peut surprendre de prime abord mais en fait la boite de dialogue sert à imprimer, quand on change d'imprimante le nom du bouton change. Le compte rendu n'est pas nécessaire.

Pour résoudre le problème il faudrait récupérer le nom de l'imprimante au début et vérifier si si le nom a changé à la sortie de la boite de dialogue.


JP
 
Dernière édition:
Re : changer l'imprimante par défaut d'un usf

Bonsoir JP14,

"Pour résoudre le problème il faudrait récupérer le nom de l'imprimante au début et vérifier si si le nom à changé à la sortie de la boite de dialogue."

Est-ce que ta solution serait compatible avec un accès au fichier (stocké sur un disque en réseau) contenant la macro, à partir de postes différents, eux mêmes connectés au réseau ?

Merci.
 
Re : changer l'imprimante par défaut d'un usf

Bonjour

En utilisant l'éditeur de macro on peut récupérer le nom des imprimantes
Le code ci-dessous permet de changer l'imprimante sur le PC

imprimante = Application.ActivePrinter
If imprimante = "HP DeskJet sur LPT1:" Then
Application.ActivePrinter = "Visage eXPert PDF sur VSP1:"
End If
A près l'impression on peut donc rétablir l'ancienne imprimante.

JP
 
- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD

Discussions similaires

  • Question Question
XL 2019 User Form
Réponses
9
Affichages
414
Réponses
4
Affichages
415
  • Question Question
Microsoft 365 affichage userform
Réponses
4
Affichages
465
Retour