Imprimer fichier créé par un programme vba

kaiser

XLDnaute Occasionnel
Imprimer fichiers créés par un programme vba

Bonjour

Voila sur une feuille j'ai un programme en VBA qui ,en fonction de la couleur des cases, va remplir un fichier annexe (en demandant deux infos via un inputbox) puis l'enregistrer sur une autre nom.

j'aimerais que à la fin de ce programme, il demande à l'utilisateur si celui ci veut imprimer les fichiers qu'il vient de créer.
Pas de probléme pour faire le VbYesNo, mais je ne sais pas quoi mettre dans le cas oû l'utilisateur dis oui.

Voici mon code:
Code:
Private Sub CommandButton1_Click()

Dim Cell As Range
Dim flag As Boolean

feuille = ActiveSheet.Name
Application.ScreenUpdating = False

For n = 9 To Range("B65536").End(xlUp).Row Step 3
If n = 30 Then n = 33
Workbooks.Open "c:\Documents And Settings\diaquint\My Documents\rpl.xls"
Workbooks("2007Schicht2modif1.xls").Activate
Set plage_date = Range("D" & n & ":AG" & n)

i = 6

   For Each Cell In plage_date
    If Cell.Interior.ColorIndex = 6 Or Cell.Interior.ColorIndex = 38 Then
    Application.ScreenUpdating = True
    Application.Calculation = xlManual
    'Application.EnableEvents = False
    If Not Cell.Comment Is Nothing Then Cell.Comment.Visible = True
    flag = True
    
        
i = i + 1
    nom = Range("B" & n)
    prenom = Range("B" & n + 1)
    Workbooks("rpl.xls").Sheets("sheet1").Range("E4") = prenom & " " & nom
    Workbooks("rpl.xls").Sheets("sheet1").Range("E4").Borders.LineStyle = xLineStyleNone
    Workbooks("rpl.xls").Sheets("sheet1").Range("E30") = "Fait le " & Date
    Workbooks("rpl.xls").Sheets("sheet1").Range("E30").Font.Bold = True
    heure = Cell.Value
    jour = Cells(6, Cell.column)
     Application.ScreenUpdating = False
         Select Case feuille
          ...
         End Select
         
    Workbooks("rpl.xls").Worksheets("sheet1").Range("G3") = mois
    With Workbooks("rpl.xls").Worksheets("sheet1").Range("G3").Font
    .Bold = False
    .Italic = False
    .Underline = False
    End With
    Workbooks("rpl.xls").Worksheets("sheet1").Cells(i, 2) = heure
    Workbooks("rpl.xls").Worksheets("sheet1").Cells(i, 4) = jour & " " & mois

    remplace = InputBox("Entrez le nom de la personne remplacée le " & jour & " " & mois & " par " & prenom & " " & nom, "Remplacement", lastname, 9960, 330)
    Workbooks("rpl.xls").Worksheets("sheet1").Cells(i, 5) = remplace
    lastname = remplace
    If Cell.Interior.ColorIndex = 38 Then
    poste = "Neutra"
    Else
    poste = InputBox("Entrez le poste", "Remplacement", lastposte, 9960, 330)
    lastposte = poste
    End If
    Workbooks("rpl.xls").Worksheets("sheet1").Cells(i, 6) = poste
    If Not Cell.Comment Is Nothing Then Cell.Comment.Visible = False
 End If
Next Cell
If flag Then
Workbooks("rpl.xls").Sheets("sheet1").Range("E4") = prenom & " " & nom
Workbooks("rpl.xls").Sheets("sheet1").Range("E4").Borders.LineStyle = xLineStyleNone
Workbooks("rpl.xls").Sheets("sheet1").Range("E30") = "Fait le " & Date
Workbooks("rpl.xls").Sheets("sheet1").Range("E30").Font.Bold = True
Workbooks("rpl.xls").SaveAs Filename:="remplacement " & mois & " " & nom
End If
flag = False
Next n
Workbooks("2007Schicht2modif1.xls").Activate
Workbooks("rpl.xls").Close
'Application.ScreenUpdating = True
Application.EnableEvents = True
[COLOR="Red"]reponse = MsgBox("Voulez-vous imprimer les fiches de remplacements?", vbYesNo + vbQuestion, "Impression Fiche de Remplacement")
If reponse = 6 Then
[/COLOR]If reponse = 7 Then

