Petit problème de macro

toine59

XLDnaute Nouveau
Petit challenge pour tous nos amis fans de macro ::cool:

Pierre a sur son disque dur 10 fichiers excel qu'il souhaite imprimer. A l'ouverture de chaque fichier, un userform lui demande de sélectionner un mois de l'année qui modifie les colonnes d'affichage.

Il doit ensuite aller dans aperçu avant impression pour vérifier les paramètre qu'il désire : ajuste à 2 pages en hauteur et 1 page en largeur. Puis faire imprimer, sélectionner son imprimante et mettre dans les propriétés qu'il veut imprimer en couleur. Et il répète cette opération pour chacun de ses fichiers.


Mais Pierre est fénéant et se dit qu'il pourrait créer une macro qui ferait tout le boulot à sa place. Pierre a-t-til raison ? Si oui, quelle est la amcro qu'il devrait écrire ?

Récompense pour le premier qui trouve.
 

bond

XLDnaute Occasionnel
Re : Petit problème de macro

Pierre est fénéant et se dit qu'il pourrait créer une macro qui ferait tout le boulot à sa place. Pierre a-t-til raison ?
ben oui !
Mais moi, c'est pas Pierre, c'est James :cool:

Récompense pour le premier qui trouve
ça donne de l'appétit... faudrait un amuse bouche.

Peut être que Pierre devrait quand même commencer par l'enregsitrement automatique de macro, pour ensuite adapter le code qui viendra tout seul....
 

toine59

XLDnaute Nouveau
Re : Petit problème de macro

Ces petites machines que vous évoquez ont tout de même le émrite de réellement vous ravir quand vous gagnez... prevue que vous êtes moins couillons que les autres... Quand à la récompense, elle est toujours proportionnelle au talent et donc à la qualité de la réponse.

Pour les questions de précisions, appelons l'imprimante "PRINTER" et les fichiers concernés :

C:\Documents\Dossier1\Fichier 1
C:\Documents\Dossier2\Fichier 2
C:\Documents\Dossier3\Fichier 3
... et ainsi de suite

Ensuite, la question demande justement si l'idée de Pierre et réalisable... cela inclut qu'elle peut l'être en partie uniquement.
 

toine59

XLDnaute Nouveau
Re : Petit problème de macro

Pierre avait essayé de procéder par enregistrement mais minutieux comme il est il ne trouve pas cette macro trés propre...et est certain qu'il peut faire beaucoup plus court que répéter ce code 10 fois.

Application.ScreenUpdating = False
Workbooks.Open Filename:= _
"C:\Documents\Dossier1\Fichier 1.xlsm"
With Active.Sheet.UserForm1
Set Me.mois.Value = "mai 2011"
With ActiveSheet.PageSetup
.LeftHeader = ""
.CenterHeader = ""
.RightHeader = ""
.LeftFooter = ""
.CenterFooter = ""
.RightFooter = ""
.LeftMargin = Application.InchesToPoints(0.393700787401575)
.RightMargin = Application.InchesToPoints(0.196850393700787)
.TopMargin = Application.InchesToPoints(0.196850393700787)
.BottomMargin = Application.InchesToPoints(0.196850393700787)
.HeaderMargin = Application.InchesToPoints(0.196850393700787)
.FooterMargin = Application.InchesToPoints(0.196850393700787)
.PrintHeadings = False
.PrintGridlines = False
.PrintComments = xlPrintNoComments
.CenterHorizontally = False
.CenterVertically = False
.Orientation = xlPortrait
.Draft = False
.PaperSize = xlPaperA4
.FirstPageNumber = xlAutomatic
.Order = xlDownThenOver
.BlackAndWhite = False
.Zoom = False
.FitToPagesWide = 1
.FitToPagesTall = 10
.PrintErrors = xlPrintErrorsDisplayed
.OddAndEvenPagesHeaderFooter = False
.DifferentFirstPageHeaderFooter = False
.ScaleWithDocHeaderFooter = True
.AlignMarginsHeaderFooter = True
.EvenPage.LeftHeader.Text = ""
.EvenPage.CenterHeader.Text = ""
.EvenPage.RightHeader.Text = ""
.EvenPage.LeftFooter.Text = ""
.EvenPage.CenterFooter.Text = ""
.EvenPage.RightFooter.Text = ""
.FirstPage.LeftHeader.Text = ""
.FirstPage.CenterHeader.Text = ""
.FirstPage.RightHeader.Text = ""
.FirstPage.LeftFooter.Text = ""
.FirstPage.CenterFooter.Text = ""
.FirstPage.RightFooter.Text = ""
End With
Application.ActivePrinter = "PRINTER"
ExecuteExcel4Macro _
"PRINT(1,,,1,,FALSE,,,,,,2,""\\PRINTER:"",,TRUE,,FALSE)"
ActiveWindow.Close
Application.ScreenUpdating = True
End Sub
 

toine59

XLDnaute Nouveau
Re : Petit problème de macro

Bien vu Gaston, tu réponds à une partie de la question à savoir simplifier la macro d'enregistrement reste à solutionner (si cela est possible):

- préciser la valeur de Me.Mois.Value dans le UserForm1 de chaque fichier
- préciser que l'on veut imprimer en couleur
 

toine59

XLDnaute Nouveau
Re : Petit problème de macro

Cher Gaston,

Aprés toutes ses recherches, je pense que Pierre partage scepticisme sur la gestion de l'impression couleur par excel. Il se debrouillera donc pour gérer cela autrement ( il faut bien qu'il bosse un peu).

Quand au userform, il est identique dans chaque fichier et localisé dans le fichier. Voici un fichier pour te montrer ce que cela donne.
 

Pièces jointes

  • Le userform de pierre pour gaston.xlsm
    13.9 KB · Affichages: 46

toine59

XLDnaute Nouveau
Re : Petit problème de macro

Dim i As Integer
For i = 1 To UBound(Tablo)
Workbooks.Open Filename:=Tablo(i, 1) & "\" & Tablo(i, 2) & ".xlsx"
With Workbooks(Tablo(i, 2) & ".xlsx").UserForm1
Set .mois.Value = "mai 2011"
End With

J'ai corrigé les petits manques mais quand j'execute la macro , j'ai ce message d'erreur :

Cet objet ne gère pas cette propriété ou méthode (erreur 438)


:( :( :(
 

Discussions similaires

Statistiques des forums

Discussions
312 429
Messages
2 088 350
Membres
103 822
dernier inscrit
kader55