Impression plus rapide
Résolu/Fermé
skk201
Messages postés
938
Date d'inscription
jeudi 11 septembre 2008
Statut
Membre
Dernière intervention
16 octobre 2016
-
27 juil. 2015 à 12:17
skk201 Messages postés 938 Date d'inscription jeudi 11 septembre 2008 Statut Membre Dernière intervention 16 octobre 2016 - 28 juil. 2015 à 10:06
skk201 Messages postés 938 Date d'inscription jeudi 11 septembre 2008 Statut Membre Dernière intervention 16 octobre 2016 - 28 juil. 2015 à 10:06
A voir également:
- Impression plus rapide
- Spouleur d'impression - Guide
- Acces rapide - Guide
- Adresse mail rapide - Guide
- Copie rapide - Télécharger - Gestion de fichiers
- Telechargement rapide - Télécharger - Téléchargement & Transfert
4 réponses
cs_Le Pivert
Messages postés
7904
Date d'inscription
jeudi 13 septembre 2007
Statut
Contributeur
Dernière intervention
14 août 2024
729
27 juil. 2015 à 15:32
27 juil. 2015 à 15:32
Bonjour,
Essaie ceci:
Essaie ceci:
Dim Ws As Worksheet For Each Ws In ThisWorkbook.Worksheets Ws.PrintOut Next
Patrice33740
Messages postés
8556
Date d'inscription
dimanche 13 juin 2010
Statut
Membre
Dernière intervention
2 mars 2023
1 779
27 juil. 2015 à 15:44
27 juil. 2015 à 15:44
Bonjour,
Souvent la lenteur provient de la mise en page (PageSetup).
Dans ce cas l'utilisation de la macro Xl4 permet un gain de temps notable.
Exemple de fonction (à adapter) :
Souvent la lenteur provient de la mise en page (PageSetup).
Dans ce cas l'utilisation de la macro Xl4 permet un gain de temps notable.
Exemple de fonction (à adapter) :
Private Sub MiseEnPage(Optional orientation As Byte = xlPortrait) ' Met en page la feuille active. L'utilisation la macro Excel4 PAGE.SETUP() est nettement ' plus rapide, elle envoie tous les arguments en une seule fois alors que PageSetup effectue ' un appel par valeur à définir. Syntaxe : ' PAGE.SETUP(en_tête, pied_pg, marge_gch, marge_dr, marge_haut, marge_bas, no_lig_col, ' quadrillage, centr_hor, centr_vert, orient, papier, échelle, no_pg, ordre_impr, ' cellules_nb, qualité, marge_en_tête, marge_pied_pg, annot, brouillon) ' ' Note : Pour afficher la boite de dialogue utiliser PAGE.SETUP?() avec la même syntaxe. ' ' 09/09/08 Patrice V3-1-03 ' Dim txt As String 'Texte de la macro Excel4 Dim marge_gauche As String 'Marge gauche Dim marge_droite As String 'Marge droite Dim marge_haut As String 'Marge haut Dim marge_bas As String 'Marge bas Dim marge_en_tête As String 'Marge en-tête Dim marge_pied_page As String 'Marge pied de page 'Arrêter l'actualisation automatique de l'écran et les calculs Application.ScreenUpdating = False Application.Calculation = xlCalculationManual 'Définir les marges (en cm) marge_gauche = Replace(CStr(Application.CentimetersToPoints(0.5) / 72), ",", ".") marge_droite = Replace(CStr(Application.CentimetersToPoints(0.5) / 72), ",", ".") marge_haut = Replace(CStr(Application.CentimetersToPoints(0.5) / 72), ",", ".") marge_bas = Replace(CStr(Application.CentimetersToPoints(1) / 72), ",", ".") marge_en_tête = Replace(CStr(Application.CentimetersToPoints(0.5) / 72), ",", ".") marge_pied_page = Replace(CStr(Application.CentimetersToPoints(0.4) / 72), ",", ".") 'Macro Excel 4 txt = "PAGE.SETUP(" txt = txt & "" & "," 'En tête txt = txt & """&L" & "&D" 'Pied de page gauche (date) txt = txt & "&C" & "&A" 'Pied de page centre (feuille) txt = txt & "&R" & "Page &P / &N""" & "," 'Pied de page droit (Page page/pages) txt = txt & marge_gauche & "," txt = txt & marge_droite & "," txt = txt & marge_haut & "," txt = txt & marge_bas & "," txt = txt & "False,False," 'En tête ligne & colonne, quadrillage txt = txt & "True,False," 'Centrage horizontal, vertical txt = txt & orientation & "," txt = txt & xlPaperA4 & "," 'Papier txt = txt & "100,""Auto"",1,False,," 'Echelle, no_pg, ordre_impr, N&B, qualité txt = txt & marge_en_tête & "," txt = txt & marge_pied_page & ")" Application.ExecuteExcel4Macro txt 'Restaurer l'actualisation automatique de l'écran et les calculs Application.ScreenUpdating = True Application.Calculation = xlCalculationAutomatic End Sub
skk201
Messages postés
938
Date d'inscription
jeudi 11 septembre 2008
Statut
Membre
Dernière intervention
16 octobre 2016
54
27 juil. 2015 à 16:10
27 juil. 2015 à 16:10
Donc appeler cette function avant le .PrintOut devrait rendre l'impression plus rapide ?
skk201
Messages postés
938
Date d'inscription
jeudi 11 septembre 2008
Statut
Membre
Dernière intervention
16 octobre 2016
54
27 juil. 2015 à 16:33
27 juil. 2015 à 16:33
J'ai appeler ta fonction avant le .PrintOut. et ça change rien du tout :)
Tu peux m'expliquer quel est l'emplacement qui lui est destiné ?
Tu peux m'expliquer quel est l'emplacement qui lui est destiné ?
Patrice33740
Messages postés
8556
Date d'inscription
dimanche 13 juin 2010
Statut
Membre
Dernière intervention
2 mars 2023
1 779
27 juil. 2015 à 17:35
27 juil. 2015 à 17:35
Non, tu n'avais pas fourni ton code, cette fonction permet uniquement d'accélérer la mise en page (si tu effectues une mise en page complexe, ce n'est pas le cas)
skk201
Messages postés
938
Date d'inscription
jeudi 11 septembre 2008
Statut
Membre
Dernière intervention
16 octobre 2016
54
28 juil. 2015 à 10:06
28 juil. 2015 à 10:06
Tampis alors, merci pour tout :)
skk201
Messages postés
938
Date d'inscription
jeudi 11 septembre 2008
Statut
Membre
Dernière intervention
16 octobre 2016
54
Modifié par skk201 le 27/07/2015 à 16:28
Modifié par skk201 le 27/07/2015 à 16:28
Je pense que j'ai pas été assez clair :)
Voici mon code :
Basiquement, il y a une feuille (LISTEFACTURE) qui contient des lignes avec des codes. Si cette ligne est visible (donc elle contient des informations) alors la feuille copie le code de la ligne dans une autre feuille. Cette feuille va alors automatiquement charger le détails qui est lié à ce code, et puis imprimer la feuille de détails.
Mais c'est justement cette ligne :
qui demande trop de temps à cause qu'un message d'information apparait.
J'ai essayé avec le code :
mais ça marche pas.
EDIT: D'après mes recherches cette fenêtre ne viens enfaite pas de Excel, mais directement de Windows. Donc il est apparament plus compliquer de la masquer.
Si une personne est interessée à savoir comment faire voici la source en anglais : https://www.mrexcel.com/board/threads/hide-now-printing-in-vba.13057/
Merci à tous pour votre aide.
--
Pensez mettre vos messages en [Résolu] et cliquer sur le + des conseil qui vous ont été utiles."
Voici mon code :
For Com = 2 To max 'Pour chaque ligne visible générer et imprimer une feuille If Sheets("LISTFACTURE").Rows(Com & ":" & Com).EntireRow.Hidden = False Then Sheets("DETAILCOMMUNE").Cells(21, 4) = Sheets("LISTFACTURE").Cells(Com, 1).Value 'Change la valeur de la cellule qui charge les données Sheets("DETAILCOMMUNE").PrintOut 'Imprime la feuille End If Me.add 'Avance la barre de progression dans l'Userform Next
Basiquement, il y a une feuille (LISTEFACTURE) qui contient des lignes avec des codes. Si cette ligne est visible (donc elle contient des informations) alors la feuille copie le code de la ligne dans une autre feuille. Cette feuille va alors automatiquement charger le détails qui est lié à ce code, et puis imprimer la feuille de détails.
Mais c'est justement cette ligne :
Sheets("DETAILCOMMUNE").PrintOut 'Imprime la feuille
qui demande trop de temps à cause qu'un message d'information apparait.
J'ai essayé avec le code :
Application.DisplayAlerts = False
mais ça marche pas.
EDIT: D'après mes recherches cette fenêtre ne viens enfaite pas de Excel, mais directement de Windows. Donc il est apparament plus compliquer de la masquer.
Si une personne est interessée à savoir comment faire voici la source en anglais : https://www.mrexcel.com/board/threads/hide-now-printing-in-vba.13057/
Merci à tous pour votre aide.
--
- Vous pouvez mettre en forme votre code grâce à la flèche en haut a droite de l'éditeur de texte.
Pensez mettre vos messages en [Résolu] et cliquer sur le + des conseil qui vous ont été utiles."
Patrice33740
Messages postés
8556
Date d'inscription
dimanche 13 juin 2010
Statut
Membre
Dernière intervention
2 mars 2023
1 779
27 juil. 2015 à 16:01
27 juil. 2015 à 16:01
Re,
As-tu essayé :
As-tu essayé :
Application.DisplayAlerts = False Sheets("DETAILCOMMUNE").PrintOut 'Imprime la feuille Application.DisplayAlerts = True