Impression de documents différents chaque jour

fx62

XLDnaute Junior
Bonjour le forum,

Je voudrais pouvoir imprimer trois documents différents chaque jour, de manière automatique, à une heure donnée (si possible les trois à la même heure).

Je m'explique : le documents que je suis entrain de créer est destiné aux postés, il y a donc un posté du matin, un de l'après-midi et un de nuit. Chaque posté devra remplir un document, par jour, avec les anomalies rencontrés durant son poste. Cela signifie qu'il y aura trois documents différents par jour. Et logiquement, les documents du jour J seront différents des documents du jour J+1.

J'ai fais quelques recherches sur le forum et j'ai pu trouver comment lancer une impression d'un document A à une heure précise tous les jours. Je n'ai pas de problème lorsqu'il s'agit du même document chaque jour. Or, comme je l'ai dit il y aura trois documents différents chaque jour.

Exemple:
Jour J :
impression rapport 21-02-2011 matin
impression rapport 21-02-2011 après-midi
impression rapport 21-02-2011 nuit

Jour J+1 :
impression rapport 22-02-2011 matin
impression rapport 22-02-2011 après-midi
impression rapport 22-02-2011 nuit

J'ajoute en pièce jointe, un fichier test_fx62 avec les différentes macro écrites.
Si je n'ai pas été assez clair, n'hésitez pas à me le faire remarquer.

Edit : j'allais oublier, tous les documents sont dans le même dossier (répertoire).

Merci d'avance pour votre aide,
fx62
 

Pièces jointes

  • Test_fx62.xls
    23.5 KB · Affichages: 56
  • Test_fx62.xls
    23.5 KB · Affichages: 59
  • Test_fx62.xls
    23.5 KB · Affichages: 55
Dernière édition:
G

Guest

Guest
Re : Impression de documents différents chaque jour

Bonjour,

Code:
Sub impression()
ThisWorkbook.Sheets("Feuil1").PrintOut
ImprimeDocument NomCompletVersLeFichier, NomDeLaFeuilleAImprimer
End Sub

Code:
Sub ImprimeDocument(FullName As String, SheetToPrint As String)
    Dim wk As Workbook
    Dim bFound As Boolean
    'Parcours la collection des classeurs ouverts
    'pour trouver le classeur correspondant à FullName
    For Each wk In Workbooks
        If wk.FullName = FullName Then
            bFound = True
            Exit For
        End If
    Next
    'S'il n'a pas été trouvé et qu'il existe sur le disque alors l'ouvrir
    If Not bFound And Dir(FullName, vbDirectory) <> "" Then Set wk = Workbooks.Open(FullName)
 
    If Not wk Is Nothing Then
        'Lancer l'impression de la feuille correspondant à SheetToPrint
        wk.Sheets(SheetToPrint).PrintOut
        'Si le classeur n'était pas ouvert avant l'impression, on le ferme.
        If Not bFound Then wk.Close False
    End If
End Sub

A+
 

fx62

XLDnaute Junior
Re : Impression de documents différents chaque jour

Merci Hasco d'avoir répondu aussi rapidement, par contre étant débutant pourrais-tu confirmer ou corriger les choix que j'ai fait ci-dessous. Merci.

Tout d'abord, je suppose que tous ce que tu viens d'écrire et à mettre dans un module, n'est ce pas ?

Autre question, dois-je remplacer les parties en gras par mes propres documents ? Ou dois-je tout simplement copier-coller le tout dans le module ?

Sub impression()
ThisWorkbook.Sheets("Feuil1").PrintOut
ImprimeDocument NomCompletVersLeFichier, NomDeLaFeuilleAImprimer
End Sub


Sub ImprimeDocument(FullName As String, SheetToPrint As String)
Dim wk As Workbook
Dim bFound As Boolean
'Parcours la collection des classeurs ouverts
'pour trouver le classeur correspondant à FullName
For Each wk In Workbooks
If wk.FullName = FullName Then
bFound = True
Exit For
End If
Next
'S'il n'a pas été trouvé et qu'il existe sur le disque alors l'ouvrir
If Not bFound And Dir(FullName, vbDirectory) <> "" Then Set wk = Workbooks.Open(FullName)

