Impression plus rapide
Résolu
skk201
Messages postés
942
Date d'inscription
Statut
Membre
Dernière intervention
-
skk201 Messages postés 942 Date d'inscription Statut Membre Dernière intervention -
skk201 Messages postés 942 Date d'inscription Statut Membre Dernière intervention -
Bonjour à tous j'aurai besoin de votre avis sur cette discution.
J'ai réalisé un classeur Excel qui génénère et imprime environs 200 feuilles.
Imprimer ces 200 feuilles pour le classeur excel prend environs 10 minutes. Je voulais amélioré le temps d'impression donc j'ai commencé à annalyser mon code pour trouver quel partie était gourmande en temps.
Il c'est avéré que la partie la plus goumande était la ligne qui lance l'impression. (Je pense à cause que Excel affiche une petite fenêtre durant quelques secondes pour annoncé l'impression de la page.)
Ma question est : est-ce qu'il y a une manière d'optimisé ce temps d'impression à votre avis ? En masquant cette fenêtre d'impression ou qqchose comme ça ? Ou en imprimant toutes les feuilles d'un coup au lieu de les imprimer une par une ?
Merci de vos avis !
Bonne jourée
--
Pensez mettre vos messages en [Résolu] et cliquer sur le + des conseil qui vous ont été utiles."
J'ai réalisé un classeur Excel qui génénère et imprime environs 200 feuilles.
Imprimer ces 200 feuilles pour le classeur excel prend environs 10 minutes. Je voulais amélioré le temps d'impression donc j'ai commencé à annalyser mon code pour trouver quel partie était gourmande en temps.
Il c'est avéré que la partie la plus goumande était la ligne qui lance l'impression. (Je pense à cause que Excel affiche une petite fenêtre durant quelques secondes pour annoncé l'impression de la page.)
Ma question est : est-ce qu'il y a une manière d'optimisé ce temps d'impression à votre avis ? En masquant cette fenêtre d'impression ou qqchose comme ça ? Ou en imprimant toutes les feuilles d'un coup au lieu de les imprimer une par une ?
Merci de vos avis !
Bonne jourée
--
- 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."
A voir également:
- Impression plus rapide
- Spouleur d'impression - Guide
- Acces rapide - Guide
- Impression livret a5 - Guide
- Copie rapide - Télécharger - Gestion de fichiers
- Telechargement rapide - Télécharger - Téléchargement & Transfert
4 réponses
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
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."