Imprimer depuis un module VBA

Résolu/Fermé
Mistral_13200 Messages postés 636 Date d'inscription mardi 5 août 2008 Statut Membre Dernière intervention 15 novembre 2024 - 28 févr. 2011 à 09:23
 Oz - 5 déc. 2013 à 15:15
Bonjour,
Bonjour à tous,
J'ai créé un classeur Excel dans lequel j'ai un module Vba pour l'impression. Ce classeur est à la disposition de plusieurs dizaines d'utilisateurs. Il fonctionne très bien et il est apprécié de tous. Cependant on me demande de l'améliorer en permettant de choisir l'imprimante (dans le cas ou plusieurs imprimantes sont reliées à l'ordinateur) ou de choisir la qualité d'impression. Pour cela je souhaiterais que dans ma macro impression ci-dessous faire appel et afficher la boîte de dialogue «Imprimer» mais je n'y parviens pas !

Sub ImpressionTableau()
    Dim p As Integer
    'Application.ScreenUpdating = False                  ' Bloque le rafraîchissement de l'écran.
    'Application.EnableEvents = False                    ' Arrêt de la scrutation.
    If Sheets("Bordereau").Range("A28").Value = "" Then             ' Test si la 1ere cellule utilisée, A28.
        MsgBox ("Le Tableau n'a pas été rempli !" & vbCrLf & " " & vbCrLf & "Il n'y a donc rien à imprimer."), vbCritical, "Fédération Trucmuche"
        Exit Sub
    End If
'Définit la zone complète
    Sheets("Tableau").PageSetup.PrintArea = "$A$1:$N$235"         ' Partie de la feuille utilisée.
    p = Nb_LigneBdx                                                   ' Saut à la fonction Nb_LigneBdx
    p = Nb_PagesBdx(p)                                              ' Saut à la fonction Nb_PagesBdxN2
    With Sheets("Tableau")
        .Visible = True
        .PrintOut from:=1, To:=p
        .Visible = False
    End With
     Application.ScreenUpdating = True           ' Rétablis le rafraîchissement de l'écran.
    Application.EnableEvents = True               ' Remise en service de la scrutation.
End Sub

' Calcule et renvois le N° de la dernière ligne non vide.
Function Nb_LigneBdx() As Integer
    Dim I As Integer
    For I = 28 To 235
        If Sheets("Tableau").Range("A" & I).Value = "" Then Exit For      ' Test la première cellule vide de la colonne A.
    Next I
    Nb_LigneBdx = I - 1
End Function

' Calcule et renvois le Nb de page.
Function Nb_PagesBdx(Lignes As Integer) As Integer
    Select Case Lignes
        Case 1 To 58: Nb_PagesBdx = 1
        Case 59 To 110: Nb_PagesBdx = 2
        Case 111 To 162: Nb_PagesBdx = 3
        Case 163 To 214: Nb_PagesBdx = 4
        Case Is > 214: Nb_PagesBdx = 5
    End Select
End Function

Indépendamment de cette modification le classeur et l'impression fonctionnent très bien.
Pouvez-vous m'aider ?
D'avance merci.
Mistral
A voir également:

37 réponses

Mistral_13200 Messages postés 636 Date d'inscription mardi 5 août 2008 Statut Membre Dernière intervention 15 novembre 2024 4
31 mars 2011 à 11:43
Re,

Oui j'ai contrôlé ma macro en pas à pas, et je dirais même que je ne fais que ça...
Ou alors je m'y prends mal!
Mais tu n'as pas l'apparition des pointillés sur la feuille Menu après avoir modifié la configuration et fait l'impression?

Quand j'imprime manuellement, Fichier/Imprimer je fais ce que je veux de mes impression ce qui pour moi mets l'imprimante hors de cause.
Mais d'ou viens le problème quand j'utilise les macros?
0
Le Pingou Messages postés 12187 Date d'inscription mercredi 11 août 2004 Statut Contributeur Dernière intervention 14 novembre 2024 1 449
31 mars 2011 à 11:58
Bonjour,
Vous est-il possible, lors de l'exécution de votre macro pas à pas, de faire une copie d'écran pour chaque pas et de mettre les images sur un document Word et ensuite de le poster !
Ainsi j'aurai une vue du déroulement et peut-être une change de ... !
0
Mistral_13200 Messages postés 636 Date d'inscription mardi 5 août 2008 Statut Membre Dernière intervention 15 novembre 2024 4
31 mars 2011 à 13:36
Vous trouverez ci-dessous un lien vers ce que vous m'avez demandé.
J'espere avoir bien compris votre demande.

http://www.cijoint.fr/cjlink.php?file=cj201103/cijJt3UcZd.pdf
0
Le Pingou Messages postés 12187 Date d'inscription mercredi 11 août 2004 Statut Contributeur Dernière intervention 14 novembre 2024 1 449
Modifié par Le Pingou le 31/03/2011 à 20:54
Bonjour,
Merci pour l'information.
A première vue tout semble correct sauf un petit détail qui me manque. Voir la pièce jointe.
https://www.cjoint.com/?3dFu6xEHNgz
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
Mistral_13200 Messages postés 636 Date d'inscription mardi 5 août 2008 Statut Membre Dernière intervention 15 novembre 2024 4
1 avril 2011 à 08:39
Bonjour Le Pingou,

Vous trouverez avec le lien ci-dessous ce que vous m'avez demandé

http://www.cijoint.fr/cjlink.php?file=cj201104/cijkxWCX7U.pdf

Je précise que j'ai fais tous mes essais avec la même configuration de départ de mon imprimante. En effet entre chaque essais je remettais mon imprimante en Couleur et Normal qui est la configuration standard, et je faisais une impression de contrôle qui elle était bonne.
Le problème semble se produire que dans un cas précis, c'est quand je demande une impression N&B et en brouillon.
Je ne comprends vraiment pas pourquoi!
Je voudrais encore vous remercier de me consacrer du temps pour m'aider, un grand merci à vous.
Cordialement
Mistral
0
Le Pingou Messages postés 12187 Date d'inscription mercredi 11 août 2004 Statut Contributeur Dernière intervention 14 novembre 2024 1 449
1 avril 2011 à 16:00
Bonjour,
Excusez-moi d'insister, le pas à pas n'est pas le même que celui que j'ai mis comme modèle, il manque la phase après configuration de l'imprimante, vous devez revoir le boite de dialogue et valider par OK .... !
Essayer de suivre le modèle point par point et rien d'autre!
0
Mistral_13200 Messages postés 636 Date d'inscription mardi 5 août 2008 Statut Membre Dernière intervention 15 novembre 2024 4
4 avril 2011 à 08:44
Bonjour,


Je n'ai trouvé votre message que ce matin ce qui explique ma réponse tardive.
J'ai donc refait deux essais un en couleur et l'autre en N&B. J'ai veillé également à la superposition des fenêtres pour bine mettre en évidence les conditions des captures d'ecran.

http://www.cijoint.fr/cjlink.php?file=cj201104/cijydQgd9B.doc

En esperant que cette fois-ci vous pourrez en déduire quel que chose.
Cordialement
Misstral
0
Le Pingou Messages postés 12187 Date d'inscription mercredi 11 août 2004 Statut Contributeur Dernière intervention 14 novembre 2024 1 449
4 avril 2011 à 22:54
Bonjour,
Merci pour vos informations, à première vue tout semble correct.
Par contre de mon côté à la suite d'un nouveau test plus poussé, je viens de réussir à reproduire la faute sur mon imprimante.
La recherche de la correction est pour demain.
0
Mistral_13200 Messages postés 636 Date d'inscription mardi 5 août 2008 Statut Membre Dernière intervention 15 novembre 2024 4
5 avril 2011 à 09:24
Bonjour,

Cela me rassure car vraiment je commencé à douter de moi...

Dans tout les cas un grand merci à vous.
Cordialement
Mistral
0
Le Pingou Messages postés 12187 Date d'inscription mercredi 11 août 2004 Statut Contributeur Dernière intervention 14 novembre 2024 1 449
5 avril 2011 à 15:11
Bonjour,
Eh bien je pense avoir mis le doigt sur la petite gentillesse.
Je fais encore des tests en fin de journée et je vous donnerai des nouvelles.
0
Le Pingou Messages postés 12187 Date d'inscription mercredi 11 août 2004 Statut Contributeur Dernière intervention 14 novembre 2024 1 449
5 avril 2011 à 18:01
Bonjour,
Je vous laisse essayer avec votre matériel, votre fichier avec une modification du code : https://www.cjoint.com/?3efsaAmxaOZ
J'espère que se sera bon ... !
0
Mistral_13200 Messages postés 636 Date d'inscription mardi 5 août 2008 Statut Membre Dernière intervention 15 novembre 2024 4
6 avril 2011 à 07:32
Bonjour,

J'ai fait un rapide test hier au soir que j'ai arreté car dans votre solution on ne prend plus en compte le bouton annuler de la fenêtre "Choix de l'imprimante".
Par contre il semblerait en effet que cela fonctionne correctement pour ce qui est de la qualité d'impression.
Ne pouvant pas mettre de test "IF" dans l'instruction "With" je vais refaire des tests de la qualité d'impression sans l'instruction "With" de manière à reprendre le test sur le bouton "Annuler".
Ou avez-vous une autre idée?
Cordialement
Mistral
0
Le Pingou Messages postés 12187 Date d'inscription mercredi 11 août 2004 Statut Contributeur Dernière intervention 14 novembre 2024 1 449
6 avril 2011 à 10:37
Bonjour,
Il faut se mettre d'accord, lorsque vous cliquer sur `Annuler ` dans le choix de l'imprimante, cela signifie que vous gardez l'imprimante par défaut et ou l'imprimante choisie mais avec la configuration par défaut. Donc l'impression se déroule normalement.
Peut - être que vous désirez tout simplement annuler l'ordre d'impression, se qui est différent !
Merci de le préciser, la modification est très simple.
Note: l'important est que les différents choix de configuration fonctionnent correctement...
0
Mistral_13200 Messages postés 636 Date d'inscription mardi 5 août 2008 Statut Membre Dernière intervention 15 novembre 2024 4
6 avril 2011 à 10:43
Effectivement il s'agit de supprimer l'ordre d'impression et rien de plus.

Il est bien evident que si on veur choisir une imprimante ou une qualité d'impression il faudra passer par cette boite et valider avant de sortir.

La suppression est indispensable pour eviter de gâcher du papier et de l'encre.
0
Le Pingou Messages postés 12187 Date d'inscription mercredi 11 août 2004 Statut Contributeur Dernière intervention 14 novembre 2024 1 449
6 avril 2011 à 11:03
Bonjour,
Le bloc `With' avec l'instruction ''If ` qui fonctionne, j'ai testé :
    With Sheets("Tableau")
        .Visible = True
        .Activate
' ***** définir configuration imprimante
        If Application.Dialogs(Excel.XlBuiltInDialog.xlDialogPrinterSetup).Show = True Then
        .PrintOut from:=1, To:=p ', ActivePrinter:=Nom
        End If
        .Visible = False 'A remettre dans la version difinitive.
    End With
0
Mistral_13200 Messages postés 636 Date d'inscription mardi 5 août 2008 Statut Membre Dernière intervention 15 novembre 2024 4
6 avril 2011 à 16:04
Re,

A permière vue semble semble correcte. MERCI!!!
Je vais pousser tous mes tests pour verifier le bon, fonctionnenement.
Je te eins au courant.
Cordialement.
Mistral
0
Mistral_13200 Messages postés 636 Date d'inscription mardi 5 août 2008 Statut Membre Dernière intervention 15 novembre 2024 4
7 avril 2011 à 08:16
Bonjour Le Pingou,


Les tests que j'ai fait chez moi se sont bien déroulés, je peux changer la qualité d'impression sans problème. Je dois encore contrôler le choix de l'imprimante sur un autre ordinateur, ou il y a plusieurs imprimantes, mais je pense que ça marchera car s'était déjà bon avant.
Je vais laissé le sujet ouvert quelque temps encore et, si tu le permet, je reviendrais vers toi en cas de problème.
En attendant un grand merci à toi pour ton aide et le temps que tu y a consacré.
Cordialement.
Mistral
0
Le Pingou Messages postés 12187 Date d'inscription mercredi 11 août 2004 Statut Contributeur Dernière intervention 14 novembre 2024 1 449
7 avril 2011 à 11:20
Merci, à une prochaine.
0
ça fait plaisir de voir une telle solidarité ! bravo :)
0