If Not wk Is Nothing Then
'Lancer l'impression de la feuille correspondant à SheetToPrint
wk.Sheets(SheetToPrint).PrintOut
'Si le classeur n'était pas ouvert avant l'impression, on le ferme.
If Not bFound Then wk.Close False
End If
End Sub

Encore merci,
fx62
 
G

Guest

Guest
Re : Impression de documents différents chaque jour

Re,

Oui c'est à mettre dans ton module. La macro Impression, remplaçant la tienne.

Seuls, NomCompletVersLeFichier, NomDeLaFeuilleAImprimer sont à adapter. Le reste tu laisses tel quel.

Exemple : ImprimeDocument "D:\unrépertoire\lefichier.xls" , "lafeuille"

A+​
 

fx62

XLDnaute Junior
Re : Impression de documents différents chaque jour

Ok je te remercie. J'essaye ça ce soir et je te tiens au courant demain.
Même si j'avoue je ne comprend pas comment il va pouvoir imprimer les trois documents chaque jour en ne renseignant que l'un des trois.
Bonne fin de journée.
fx62
 
G

Guest

Guest
Re : Impression de documents différents chaque jour

Re,

Euh! je crois qu'il y a mal entendu.

Il faut dans ta macro impression, faire appel à la macro ImprimeDocument 2 fois.

Dans:
Code:
Sub impression()
ThisWorkbook.Sheets("Feuil1").PrintOut
ImprimeDocument [B]NomCompletVersLeFichier, NomDeLaFeuilleAImprimer[/B]
End Sub

ThisWorkBook.sheets("Feuil1").PrintOut lance l'impression de la feuille 'Feuil1' du classeur qui contient la macro.

ImprimeDocument "D:\....\lefichier.xls", "LaFeuille" lancera l'impression pour 1 document (lefichier.xls)

Il faut donc rajouter autant de ImprimeDocument "NomDuClasseur", "NomDeLaFeuille" qu'il reste de document à imprimer.

Est-ce plus clair pour toi?
A+
 

fx62

XLDnaute Junior
Re : Impression de documents différents chaque jour

Bonjour Hasco, le forum,

J'ai donc essayer ta solution en mettant :

Sub impression()
'ThisWorkbook.Sheets("Feuil1").PrintOut (j'ai supprimée cette ligne car en fait je n'avais pas besoin d'imprimer la feuille de ce fichier)
ImprimeDocument "U:\...\Rapport du 18-02-2011 à 10h12.xls", "Rapport Electropostés"
ImprimeDocument "U:\...\Rapport du 18-02-2011 à 10h19.xls", "Rapport Electropostés"
ImprimeDocument "U:\...\Rapport du 18-02-2011 à 10h21.xls", "Rapport Electropostés"
End Sub

Cela fonctionne parfaitement mais malheureusement ça n'ai pas ce dont j'ai besoin exactement, puisque le lendemain je devrais à nouveau changer les fichiers et mettre :

Sub impression()
'ThisWorkbook.Sheets("Feuil1").PrintOut
ImprimeDocument "U:\...\Rapport du 19-02-2011 à 10h12.xls", "Rapport Electropostés"
ImprimeDocument "U:\...\Rapport du 19-02-2011 à 10h19.xls", "Rapport Electropostés"
ImprimeDocument "U:\...\Rapport du 19-02-2011 à 10h21.xls", "Rapport Electropostés"
End Sub

Si possible, je souhaiterai imprimer les documents de la veille. C'est à dire qu'aujourdhui (23 février) je voudrais que les rapports du 22 s'imprime automatiquement.

J'espère avoir été un peu plus clair :D
Ma demande est-elle réalisable ?

fx62
 

Softmama

XLDnaute Accro
Re : Impression de documents différents chaque jour

Bonjour à vous,

