Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

(vba) aperçu très très long ...

3 réponses
Avatar
j-pascal
Bonsoir,

Dans le code qui suit, je me demande si c'est la partie "aperçu" qui rend
l'exécution du code si lente. L'affichage de l'aperçu est très très lent à
venir ...
J'ai essayé avec "Application.EnableEvents = False" (au cas où !) mais ça ne
change rien !

'------------------
Private Sub Voir_Synthèse_Click()

Dim SynthPlageExport As Range
Dim ZoneImpression As Variant '?
Dim reponse3 As Integer

Unload Menu

Application.ScreenUpdating = False

Range("A4:M270").Copy
Range("A280").PasteSpecial Paste:=xlPasteValues, Operation:=xlNone,
SkipBlanks _
:=False, Transpose:=False
Application.CutCopyMode = False

Range("A280:M546").Sort Key1:=Range("A280"), Order1:=xlDescending,
Key2:=Range( _
"B280"), Order2:=xlAscending, Header:=xlNo, OrderCustom:=1,
MatchCase:= _
False, Orientation:=xlTopToBottom, DataOption1:=xlSortNormal,
DataOption2 _
:=xlSortNormal

ZoneImpression = Range("B275").Value

ActiveSheet.PageSetup.PrintArea = ZoneImpression

With ActiveSheet.PageSetup

.LeftHeader = "&8TOTO" 'à adapter ...
.CenterHeader = "&10ZAZA"
.RightHeader = "&8éd° du &D"
.CenterHorizontally = True
.CenterVertically = False 'ou True !
.Orientation = xlPortrait
.FitToPagesWide = 1
.FitToPagesTall = 1

.LeftMargin = Application.InchesToPoints(0.4)
.RightMargin = Application.InchesToPoints(0.4)
.TopMargin = Application.InchesToPoints(0.9)
.BottomMargin = Application.InchesToPoints(0.4)
.HeaderMargin = Application.InchesToPoints(0.5)
.FooterMargin = Application.InchesToPoints(0.5)

End With

ActiveWindow.SelectedSheets.PrintPreview

Application.ScreenUpdating = True

ActiveWindow.ScrollRow = 4

End Sub
'------------------

Merci d'avance pour vos lumières ...

--
Cordialement @+
JP

3 réponses

Avatar
Modeste
Bonsour® j-pascal avec ferveur ;o))) vous nous disiez :

Bonsoir,

Dans le code qui suit, je me demande si c'est la partie "aperçu" qui
rend l'exécution du code si lente. L'affichage de l'aperçu est très
très lent à venir ...
c'est toute la partie PageSetup qui est la cause de ce probleme... :-(((

elimine toutes les instructions qui redefinissent le parametrage par défaut de
ton imprimante
en ne conservant que celle qui change réellement, cela devrait s'améliorer...

sinon il faut envisager l'utilisation de macro EXCEL 4
le MVP australien John Green avait parlé de ceci :
http://usenet.p2preactor.com/index-t-1339095.html

@+
;o)))

Avatar
MichDenis
Au lieu de définir ta mise en page dans ta macro par
ces lignes de code :

Utilise plutôt la commande Fichier / Mise en page ->
lorsque cette dernière respectera tous tes désirs,
sauvegarde ton fichier....la mise en page sera aussi
sauvegardé avec les données ... et lorsque tu appeleras
la commande worksheets("Feuil1").PrintPReview , tu
auras la même présentation que celle que tu avais défini.

Attention, la mise en page est liée à une feuille précise et s'appliquera
seulement à cette feuille et non à tout le classeur.

PS. Tu peux exécuter ce bout de code seule dans une procédure
et enregistrer ton fichier par la suite... le résultat sera le même
N'oublie pas de sélectionner la feuille désirée avant d'exécuter
la procédure.
'-----------------------------
With ActiveSheet.PageSetup

.LeftHeader = "&8TOTO" 'à adapter ...
.CenterHeader = "&10ZAZA"
.RightHeader = "&8éd° du &D"
.CenterHorizontally = True
.CenterVertically = False 'ou True !
.Orientation = xlPortrait
.FitToPagesWide = 1
.FitToPagesTall = 1

.LeftMargin = Application.InchesToPoints(0.4)
.RightMargin = Application.InchesToPoints(0.4)
.TopMargin = Application.InchesToPoints(0.9)
.BottomMargin = Application.InchesToPoints(0.4)
.HeaderMargin = Application.InchesToPoints(0.5)
.FooterMargin = Application.InchesToPoints(0.5)

End With
'-----------------------------

Tu as un fichier exemple que j'ai commis sur le site de Misange concernant
cette problématique cité par Modeste : l'utilisation de macro EXCEL 4
Avatar
j-pascal
Bonsoir,

Merci pour ton conseil ... que je n'ai pas manqué de mettre en pratique. Le
résultat est effectivement très concluant.
Je reste surpris de la longueur d'exécution de cette partie du code !
y-a-t-il une explication simple ... pour un néophyte en vba ?

JP


"MichDenis" a écrit dans le message de news:
Op%
Au lieu de définir ta mise en page dans ta macro par
ces lignes de code :

Utilise plutôt la commande Fichier / Mise en page ->
lorsque cette dernière respectera tous tes désirs,
sauvegarde ton fichier....la mise en page sera aussi
sauvegardé avec les données ... et lorsque tu appeleras
la commande worksheets("Feuil1").PrintPReview , tu
auras la même présentation que celle que tu avais défini.

Attention, la mise en page est liée à une feuille précise et s'appliquera
seulement à cette feuille et non à tout le classeur.

PS. Tu peux exécuter ce bout de code seule dans une procédure
et enregistrer ton fichier par la suite... le résultat sera le même
N'oublie pas de sélectionner la feuille désirée avant d'exécuter
la procédure.
'-----------------------------
With ActiveSheet.PageSetup

.LeftHeader = "&8TOTO" 'à adapter ...
.CenterHeader = "&10ZAZA"
.RightHeader = "&8éd° du &D"
.CenterHorizontally = True
.CenterVertically = False 'ou True !
.Orientation = xlPortrait
.FitToPagesWide = 1
.FitToPagesTall = 1

.LeftMargin = Application.InchesToPoints(0.4)
.RightMargin = Application.InchesToPoints(0.4)
.TopMargin = Application.InchesToPoints(0.9)
.BottomMargin = Application.InchesToPoints(0.4)
.HeaderMargin = Application.InchesToPoints(0.5)
.FooterMargin = Application.InchesToPoints(0.5)

End With
'-----------------------------

Tu as un fichier exemple que j'ai commis sur le site de Misange concernant
cette problématique cité par Modeste : l'utilisation de macro EXCEL 4