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

Le
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 _
:úlse, Transpose:úlse
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
Vidéos High-Tech et Jeu Vidéo
Téléchargements
Vos réponses
Gagnez chaque mois un abonnement Premium avec GNT : Inscrivez-vous !
Trier par : date / pertinence
Modeste
Le #4747931
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)))

MichDenis
Le #4747901
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
j-pascal
Le #4698501
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" 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




Publicité
Poster une réponse
Anonyme