End If
End If
Application.Calculation = xlAutomatic
End Sub
 
Dernière édition:

Toine

XLDnaute Occasionnel
Re : Imprimer fichier créé par un programme vba

Une soluce plus propre
Code:
for i=2 to workbooks.count
workbooks(i).activate
(ta ligne imprésion)
next
"i=2" pour éviter de print ta mauvaise page vue que c'est soit laa premiére soit la derniere c'est soit i=2
soit for i=1 to (workbooks.count - 1) "la sintax est a revoire je pense mais l'idée y est
 
Dernière édition:

VIC

XLDnaute Nouveau
Re : Imprimer fichier créé par un programme vba

Bonjour Kaiser, Toine, Le forum,

Je n'ai pas de réponse tout prête mais juste une piste.
Au moment où ton programme enregistre le tableau rempli sous un autre nom, tu pourrais enregistrer le nom de ce fichier dans une variable (de type array par exemple).
Chaque nom de fichier est sauvegardé et quand l'utilisateur dit OUI à l'impression, tu lances l'impression des fichiers dont le nom est en mémoire.
(si besoin, la procédure les ouvre, les imprime et les referme)

voila pour mon idée.
Je vais quand même essayer de creuser la question.

A+
Vic
 

kaiser

XLDnaute Occasionnel
Re : Imprimer fichier créé par un programme vba

VIC à dit:
Bonjour Kaiser, Toine, Le forum,

Je n'ai pas de réponse tout prête mais juste une piste.
Au moment où ton programme enregistre le tableau rempli sous un autre nom, tu pourrais enregistrer le nom de ce fichier dans une variable (de type array par exemple).
Chaque nom de fichier est sauvegardé et quand l'utilisateur dit OUI à l'impression, tu lances l'impression des fichiers dont le nom est en mémoire.
(si besoin, la procédure les ouvre, les imprime et les referme)

voila pour mon idée.
Je vais quand même essayer de creuser la question.



A+
Vic

Salut à toi

Idée intéressante que tu propose, seulement y a un probléme: c'est quoi un varaible arrray?^^

J'ai voulu tester mon bout de code sur un autre poste, seulement en branchant la cléf usb le pc a commencé à faire des bips en continue et a finis par se freezer, donc n'ayant de login pour ce pc pour l'instant je l'ai dans l'os!^^

mais vu que j'ai pas d'imprimante si le programme fonctionne, je ne devrais pas avoir un message d'erreur comme quoi y a pas d'imprimate sur le pc?

edit:
toine=> si par j'ai pigé, ce que tu propose imprime tout les classeurs ouverts sauf celui de base, si par hasard l'utilisateur a un aute fichier ouvert ca va être le dawa nan?
 
Dernière édition:

Toine

XLDnaute Occasionnel
Re : Imprimer fichier créé par un programme vba

bonjour vic


c'est pas fo
mais de tout fasson sa va etre le "dawa"(pour remprendre ton expresion ^^) si l'utilisateur a un autre truc excel ouvert
 
Dernière édition:

Toine

XLDnaute Occasionnel
Re : Imprimer fichier créé par un programme vba

donc cette solus n'est pas acceptable je cherche encore et tj ;)
ils on quoi comme nom tes classeur (dé)générer :) deja
ou a la limite faire un compte des classeur deja ouvert stocker dans une variable et faire boucler i apre
mais le probléme c'est que si il ouvre un classeur entre temps même probleme
 
Dernière édition:

Toine

