Imprimer un feuillet par fichier automatiquement

atetard

XLDnaute Nouveau
Bonjour a tous, gourous d'Excel. Je vous ecris aujourd'hui car j'ai un probleme au boulot avec une tache longue et penible pour laquelle j'aimerai gagner un peu de temps.

Faisons simple : Chaque personne a un tableur excel a son nom. Chaque feuillet correspond aux taches quotidiennes a effectuer. Sur chaque fichierm on a donc des dixaines de feuillets du type : Feuillet 1 = 12 Juillet, feuillet 2 = 13 Juillet. Etc.

Mon role est, a la fin de la journee, d'imprimer tous les feuillets du jour, pour savoir quelle taches ont ete accomplies et le donner a la direction.

Mon probleme : Je suis obliger d'ouvrir chaque fichier un par un pour imprimer le dernier feuillet uniquement. Et pour 80 personnes, cela represente de longues minutes.

Y A-T-IL UN MOYEN D'IMPRIMER UN FEUILLET DE CHAQUE FICHIER POUR LES 80 FICHIERS DE FACON AUTOMATIQUE SANS AVOIR BESOIN DE TOUS LES OUVRIR SUCCESSIVEMENT ?

Merci d'avance =]
 

job75

XLDnaute Barbatruc
Re : Imprimer un feuillet par fichier automatiquement

Bonjour atetard,

Il faut ouvrir tous les fichiers pour pouvoir les imprimer, mais où est le problème quand ça se fait automatiquement ?

Voici la macro :

Code:
Sub ImprimeFichiers()
Dim F$, chemin$, nomfich$, o As Boolean
Application.ScreenUpdating = False
On Error Resume Next
F = Range("A1") 'la cellule A1 (à adapter)de la feuille active contient le nom de la feuille à imprimer
chemin = ThisWorkbook.Path 'ou un autre chemin d'accès du répertoire contenant les fichiers
nomfich = Dir(chemin & "\*.xls") '1er fichier du dossier
While nomfich <> ""
  o = False
  If IsError(Workbooks(nomfich).Name) Then 'si le fichier n'est pas déjà ouvert, on l'ouvre
    Workbooks.Open chemin & "\" & nomfich
    o = True
  End If
  Windows(nomfich).Visible = True 'au cas où la fenêtre serait masquée, on l'affiche
  With Workbooks(nomfich).Sheets(F)
    .Visible = True 'au cas où la feuille serait masquée, on l'affiche
    With .PageSetup
      .CenterHeader = nomfich 'mise en forme indispensable...
      .FitToPagesWide = 1 'mise en forme facultative
      .FitToPagesTall = 1 'mise en forme facultative
    End With
    .PrintOut 'impression de la feuille
  End With
  If o Then ActiveWorkbook.Close False 'si le fichier a été ouvert, on le referme
  nomfich = Dir 'fichier suivant du dossier
Wend
End Sub
A+
 
Dernière édition:

atetard

XLDnaute Nouveau
Re : Imprimer un feuillet par fichier automatiquement

Desole pour le double sujet, (et d'avance pour les accents que je n'ai pas sur ce clavier qwerty) mais j'avoue etre depasser par la technicite de ta reponse.
En fait ce qui se passe c'est que chaque jour, je rentre dans le dossier, il y a un fichier excel par personne [Jack.xlsx, Marc.xlsx, Julie.xlsx....] Et je dois les ouvrir un par un pour imprimer le dernier feuillet de chaque fichier.

Y a-t-il un outil, une fonction de vista ou autre qui permet d'imprimer tous ces feuillets sans avoir besoin d'ouvrir tous les fichiers un par un ?

J'espere que si la reponse existe, elle est exploitable par un utilisateur lambda tel que moi.

Merci d'avance !
 

Odesta

XLDnaute Impliqué
Re : Imprimer un feuillet par fichier automatiquement

Bonsoir
La macro proposée par job75 permet de lire tous les fichiers présents dans un dossier (ici c'est chemin, qu'il faut modifier si le fichier contenant le programme est dans un autre dossier que les fiches individuelles. Si il y a un dossier par personnes, alors il faut modifier le programme pour qu'il puisse rechercher tous les dossiers concernés.); Puis il ouvre uniquement la bonne feuille et l'imprimme.

Il faut bien indiquer en "A1" du fichier comportant le programme la feuille que vous souhaitez imprimmer (surement la date du jour).

Pour utiliser la réponse (brillante) de job, il vous suffit donc de créer un fichier, d'y ajouter la macro, de vérifier que les conditions soient les bonnes (répertoire et chemin) et le tour est jouer. Ensuite, un petit bouton, que l'on associe à la macro.

Avez-vous besoin de plus d'aide ?
 

job75

XLDnaute Barbatruc
Re : Imprimer un feuillet par fichier automatiquement

Re, salut Odesta,

@ atetard : le travail que vous voulez faire nécessite une macro, pas d'autre solution pour automatiser, les macros sont faites pour ça.

Il faut donc que vous compreniez un peu comment elle fonctionne, j'ai mis des commentaires et Odesta les a lus pour vous :)

La macro est à mettre dans un Module : touches Alt+F11 => menu Insertion => Module et y coller la macro.

Pour créer un bouton et lui affecter une macro, faites une petite recherche sur le forum, c'est très simple.

Un petit détail encore : si chaque fichier porte le nom de l'utilisateur, vous pouvez dans la macro remplacer :

.CenterHeader = Environ("UserName") par :

.CenterHeader = nomfich

Edit : d'ailleurs Environ("UserName') ça n'allait pas du tout, je modifie mon post précédent.