Tu dois pouvoir faire ainsi, (voire remplacer Now, par Now-1)
VB:
Sub impression()
'ThisWorkbook.Sheets("Feuil1").PrintOut
ImprimeDocument "U:\...\Rapport du " &Format(Now,"dd-mm-yyyy") & " à 10h12.xls", "Rapport Electropostés"
ImprimeDocument "U:\...\Rapport du " &Format(Now,"dd-mm-yyyy") & " à 10h19.xls", "Rapport Electropostés"
ImprimeDocument "U:\...\Rapport du " &Format(Now,"dd-mm-yyyy") & " à 10h21.xls", "Rapport Electropostés"
End Sub
 

fx62

XLDnaute Junior
Re : Impression de documents différents chaque jour

Merci Softmama,
Par contre l'heure ne sera pas la même chaque jour donc est-ce que je peux mettre :

ImprimeDocument "U:\...\Rapport du " &Format(Now,"dd-mm-yyyy") & " à " &Format(Now,"hh":"mm") & ".xls", "Rapport Electropostés"

Pensez-vous que ce soit possible ?
fx62.
 

Softmama

XLDnaute Accro
Re : Impression de documents différents chaque jour

Re,

Oui ça l'est, mais il faut du coup que tu sois sur que l'heure renvoyée sera la même que celle du fichier. Sinon, il serait plus simple de les appeler à la fin 1, 2 et 3 au lieu de à 10h19, à 10h21...
 

fx62

XLDnaute Junior
Re : Impression de documents différents chaque jour

Pour dire vrai, j'ai une commande bouton qui me permet d'enregistrer le fichier sous la forme : Rapport du dd-mm-yyyy à hh:mm, ceci grâce au contenu d'une cellule avec la formule =MAINTENANT().
Du coup dés que je l'ouvre l'heure de la cellule varie. Je vais donc essayer ta solution mais au lieu de mettre 1, 2 et 3, je vais plutôt mettre nuit, matin et après-midi. A moins que tu connaisses un moyen de laisser fixe la date, sans la rentrer manuellement ???

Je te remercie d'avance.
fx62
 
G

Guest

Guest
Re : Impression de documents différents chaque jour

Bonjour fx62, Softmama,

fx62 quant est-ce que tu voudrais que la date et l'heure ce mettent dans la cellule? A l'ouverture du classeur?
Si oui,
Dans le module de code "ThisWorkBook:
Code:
Private Sub Workbook_Open()
Sheets("Feuil1").Range("A1")= Now
End Sub

Où tu remplaces Sheets("Feuil1").Range("A1") par la feuille et la cellule idoines


A+
 
Dernière modification par un modérateur:

fx62

XLDnaute Junior
Re : Impression de documents différents chaque jour

Slt Hasco,

Oui, je voudrais que la date se mette à la première ouverture uniquement (c'est à dire à la création du document).
En gros, je voudrais qu'en A1 par exemple il y ai la date de création du fichier et que celle-ci ne change pas, or avec =MAINTENANT() ou avec ton code, la date et l'heure varie en fonction de la date du jour actuel.

Peut-être devrais-je créer un nouveau post pour ce sujet ?

fx62
 
G

Guest

Guest
Re : Impression de documents différents chaque jour

Re,

Qu'appelles-tu la date de création. La date du premier d'enregistrement du fichier.

Si oui:
Code:
Private Sub Workbook_BeforeSave(ByVal SaveAsUI As Boolean, Cancel As Boolean)
If ThisWorkbook.Path = "" Then Feuil1.Range("A1") = Now
End Sub

Avant que le classeur n'ait été enregistré ThisWorkbook.Path retourne une chaine vide.
L'évènement BeforeSave se produit avant l'enregistrement.

Mais tout ceci sera forcément fragile à moins de protéger+++ ta cellule A1 ou de la mettre dans une feuille cachée.

La solution de mettre plutôt matin, midi, soir à la place de l'heure me semble préférable.

A+
 

Discussions similaires

Membres actuellement en ligne

Statistiques des forums

Discussions
312 472
Messages
2 088 710
Membres
103 929
dernier inscrit
Tangerine9