Faire ouvrir la fenêtre "Imprimer" !!!

degards

XLDnaute Occasionnel
Bonjour à vous tous !!!

J'ai une feuille pour mon travail, déjà pas mal complète, mais dans laquelle j'aimerais ajouter un petit plus. Vous trouverez ci-joint mon fichier Excel en question.

Après avoir consulté quelques sujets j'ai trouvé cette fonction "Application.Dialogs(xlDialogPrint).Show" qui ouvre la fenêtre de sélection de l'imprimante. Jusque là tout est ok.
J'aimerais maintenant que lorsque la personne sélectionne son imprimante et le mode recto-verso, au besoin, que la macro "imprim" débute son travail immédiatement. Cependant lorsque l'on clique sur "OK" une feuille vierge s'imprime et elle n'est pas désirée. Donc je cherche en quelque sorte que lorsque l'utilisateur clique sur "OK", "ANNULER" ou ""FERMER", cela ne fait que fermer la fenêtre et la macro "IMPRIM" débute l'impression.

Je n'ai pas beaucoup d'expérience en MVB et c'est pour cela que je demande votre aide.

Merci !!!

Degards
 

Pièces jointes

  • nouvelle 518(mise à jour).xls
    182 KB · Affichages: 93

Paf

XLDnaute Barbatruc
Re : Faire ouvrir la fenêtre "Imprimer" !!!

bonjour,

Le seul intérêt de Application.Dialogs(xlDialogPrint).Show c'est de permettre un choix d'imprimantes et de paramètres.

Son inconvénient, dans votre cas, est qu'une impression est lancée alors que les données n'ont pas encore été mises à jour.

Avez vous réellement besoin de choisir une imprimante ?

A+
 

Paf

XLDnaute Barbatruc
Re : Faire ouvrir la fenêtre "Imprimer" !!!

Re,

Après réflexions, il faut générer les diverses feuilles à imprimer avant de lancer l'impression.

Solution 1: à chaque mise à jour de cellules, copier la feuille dans une feuille spécifique à la queue leu leu.Mais après m'être perdu dans les méandres des sauts de pages j'ai abandonné

Solution 2: il peut y avoir au maximum 11 feuilles à imprimer. Donc création manuelle de 11 feuilles Imprim1 à Imprim11, à chaque mise à jour de cellules, copier la feuille dans une feuille destinée à l'impression. Puis lancement de l'impression . C'est "un peu" lourd mais ça fonctionne.
Je vous laisse le soin d'améliorer en faisant une création dynamique des feuilles Imprimx

Code:
Sub degards()
x = 0
For i = 1 To 11
    Worksheets("Imprim" & i).Cells.Delete
Next
For i = 9 To Sheets(1).Range("L35").End(xlUp).Row Step 2
    If IsError(Sheets(1).Cells(i, 12).Value) Then GoTo pass
    If Sheets(1).Cells(i, 12).Value <> "" Then
        Sheets(1).Cells(2, 13) = Sheets(1).Cells(i, 12) & " " & Sheets(1).Cells(i, 12).Offset(-1, 0)
        x = x + 1
        CreePage x
    End If
pass:
Next
'' C'est à partir d'ici que j'ai besoin d'aide
If Sheets(1).Cells(31, 1) <> "" Then
    Sheets(1).Cells(2, 13) = Sheets(1).Cells(31, 1) & " " & Sheets(1).Cells(30, 1)
    Sheets(1).Cells(3, 13) = "AGENT MULTI"
        x = x + 1
        CreePage x
End If

If Sheets(1).Cells(33, 1) <> "" Then
    Sheets(1).Cells(2, 13) = Sheets(1).Cells(33, 1) & " " & Sheets(1).Cells(32, 1)
    Sheets(1).Cells(3, 13) = "AGENT MULTI"
        x = x + 1
        CreePage x
End If
  
If Sheets(1).Cells(31, 5) <> "" Then
    Sheets(1).Cells(2, 13) = Sheets(1).Cells(31, 5) & " " & Sheets(1).Cells(30, 5)
    Sheets(1).Cells(3, 13) = "AGENT MULTI"
        x = x + 1
        CreePage x
End If

If Sheets(1).Cells(33, 5) <> "" Then
    Sheets(1).Cells(2, 13) = Sheets(1).Cells(33, 5) & " " & Sheets(1).Cells(32, 5)
    Sheets(1).Cells(3, 13) = "AGENT MULTI"
        x = x + 1
        CreePage x
End If

Sheets(1).Cells(2, 13) = ""
Sheets(1).Cells(3, 13) = ""
    
'*** lancement de l'impression
Lance = Application.Dialogs(xlDialogPrint).Show
If Lance = True Then
    For i = 1 To 11
        If Worksheets("Imprim" & i).Range("C1") <> "" Then
            'Worksheets("Imprim" & i).PrintOut
            Worksheets("Imprim" & i).PrintPreview
        End If
    Next
End If
'*** effacement des feuilles d'impression
For i = 1 To 11
    Worksheets("Imprim" & i).Cells.Delete
Next
    
End Sub

Code:
Sub CreePage(Num)
Worksheets("518").Range("A1:AA62").Copy Worksheets("Imprim" & Num).Range("A1")
End Sub

A+
 

Statistiques des forums

Discussions
312 400
Messages
2 088 086
Membres
103 710
dernier inscrit
amin Saadaoui