Application.Dialogs(XlDialogPrint

  • Initiateur de la discussion Evelynetfrancois
  • Date de début
E

Evelynetfrancois

Guest
bonjour tous le monde


Private Sub Imprimer_Magasins_NB()
retour = MsgBox("Voulez-vous imprimer BLA BLA BLA en NOIR et BLANC ? ", 4 + vbInformation, " Impression - ")
If retour = vbYes Then
Application.ScreenUpdating = False
For Each Feuille In Sheets
If Feuille.Range("A1").Value = "Z" Then
With Feuille.PageSetup
.BlackAndWhite = True
End With
Feuille.PrintOut
End If
Next
End If
End Sub

Bonjour , cette macro me permait d'imprimer en N et B les feuilles contenent "Z" en celulle ("A1")..

Pour imprimer en niveau de gris je passerais bien par la boite :
Application.Dialogs(XlDialogPrint).Show !!!(merci Eric C)

seulement cette boite apparait a chaques feuilles trouvées !!!!!!!
auriez-vous une idées judicieuse !!
merci pour votre secours

merci d'avance pour le temp que vous me consacrez , bonne a prem
E et f
 
E

EricS

Guest
Bonjour,

il y a peut-être des choses à faire avec sendkeys

exemple :

SendKeys "^p " & nbcopies & "{enter}", -1

envoie le code "ctrl p", le nombre de copies et lance l'impression

regarde sous VBA : Sendkeys, instruction

A+
Eric
 
E

Evelynetfrancois

Guest
non Eric ca ne corespond pas a mon attente
MERCI pour tout ...........
mon probleme est que je souhaite imprimer en niveau de gris
mais apparemment il n'y a pas de soluce en vba
je continu a chercher !!!!!!!!!!
bonne soirée a toi
E et F
 
E

EricS

Guest
RE

Peux-tu m'expliquer ce que cela donnerait en le faisant à la main ?

Je suppose que pour chaque feuille, tu fais fichier imprimer

et ensuite ? tu définis le mode de fonctionnement de ton imprimante?..

je reviens à l'utilisation de sendkeys :

en manuel pour imprimer il faut fichier-imprimer (ctrl p), et peut être aller dans les propriétés de l'imprimante (alt r) et peut-être................(à compléter par tes soins

ce qui donne :

For each.....
If Feuille
SendKeys "^p %r ........", -1
End if
next

tu peux tout envoyer comme cela (où alors tu n'es pas sous excel)

essaie la ligne senkeys sur un petit programme, elle doit t'amener sur la fenêtre propriété de l'imprimante



A+
Eric
 
E

Evelynetfrancois

Guest
bonjour Eris$

Effectivement SendKeys "^p %r ........", -1 s’occupe admirablement bien de la boite de dial
Mais si je mets cette instruction au dessus de

For Each Feuille In Sheets
If Feuille.Range("A1").Value = "R" Then

La boite sort et ne considère (mets en niveaux de gris ) que la première feuilles trouvée !!
Les autres s’impriment en couleur!!!!!!!!!!!!
Et si je mets l’instruction après If Feuille.Range("A1").Value = "R" Then
Comme ceci
For Each Feuille In Sheets
If Feuille.Range("A1").Value = "R" Then
SendKeys "^p %r ........", -1
La boite sort à chaque feuille trouvée , soit 45 fois !!!!

C’est là que se trouve mon problème !!!!
Comment faire sortir la boite une fois pour toutes les feuilles trouvées !!! (45)
Ou comment imprimer toutes ces feuilles en niveaux de gris (pas N et Blanc, ça la macro actuelle le fait !!!!)

En tout cas MERCI trés sincèrement pour le temps que tu me consacres
A bientôt
E et F
 
E

EricS

Guest
RE

si tu écris

For Each Feuille In Sheets
If Feuille.Range("A1").Value = "R" Then
SendKeys "^p %r ........", -1

je pense que tu n'es pas loin de la solution car en fait je pense que tu automatise la sélection de tous tes paramètres, la boite apparaît et tu fais "entrée" pour valider ton impression.

Tu n'as as besoin de faire apparaître cette boite si tu as positionné tous les paramètres imprimante, en ce cas ajoute ton code "entrée" à la fin de la ligne

SendKeys "^p %r ........{enter}", -1

l'impression se lancera toute seule à chaque feuille


Une autre piste serait de sélectionner toutes tes feuilles avant de lancer l'impression. Dans le code ci-dessous la ligne débutant par une flèche génère une erreur mais là je dois partir et je me repencherai dessus sans doute demain. Si tu as une idée entre temps tiens-moi au courant


zone = ""
For Each Feuille In Sheets
If Feuille.Range("A1").Value = "Z" Then
If zone <> "" Then zone = zone & """, """
zone = zone & Feuille.Name
End If
Next Feuille
If zone = "" Then Exit Sub

----->>>> Sheets(Array(zone)).Select

sendkeys.........................


A+
Eric
 
E

Evelynetfrancois

Guest
bonjour EricS


Ca y est , tu m'as trés trés largement ouvert la voie !!
j'utilse deux fois TON 'instruction Senkeys , (commentaires ci dessous à l appui )


SendKeys "^p %r ", -1 'lance donc la boite dans laquelle je peux mettre les parametres desirés...................

For Each Feuille In Sheets
If Feuille.Range("A1").Value = "R" Then ' sélectionne les feuilles contenent "R" en A1
SendKeys "^p{enter}", -1 'fait "ENTER" sur chaqunes de ces feuils AVEC les parametres definis plus haut , un bonheur!!!!!!!


__________________________________________________________________________________________
'With Feuille.PageSetup 'suprimé de la macro initiale ( lancait l'impression en N et B )
'.BlackAndWhite = True 'suprimé
'Feuille.PrintOut 'suprimé
'.BlackAndWhite = False 'suprimé ( retablissait la couleur en suite)
'End With 'suprimé
__________________________________________________________________________________________

End If
Next
End If
End Sub

je te remercie beaucoup de m'avoir pris en charge
bon dimanche à toi à bientot avec plaisir
MERCI !!

D'autre part pourrais-tu m'expliquer l'utilité (la fonction)du - 1
SendKeys "^p{enter}", -1
merci d'avance
E et F
 
E

EricS

Guest
Je vois que la semaine s'est bien finie.

Je n'ai pas trouvé de solution pour la piste que je te proposais, je vais poser la question sur le forum parce que je pense que cette solution serait "élégante" (sélectionner les feuilles à imprimer et lancer imprimer feuilles sélectionnées) Si tu veux suivre la réponse, l'intitulé sera "sélectionner plusieurs feuilles pour impression"

En ce qui concerne le -1 à la fin de sendkeys, il correspond à TRUE pour l'option WAIT de sendkeys. Dans ce cas, la main est rendus à la macro après exécution du traitement des touches. Cela ne ralentit pas vraiment l'exécution dans la plupart des cas mais on s'assure par là que l'action est finie avant de faire les actions ou modifications qui suivent (imagine que tu lances une impression et que juste dan sla foulée tu changes le contenu d'une feuille, si tu n'attends pas que vas-tu imprimer, la première ou la seconde valeur)

A+
Eric
 
E

evelynetfrancois

Guest
bonjour Eric$

bon c'est pas si simple
comme je suis sur un portable non relié a une imprimante
je me suis donc un peu ( voir largement )avancé en disant que ca fonctionnait , j'y ai cru sincerement !!!!
j'avais effectivement des docs a imprimer dans la boite !!!
mais une fois relier a une imprimante , le resultat fut decevant
: que des feuilles blanches !!!!!!!!!!!!!!!
et depuis je retourne le probleme dans tous les sens !!!
je fais les essais sur un fichier extra ligth que je joins pour essais eventuelles

alors c'est peut etre sur ta deuxieme soluce qu'il faut que je me penche
a bientot
E et F
 

Pièces jointes

  • IMPRESSIONIVEAUDEGRIS.zip
    17.5 KB · Affichages: 58
E

EricS

Guest
Bonjour,

je regarde ton pb mais déjà, je pense déjà que ton code n'est pas suffisant quand tu utilises sendkeys

j'aimerais que tu fasse l'opération à la main (même pas à la souris), cela nous permettrait à tous les 2 de comprendre les enchaînements à respecter

La démarche :

tu te mets sur ta feuil13 et pour configurer ton impression, tu tapes les codes les uns après les autres. Yu auras sans doute plusieurs essais à faire

je commence :

ctrl p ouverture boite impression
alt r passage à la boite propriété
.....à toi de compléter selon ton imprimante, note les enchainements de flèches, entrée, tab, ctrl tab, valeurs.

Si cela se fait à la main, cela s'automatise

De mon côté je continue à regarder

A part cela je dois avoir reçu une réponse à mon fil "sélectionner plusieurs feuilles pour impression", je ne l'ai pas encore regardé (tiscali a buggé hier) mais tu peux y jeter un oeil

A+
 
E

EricS

Guest
RE

en parallèle de ta recherche de séquence essaie :

Private Sub CommandButton1_Click()
retour = MsgBox("Voulez-vous imprimer ", 4 + vbInformation, " Impression ")
If retour = vbYes Then
Application.ScreenUpdating = False
For Each Feuille In Sheets
If Feuille.Range("A1").Value = "A" Then
Feuille.Select
' ligne suivante à améliorer après recherche des séquences de code
SendKeys "^p{enter}", -1
'
End If
Next
Sheets(1).Select
Application.ScreenUpdating = True
End If
End Sub

A+
 
E

Evelynetfrancois

Guest
bonjour Eric$ .......... toujours là !
j'ai fait une compile de la macro de zon et de la tienne pour arriver a un resultat qui n'a pas l'air mal du tout
cependand ici a mon bureau , il n'y a qu'une imprimante N et blanc .......
mais je pense que les parametres que je mettrais avec ::SendKeys "^p %r", -1 (c'est a dire imprimer en niveaux de gris )
seront bien pris en compte pour toutes les feuilles ( qui sont bien mises de cote avant d'etre imprimées !!!)

je te tiens au courant quoiqu'il en soit !!!!!!!!!
Encore merci pour tout !
a bientot

Evelynetfrancois



Private Sub CommandButton3_Click()
Dim zone(), I&
retour = MsgBox("Voulez-vous imprimer ", 4 + vbInformation, " Impression ")
If retour = vbYes Then
For Each feuille In Sheets
If feuille.Range("A1").Value = "A" Then
ReDim Preserve zone(I)
zone(I) = feuille.Name
I = I + 1
End If
Next feuille
If I > 0 Then
SendKeys "^p %r", -1
Sheets(zone).PrintOut
End If
Application.ScreenUpdating = True
End If
End Sub
 
E

Evelynetfrancois

Guest
re bonjours Eric$
apres quelques tests................

bon cette macro selectionne bien les feuilles avec un A en cell A1
mais en plus selectionne egalement la feuille active (dans mon cas present c'est la feuil 13 , celle ou sont les buttons et pourtant depourvu de A en cell A1 ???? )

ensuite la boite print arrive bien
mais seule la feuille active est prise en compte par les parametres de la fenetre print (niveau de gris demandé !)

les autres feuilles trouvées restent quand a elles en couleurs

allez je cherche encore !!!!!!!!!
a bientot
Evelynetfrancois
 
E

EricS

Guest
Bonjour,

je me répète mais fais une séquence à la main en étant connecté à ton imprimante et en n'utilisant que le clavier, pour imprimer 2 pages par exemple (pas de test de "A", juste feuil1 et feuil3), nous pourrons traduire en code après car lorsque tu écris

SendKeys "^p %r", -1 tu dois faire (vérifie le à la main)

ctrl p suivi de alt r, c'est tout donc entre autre tu verras que tu n emodifie aucun paramètre d'impression. C'est ce qui v aapparaître sur tes différentes boites de dialogue après qui est intéressant

A+
 
E

Evelynetfrancois

Guest
bonjour Eric$

Je comprend tres bien ce que tu me demandes de faire .
Voici la suite d'action à la main ! ............ commentés

^P : lance la boite
%R : lance les propriétés de cette boite
^(TAB 4) : Control TAB , 4 fois (vers le bas ) pour aller à l'onglet souhaité
(TAB) : 1 fois ( TAB )vers le bas pour sélectionner le niveau de gris
(ENTER 2) : 1 fois pour valider les paramètres 1 seconde fois pour valider le tout .

Mais pour le moment ca ne prends en compte que la feuille Active à l'ecran
qui est effectivement imprimer en niveaux de gris .

les autres feuilles suivent (donc sont bien sélectionnées )mais sortent en couleurs !!!

à bientot et encore merci !!!!!
evelynetfrancois
 

Membres actuellement en ligne

Statistiques des forums

Discussions
312 922
Messages
2 093 644
Membres
105 775
dernier inscrit
assen