Ceci est une page optimisée pour les mobiles. Cliquez sur ce texte pour afficher la vraie page.

Code pour mise en page à toutes les feuilles qui ne fonctionne pas

  • Initiateur de la discussion monsieurPatate
  • Date de début
M

monsieurPatate

Guest
Bonsoir le forum,


J'ai écris une macro (voir plus bas) qui a pour objectif d'ajouter à toutes les feuilles les mêmes infos en bas de page.

Cependant, seul ma première page est correct !?
Rien apparaît sur les autres feuilles
Qu'est-ce qui me manque?

Sub ImpressionComplet()
Dim ws As Worksheet

Dim Msg, Style, Title, Help, Ctxt, Response, MyString
Msg = "Cette opération va lancer l'impression du plan d'affaires au complet. Souhaitez-vous continuer?" ' Définit le message.
Style = vbYesNo + vbQuestion + vbDefaultButton2
Title = "Impression du plan "
Response = MsgBox(Msg, Style, Title)
If Response = vbYes Then

Application.ScreenUpdating = False

For Each ws In Sheets

If ws.Visible Then ws.Select (False)

Next

With ActiveSheet.PageSetup
.LeftFooter = "Plan"
.CenterFooter = Feuil1.Range("b3")
.RightFooter = "Page &P de &N pages"
.PrintGridlines = False
.PrintComments = xlPrintNoComments
.CenterHorizontally = True
.Draft = False
.PaperSize = xlPaperLetter
.Order = xlDownThenOver
.BlackAndWhite = False
.Zoom = False
.FitToPagesWide = 1
.FitToPagesTall = False
End With

Application.ScreenUpdating = True
ActiveWorkbook.PrintOut
Else
Exit Sub
End If
End Sub

Merci et à bientôt
 
P

peper-eliot

Guest
Salut à tous

Et ça...? ça aide ou pas?

Sheets(Array("Feuil1", "Feuil2", "Feuil3")).Select
Sheets("Feuil1").Activate
With ActiveSheet.PageSetup
.CenterFooter = "ce que je veux mettre en pied de page"
end with
 
M

monsieurPatate

Guest
Allo peper-eliot, le forum,

je n'utilise pas 'Sheets(Array(...)).select' car je ne connais pas le nom ni le nombre de feuilles à imprimer.

Mon code est semblable au tien et devrait fonctionner car je sélectionne toutes les feuilles puis lui applique un bas de page... sauf que ça marche pas

merci quand même
 
P

peper-eliot

Guest
Dans ton code, ta mise en page ne s'applique qu'à Active Sheet

Il faut selectionnner toutes les feuilles
Sheets("Feuil1", "Feuil2", "Feuil3").Select
puis effectuer ta mise en page sur une feuille
Sheets("Feuil1").Activate
With ActiveSheet.PageSetup
.CenterFooter = "ce que je veux mettre en pied de page"
end with
c'est cette mise en page qui sera repportée sur l'ensenble des feuilles pré-sélectionnées

@+ peper-eliot
 
M

monsieurPatate

Guest
Salut tous,

