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:
C

Compte Supprimé 979

Guest
Re : Imprimer fichier créé par un programme vba

Salut Kaiser,

Là, tu as imbriqué les conditions l'une dans l'autre, ce n'est pas bon
Code:
If reponse = 6 Then
  If reponse = 7 Then
  End If
End If

Il faut utiliser : If ... Then ... Else ... End IF
Et dans ton cas ce n'est pas nécessaire, on teste seulement la réponse oui
Donc tu auras,
Code:
'...
Next n
' Le code après la boucle
Application.Calculation = xlAutomatic
[COLOR=black]IF Msgbox(("Voulez-vous imprimer les fiches de remplacements?", _[/COLOR]
[COLOR=black] vbQuestion+vbYesNo, "Impression Fiche de Remplacement")= VbYes then[/COLOR]
' Tout ce qui est en vert n'est pas obligatoire
[COLOR=black]Workbooks("rpl.xls").Sheets("sheet1").PrintOut Copies:=1[/COLOR][COLOR=green][B], _[/B]
[B]     ActivePrinter:="Nom de l'imprimante", Collate:=False[/B][/COLOR]
[COLOR=black]End IF[/COLOR]
' La suite du code ICI
Workbooks("2007Schicht2modif1.xls").Activate
Workbooks("rpl.xls").Close
'Application.ScreenUpdating = True
Application.EnableEvents = True
'...

Essaye ça ;)
 

kaiser

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

Oki pour la modif du code, j'ai corrigé.

Par contre je ne souhaite pas imprimer rpl.xls, dans la mesure ou il s'agit du tableau vide qui est rempli par le programme puis sauvegardé sous un autre nom.
je souhaite imprimer les fichiers découlant de rpl.xls,et en fait ca il y en a un nombre variable suivant les mois (jusque 6/7) et il s'appelle "remplacement dupont avril.xls", "remplacement durand avril.xls", "remplacement dupond avril.xls" etc etc...
 

kaiser

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

personne pour me donner un ptit coup de pouce?

il "suffit" soit de dire d'imprimer les classeures ouvert sauf le fichier de pointage, soit lui dire d'imprimer les fichiers contenus dans un dossier ayant dans le nom "remplacement" et la valeur de la variable "mois" que le programme a en mémoire
 

Toine

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

bonjour
eu s est quoi comme type de fichier que tu crée deja ??
peut etre que ce serait plus facil d'y ouvrir et d'impreimer depui cette page na ??
enfin je dit sa si s est du excel s est pas trés dur si s est autre chose sa va l'étre beaucoup plus je pense.
 

kaiser

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

oui c'est des fichiers excel.

J'ai un fichier avec un tableau vide, le programme le remplis puis le sauvegarde sous un autre nom.
Vu que a la fin du programme je peut avoir 6/7fichier ouvert, faire a chaque fois fichier/imprimer c'est relou.

c'est pour ca que je souhaite le faire automatiquement via vba, malheuresement je débute en vba et j'ai aucune idée de comment faire ca

merci de ton aide
 

Toine

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

en adaptan la soluce de bruno avec genre une boucle qui fait imprimer pour chaque fichier ouvert sauf le premier
tes fichier sont dans des autre classeur ou ce sont des feuille du même classeur ???
 

kaiser

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

non les fichiers sont dans d'autre classeurs.

En fait voila comment ca ce passe:
-j'ouvre le fichier de pointage et lance la macro
-la macro ouvre le fichier rpl.xls, le remplis pour un employé puis le sauvegarde sous "remplacement dupont juin" et ainsi de suite pour chaque employé concerné en changeant le nom de l'employée dans le nom du fichier
-la macro ferme le rpl.xls, il me reste donc d'ouvert le fichier de pointage ainsi que tout les fichiers de remplacement remplis
 

Toine

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

je pense donc qu'il faut laisser le premier fichier avec la macro ouvert le temp d'imprimer et dans cette macro mettre un truc genre
impression juste apre avoire ouvert ton classeur remplacement dupont juin et ici tu metterait le code
Workbooks("ramplacementsdupontjuin.xls").Sheets("sheet1").PrintOut Copies:=1, _
ActivePrinter:="Nom de l'imprimante", Collate:=False
("ramplacementsdupontjuin.a modifier a chaque ouverture de fichier en passant par une variable
mais dans ce cas tu dit oui ou nom o cas par cas pour l'impression
s est peut etre genent ???
 
Dernière édition:

kaiser

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

ben ouais ce serais un peu génant vu que quitte a se casser le tête pour améliorer un truc autant le faire jusqu'au bout.
et pis cliquez pour chaque personne reviendrais à faire ctrl+P en changeant de feuille manuellement...donc un interet limité
 

Toine

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

s'est pas faut je supose c'est ton dernier classeur qui est activer na ??
atu essayer :
for each workbook in workbooks
Workbook.Sheets("sheet1").PrintOut Copies:=1, _
ActivePrinter:="Nom de l'imprimante", Collate:=False
next
en fermant ton classeur index avant
 
Dernière édition:

Membres actuellement en ligne

Statistiques des forums

Discussions
312 215
Messages
2 086 330
Membres
103 185
dernier inscrit
salhit