Alex550445
XLDnaute Junior
Bonjour,
j'ai fait un programme pour imprimer seulement les lignes contenant A commander dans la colonne T ( mon tableau excel a 450 lignes). Ma macro est un peu longue a s'executer.
Comment faire pour la rendre plus rapide. Dois je utiliser le filtre automatique de ma colonne T ou ya t'il une autre solution ?
je vous joins mon prog
Merci
Private Sub Imprimer_Click()
Rows().Hidden = False
Columns().Hidden = False ' affiche toutes les colonnes
Range("A:A, C:J, P:Q, S:S, U:W").EntireColumn.Hidden = True ' masque colonnes A et C
PrinterDefault = ActivePrinter 'mémorise l'imprimante par défaut
MyDate = Format(Date, "dd-mm-yy") 'défini le format de la date
With ActiveSheet.PageSetup ' mise en page
.CenterHorizontally = True 'centre l'impression sur la feuille
.Orientation = xlLandscape ' format paysage
.Zoom = False
.FitToPagesWide = 1 ' agrandissement 100% largeur
.FitToPagesTall = 1 ' agrandissement 100% hauteur
End With
ActiveSheet.PageSetup.PrintArea = "" ' mise en page en-tête
With ActiveSheet.PageSetup
.RightHeader = "&""Arial,Gras""&11Commande du " & MyDate ' écrit : "commande du + date du jour" en en-tête de la feuille
End With
Dim n As Integer
Application.ScreenUpdating = False
For n = 3 To 450
If Cells(n, 20) <> "A commander" Then ' si la colonne 20 affiche A commander
Rows(n).Hidden = True ' masque les ligne différentes de à commander
End If ' et
Next n ' passe à la ligne suivante
ActiveSheet.Range("A2:T450").PrintOut , ActivePrinter:="Microsoft office document image writer" ' prend en compte les colonne A2 à T150 et imprime sur une imprimante défénie
For n = 2 To 450 'exclu la première ligne
Rows(n).Hidden = False ' affiche les lignes
Next n ' passe à la ligne suivante
Range("A:W").EntireColumn.Hidden = False 'affiche colonne A à W
Range("A1").Select 'selectionne la cellule A1 pour afficher correctement le tableau
Application.ActivePrinter = PrinterDefault 'remet l'imprimante du départ
Application.ScreenUpdating = True
End Sub
j'ai fait un programme pour imprimer seulement les lignes contenant A commander dans la colonne T ( mon tableau excel a 450 lignes). Ma macro est un peu longue a s'executer.
Comment faire pour la rendre plus rapide. Dois je utiliser le filtre automatique de ma colonne T ou ya t'il une autre solution ?
je vous joins mon prog
Merci
Private Sub Imprimer_Click()
Rows().Hidden = False
Columns().Hidden = False ' affiche toutes les colonnes
Range("A:A, C:J, P:Q, S:S, U:W").EntireColumn.Hidden = True ' masque colonnes A et C
PrinterDefault = ActivePrinter 'mémorise l'imprimante par défaut
MyDate = Format(Date, "dd-mm-yy") 'défini le format de la date
With ActiveSheet.PageSetup ' mise en page
.CenterHorizontally = True 'centre l'impression sur la feuille
.Orientation = xlLandscape ' format paysage
.Zoom = False
.FitToPagesWide = 1 ' agrandissement 100% largeur
.FitToPagesTall = 1 ' agrandissement 100% hauteur
End With
ActiveSheet.PageSetup.PrintArea = "" ' mise en page en-tête
With ActiveSheet.PageSetup
.RightHeader = "&""Arial,Gras""&11Commande du " & MyDate ' écrit : "commande du + date du jour" en en-tête de la feuille
End With
Dim n As Integer
Application.ScreenUpdating = False
For n = 3 To 450
If Cells(n, 20) <> "A commander" Then ' si la colonne 20 affiche A commander
Rows(n).Hidden = True ' masque les ligne différentes de à commander
End If ' et
Next n ' passe à la ligne suivante
ActiveSheet.Range("A2:T450").PrintOut , ActivePrinter:="Microsoft office document image writer" ' prend en compte les colonne A2 à T150 et imprime sur une imprimante défénie
For n = 2 To 450 'exclu la première ligne
Rows(n).Hidden = False ' affiche les lignes
Next n ' passe à la ligne suivante
Range("A:W").EntireColumn.Hidden = False 'affiche colonne A à W
Range("A1").Select 'selectionne la cellule A1 pour afficher correctement le tableau
Application.ActivePrinter = PrinterDefault 'remet l'imprimante du départ
Application.ScreenUpdating = True
End Sub