J'veux bien mais si on essaie de rouler la macro, ça ne fonctionne que sur une seule feuille.
Pour tester, j'ai utilisé l'enregistreur de macro; lorsqu'on exécute l'opération "à bras", tout semble bien fonctionner. Mais en lançant à nouveau la macro enregistrée (en s'assurant de tout enlever les infos précédemment inscrites), même la macro enregistrée n'applique pas les changements à toutes les feuilles.


Bye!
 
P

peper-eliot

Guest
YAKA rouler et ça fonctionnne...

If Response = vbYes Then

Application.ScreenUpdating = False
Sheets(Array("Feuil1", "Feuil2", "Feuil3")).Select
Sheets("Feuil1").Activate
With ActiveSheet.PageSetup
.LeftFooter = "Plan"
.CenterFooter = Feuil1.Range("b3")
.RightFooter = "Page &P de &N pages"
' ect...
End With

Application.ScreenUpdating = True
ActiveWorkbook.PrintOut
End If
End Sub

Et si ça fonctionne pas... j'y perd mon latin

@+ peper-eliot
 
P

peper-eliot

Guest
Excuse...

J'avais pas lu que tu ne connaissais ni le nombre, ni le nom des feuilles.

Donc...
il faut inclure une procédure qui te ramenera ces éléments

ça existe, je l'ai déjà lu sur le forum...

@+ peper-eliot
 
P

peper-eliot

Guest
Bon... et comme VBA n'est pas à sens unique... on contourne et on recommence
Voili voilà...
La mise en page se fait pour chaque feuille et est donc incluse dans la boucle "For Each ... Next"
L'impression est globale

Sub YAKA_Rouler()
'
' Macro enregistrée le 14/05/2004 par @+ peper-eliot
'
Dim Sht As Worksheet
Dim Reponse As Byte

Reponse = MsgBox("Cette opération va lancer l'impression du plan d'affaires au complet." & vbCr & vbCr _
& "Souhaitez-vous continuer?", vbInformation + vbYesNo, "Impression du plan")

If Reponse = 6 Then '6 correspond à VbYes
Application.ScreenUpdating = False
For Each Sht In ActiveWorkbook.Worksheets
If Sht.Visible Then
Sht.Select
With ActiveSheet.PageSetup
.LeftFooter = "Plan"
.CenterFooter = Feuil1.Range("b3")
.RightFooter = "Page &P de &N pages"
.CenterHorizontally = True
.Zoom = False
.FitToPagesWide = 1
.FitToPagesTall = False
End With
End If
Next Sht

Application.ScreenUpdating = True
ActiveWorkbook.PrintOut Copies:=1, Collate:=True

Else
Exit Sub
End If
End sub

@+ peper-eliot
 
@

@+Thierry

Guest
Bonsoir Eliot, Mr Potatoes,

Très très rapidement, j'ai survolé....

Mais Pourquoi tant de "Select" partout !! ça ralentit tout !! lol

Sub MassMiseEnPage()
Dim WS As Worksheet

For Each WS In Worksheets

With WS.PageSetup

.LeftFooter = "Plan"
.CenterFooter = Feuil1.Range("b3")
.RightFooter = "Page &P de &N pages"
.CenterHorizontally = True
.Zoom = False
.FitToPagesWide = 1
.FitToPagesTall = False
End With
Next WS

End Sub

Bonne soirée
@+Thierry
 
P

peper-eliot

Guest
Re: Code pour mise en page à toutes les feuilles SANS SELECT SVP!

Salut le forum

Juste pour m'excuser de n'avoir pris connaissance du dernier commentaire que ce soir.

Et j'ai bien rit ... parceque, à propos de "select pas beau et lent", le soir ou j'ai apporté ma modeste contribution, le 15/05 à 0h08, je me suis fait 'remonter les bretelles' par ZON sur le chat à 1h20!

J'ai gardé copie de l'échange :

peper-eliot > ZON> ExcuZe ZON, but plaese… Comment je peux éviter les select 'pas beau et lent'
peper-eliot > Autrement dit, comment agir sur un objet sans le selectionner
peper-eliot > Je sens que je vais mal dormir… ça me tourmente déjà
peper-eliot > lol
ZON > dim Feuille as string
ZON > for each Feuille in array("Feuil","F2",...)
ZON > with sheets(feuille)
ZON > par exemple
ZON > ou encore
ZON > dim Feuille as worksheet
ZON > for each Feuille in tonclassuer.worksheets
ZON > with Feuille
ZON > mias bon je pinaille
(...)
peper-eliot > bon, ben j'en ai la machoire qui tombe.... lol
ZON > tu verras on apprend vite en VBA

Et 2 jours après, c'est au tour de @+Thierry de m'en 'remettre une couche'... Lol

Alors, avec tout ça, si je progresse pas...

Merci à vous tous

@+
peper-eliot
 
Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…