XL 2010 ralentissement programme

gh4

XLDnaute Occasionnel
bonjour à tous,
je cherche à cacher des lignes et des colonnes pour créer un pdf.
le masquage est tres tres rapide jusqu'a enregistrement en pdf

Application.ActivePrinter = "Microsoft Print to PDF sur Ne03:"
ActiveWindow.SelectedSheets.PrintOut Copies:=1, ActivePrinter:= _
"Microsoft Print to PDF sur Ne03:", PrintToFile:=True, Collate:=True

puis apres je refais apparaitre les lignes et les colonnes et la c'est super lent !!!!!!
avez vous une idée?
par avance merci
cdt
 
Solution
Re

@gh4
Le déjeuner est avalé, le café fume dans la tasse
Donc j'ai le temps pour la macro qui remets les choses dans l'état original
VB:
Sub R_A_Z()
Dim F As Worksheet: Set F = ActiveSheet
On Error Resume Next
Selection.ClearOutline: F.ShowAllData: F.AutoFilterMode = 0
End Sub
NB: test OK sur mon PC avec ton fichier Exemple.

Staple1600

XLDnaute Barbatruc
Bonsoir le fil,

Pourquoi ne pas simplement définir une zone d'impression ?
Voir cet exemple
VB:
Sub Macro1() 'test OK
Dim strPath$
strPath = "C:\Users\STAPLE\Documents\" 'adapter le chemin
ActiveSheet.PageSetup.PrintArea = "$A$1:$C$25"
ActiveSheet.ExportAsFixedFormat _
        Type:=xlTypePDF, _
        Filename:=strPath & "zaza.pdf", _
        Quality:=xlQualityStandard, _
        IgnorePrintAreas:=False, _
        OpenAfterPublish:=False
End Sub
 

Staple1600

XLDnaute Barbatruc
Bonsoir youy(BJ)

C'est parce que je l'utilise toujours qu'elle est super bonne ;)
Et que donc je la poste sur XLD.

Reste une question existentielle
Pourquoi remplir des colonnes avec des données si c'est pour les masquer ?
(ou les exclure d'une zone d'impression)
;)
 

gh4

XLDnaute Occasionnel
Bonsoir youy(BJ)

C'est parce que je l'utilise toujours qu'elle est super bonne ;)
Et que donc je la poste sur XLD.

Reste une question existentielle
Pourquoi remplir des colonnes avec des données si c'est pour les masquer ?
(ou les exclure d'une zone d'impression)
;)
merci pour vos suggestions je vais les tester pour voir si cela change le problème et je reviens vers vous pour vous dire.
pour info je masque des colonnes et des lignes pour ne pas les mettre a disposition de celui qui a uniquement accès au pdf.
cdt
 

gh4

XLDnaute Occasionnel
retour d'info
pour application.ScreenUpdating cela ne change rien
pour la solution de staple1600 le problème est le nombre de lignes à cachées
ci joint un fichier avec le tableau et la macro pour voir le souci de ralentissement après l'enregistrement PDF.
le masquage dure moins de 1 seconde le démasquage nettement plus long.
si l'on refait un
2eme PDF le masquage est très long et le démasquage aussi.
 

Pièces jointes

  • test.xls
    113 KB · Affichages: 1

Staple1600

XLDnaute Barbatruc
Re

@gh4
Voici donc le code en suivant mon idée exposée dans le message#3
(testé sur ton fichier exemple)
Enrichi (BBcode):
Sub test_ok()
Application.ScreenUpdating = False
    Columns("E:F").Columns.Group
    ActiveSheet.Outline.ShowLevels RowLevels:=0, ColumnLevels:=1
    ActiveSheet.Range("$B$2:$B$426").AutoFilter Field:=1, Criteria1:="=FIN", Operator:=xlOr, Criteria2:="=P"
    Application.PrintCommunication = False
    ActiveSheet.PageSetup.PrintArea = "$B$1:$I$426"
    Application.PrintCommunication = False
    With ActiveSheet.PageSetup
        .PrintTitleRows = "$1:$2"
        .LeftMargin = Application.InchesToPoints(0.78740157480315)
        .RightMargin = Application.InchesToPoints(0.78740157480315)
        .TopMargin = Application.InchesToPoints(0.5)
        .BottomMargin = Application.InchesToPoints(0.5)
        .PrintQuality = 600
        .CenterHorizontally = True
        .CenterVertically = True
        .Orientation = xlLandscape
        .Draft = False
        .PaperSize = xlPaperA3
        .FirstPageNumber = xlAutomatic
        .Order = xlDownThenOver
        .BlackAndWhite = False
        .Zoom = 100
    End With
'NB: ICI adapter le chemin du dossier et nom du fichier PDF
    ActiveSheet.ExportAsFixedFormat Type:=xlTypePDF, Filename:="C:\Users\STAPLEDownloads\test.pdf", Quality:=xlQualityStandard, _
    IncludeDocProperties:=True, IgnorePrintAreas:=False, OpenAfterPublish:=False
End Sub
J'obtiens un PDF de deux pages
(selon tes critères : lignes P et colonnes bleue)
 

gh4

XLDnaute Occasionnel
Bonjour le fil

@gh4
Dans ma proposition, je ne masque rien
Je définis une zone d'impression

NB: Je ne vois même pas dans ton classeur trace d'une adaptation de ma proposition :rolleyes:

Re

@gh4
Voici donc le code en suivant mon idée exposée dans le message#3
(testé sur ton fichier exemple)
Enrichi (BBcode):
Sub test_ok()
Application.ScreenUpdating = False
    Columns("E:F").Columns.Group
    ActiveSheet.Outline.ShowLevels RowLevels:=0, ColumnLevels:=1
    ActiveSheet.Range("$B$2:$B$426").AutoFilter Field:=1, Criteria1:="=FIN", Operator:=xlOr, Criteria2:="=P"
    Application.PrintCommunication = False
    ActiveSheet.PageSetup.PrintArea = "$B$1:$I$426"
    Application.PrintCommunication = False
    With ActiveSheet.PageSetup
        .PrintTitleRows = "$1:$2"
        .LeftMargin = Application.InchesToPoints(0.78740157480315)
        .RightMargin = Application.InchesToPoints(0.78740157480315)
        .TopMargin = Application.InchesToPoints(0.5)
        .BottomMargin = Application.InchesToPoints(0.5)
        .PrintQuality = 600
        .CenterHorizontally = True
        .CenterVertically = True
        .Orientation = xlLandscape
        .Draft = False
        .PaperSize = xlPaperA3
        .FirstPageNumber = xlAutomatic
        .Order = xlDownThenOver
        .BlackAndWhite = False
        .Zoom = 100
    End With
'NB: ICI adapter le chemin du dossier et nom du fichier PDF
    ActiveSheet.ExportAsFixedFormat Type:=xlTypePDF, Filename:="C:\Users\STAPLEDownloads\test.pdf", Quality:=xlQualityStandard, _
    IncludeDocProperties:=True, IgnorePrintAreas:=False, OpenAfterPublish:=False
End Sub
J'obtiens un PDF de deux pages
(selon tes critères : lignes P et colonnes bleue)
merci beaucoup quand je teste je bloque sur
Application.PrintCommunication = False
 

Statistiques des forums

Discussions
312 211
Messages
2 086 299
Membres
103 172
dernier inscrit
Aurelyan