XLDnaute Occasionnel
Re : Imprimer fichier créé par un programme vba

dans ce cas je te propose
Code:
dim NBWB as integer            
NBWB = workbooks.count  
'  a placer jsut avant ta macro de crétion detes autre feuil

et de reprendre le code qui aller bien tout a l'heure
 

Toine

XLDnaute Occasionnel
Re : Imprimer fichier créé par un programme vba

s est vrai que s est pas mal (bien mieux)
donc array sa a l'air d'etre comme un tableau
le truc c'est que je sait po trop men servir (s'est trés utile un gars qui sait pas faire grand chose ^^)
 

Toine

XLDnaute Occasionnel
Re : Imprimer fichier créé par un programme vba

Code:
dim T (50) as string
a chaque fois que tu crée un nouveaux doc tu charge sont nom dans le tableau
Code:
T(i)="nom du truc placer dans une variable"

aprés je pense un truc genre
Code:
i=1
do until T(i)="" 
[COLOR="Lime"]taligne pour imprimet avec T(i) comme parametre pour l'impression[/COLOR]
[COLOR="Black"][/COLOR]
i=i+1
loop
dit le si tu voit pas trop ce que je veut dire
j'ai mi 50 au hasard au fait il fo peut etre plus je sait po
 
Dernière édition:

VIC

XLDnaute Nouveau
Re : Imprimer fichier créé par un programme vba

Me revoila,
J'ai changé de poste et travaillé un peu !

En effet un "array" c'est un peu comme un tableau.
C'est une variable qui peut contenir plusieurs valeurs.
On peut faire :

Dim MonTableau as array
ensuite
on peut lui donner les valeur par MonTableau (1) = Mavaleur1
MonTableau (2) = Mavaleur2 etc ..
On peut l'utiliser dans des boucles par exemples
for i = 1 to 10
MonTableau (i).value = .....
next i

Je n'ai plus trop de temps.
Désolé.
Un pro devrait vous en dire plus.
Bon week-end
Vic
 

VIC

XLDnaute Nouveau
Re : Imprimer fichier créé par un programme vba

Entre temps j'ai vu ton dernier post.
Tu as raison sur la déclaration c'est bien du type
dim T(50) as string (si on veux y mettre que du texte)
Dans ce cas (et c'est ce dont Kaizer a besoin) c'est un tableau avec une seule colonne.

Sinon c'est T(50, 10) par exemple

ATTENTION au piege
T(50) est un tableau de 51 valeurs la 1ere étant T(0)

Allez je vous laisse.
Bon courage.
Vic
 

Toine

XLDnaute Occasionnel
Re : Imprimer fichier créé par un programme vba

merci j'y pensait plue a l'indice a 0(trop habituer a faire de l'algo a la main ^^ )
bon courage a toi aussi
aller bon week end le travail est fini et j'ai pas de net le weekend (on parle pas boulot le weekend on pêche ^^) jesepere que mon dernier post te sera utile
 
Dernière édition:

kaiser

XLDnaute Occasionnel
Re : Imprimer fichier créé par un programme vba

Bonjour a tous

Voila j'ai un ptit peu avancé sur monprobléme:
Code:
Filename = "remplacement " & mois & " " & nom & ".xls"
Workbooks("rpl.xls").SaveAs Filename:=Filename
myarray(j) = Filename
j = j + 1
...
...
...

reponse = MsgBox("Voulez-vous imprimer les fiches de remplacements?", vbYesNo + vbQuestion, "Impression Fiche de Remplacement")
If reponse = 6 Then
For j = 0 To 10
[COLOR="Red"]j.PrintOut[/COLOR]
Next
Else: If reponse = 7 Then GoTo Line1
End If

Seulement à l'execution j'ai une erreur 424 "object required" sur la ligne rouge


Rouge
 

Discussions similaires

Statistiques des forums

Discussions
312 358
Messages
2 087 581
Membres
103 598
dernier inscrit
f-laurent