A+
 
Dernière édition:

atetard

XLDnaute Nouveau
Re : Imprimer un feuillet par fichier automatiquement

J'ai trouve comment ajouter un module, maintenant je voudrais verification du contenu si possible de votre part :

D'avance, je pense etre trop paume pour pouvoir le faire par moi-meme mais si je tiens un bout du raisonnement, j'aprecierai beaucoup que vous me corrigiez... mais ne vous en faites pas ma vie sera supportable sans, si expliquer represente trop de temps pour vous. J'essayerai de me rencarder sur des sites tuto pour mieux comprendre au pire. Si vous en connaissez d'ailleurs...

Sub ImprimeFichiers()
Dim la je dois laisser les infos que vous avez donner comme telles?
Application.ScreenUpdating = False

On Error Resume Next
F = Range("A1") Je laisse A1 si je veux imprimer apartir de A1
chemin = N:\Shared Area\CREATIVE SERVICES\Workflow Docs
nomfich = N:\Shared Area\CREATIVE SERVICES\Workflow Docs\Workflow Bea.xls
While nomfich <> "" La je n'ai pas compris quoi ajouter
o = False
If IsError(Workbooks(Workflow Bea.xls).Name) Then
Workbooks.Open N:\Shared Area\CREATIVE SERVICES\Workflow Docs\Workflow Bea.xls
o = True
End If
Windows(Workflow Bea.xls).Visible = True
With Workbooks(Workflow Bea.xls).Sheets("28/2" nom du feuillet)
.Visible = True 'au cas où la feuille serait masquée, on l'affiche
With .PageSetup
.CenterHeader = Workflow Bea.xls 'mise en forme indispensable... ?
.FitToPagesWide = 1 'mise en forme facultative
.FitToPagesTall = 1 'mise en forme facultative
End With
.PrintOut
End With
If o Then ActiveWorkbook.Close False 'si le fichier a été ouvert, on le referme

Je ne sais pas quoi faire de la suite

nomfich = Dir 'fichier suivant du dossier
Wend
End Sub



MERCI A VOUS !
 

job75

XLDnaute Barbatruc
Re : Imprimer un feuillet par fichier automatiquement

Re,

Il n'y avait strictement rien d'autre à adapter que le chemin d'accès (en rouge) :

Code:
Sub ImprimeFichiers()
Dim F$, chemin$, nomfich$, o As Boolean
Application.ScreenUpdating = False
On Error Resume Next
F = Range("A1") 'la cellule A1 (à adapter)de la feuille active contient le nom de la feuille à imprimer
chemin = [COLOR="Red"]"N:\Shared Area\CREATIVE SERVICES\Workflow Docs"[/COLOR] 'ou un autre chemin d'accès du répertoire contenant les fichiers
nomfich = Dir(chemin & "\*.xls") '1er fichier du dossier
While nomfich <> ""
  o = False
  If IsError(Workbooks(nomfich).Name) Then 'si le fichier n'est pas déjà ouvert, on l'ouvre
    Workbooks.Open chemin & "\" & nomfich
    o = True
  End If
  Windows(nomfich).Visible = True 'au cas où la fenêtre serait masquée, on l'affiche
  With Workbooks(nomfich).Sheets(F)
    .Visible = True 'au cas où la feuille serait masquée, on l'affiche
    With .PageSetup
      .CenterHeader = nomfich 'mise en forme indispensable...
      .FitToPagesWide = 1 'mise en forme facultative
      .FitToPagesTall = 1 'mise en forme facultative
    End With
    .PrintOut 'impression de la feuille
  End With
  If o Then ActiveWorkbook.Close False 'si le fichier a été ouvert, on le referme
  nomfich = Dir 'fichier suivant du dossier
Wend
End Sub

Tous les fichiers du dossier sont traités successivement, pas besoin d'indiquer leurs noms, Excel les connait !

A+
 
Dernière édition:

atetard

XLDnaute Nouveau
Re : Imprimer un feuillet par fichier automatiquement

Ok super merci beaucoup.
Donc j'ai meme pas besoin de parametrer pour dire quelle feuillet imprimer. La formule fait qu'il imprime le dernier automatiquement ? :x
Jme sens bete d'un coup xD

Thx
 

Discussions similaires

Statistiques des forums

Discussions
312 844
Messages
2 092 759
Membres
105 528
dernier inscrit
GPGA45