alias_2003
XLDnaute Occasionnel
Bonjour à tous,
J'ai un soucis avec une macro et j'aurais besoin de vos conseils...
J'ai écrit une macro qui me permet de :
1. filtrer les données non vides de la colonne Y du tableau1 présent dans la feuille 1 de mon classeur
2. une fois filtrée, les cellules de cette feuille1 sont copiées vers une feuille 2 du même classeur. Je peux alors travailler la mise en page et notamment supprimer les colonnes C à Y.
3. la feuille 2 est alors affichée en print preview.
Voici le code :
Je trouve que l'exécution de cette macro est trop lente (entre 6 et 12s...). Pourriez-vous m'aider à l'optimiser ?
Merci beaucoup,
Bon dimanche
J'ai un soucis avec une macro et j'aurais besoin de vos conseils...
J'ai écrit une macro qui me permet de :
1. filtrer les données non vides de la colonne Y du tableau1 présent dans la feuille 1 de mon classeur
2. une fois filtrée, les cellules de cette feuille1 sont copiées vers une feuille 2 du même classeur. Je peux alors travailler la mise en page et notamment supprimer les colonnes C à Y.
3. la feuille 2 est alors affichée en print preview.
Voici le code :
Code:
Sub Imprimer()
Dim DernLigne As Long
Dim i As Integer
On Error Resume Next
Application.EnableEvents = False
Application.ScreenUpdating = False
Application.Calculation = xlCalculationManual
Application.DisplayGridlines = False
Set Ws1 = Sheets("Feuille 1")
Set Ws2 = Sheets("Feuille 2")
Ws1.Visible = xlSheetVisible
W2Visible = xlSheetVisible
Ws2.Cells.ClearContents
Ws1.Activate
Ws1.ListObjects("Tableau1").Range.AutoFilter Field:=25, Criteria1:="<>"
Ws2.Select
Ws2.Cells.Delete
Ws1.Cells.Copy WsFDS.Range("A1")
With Ws2
DernLigne = .Range("A1048576").End(xlUp).Row
.Columns("C:Y").Delete
.ListObjects(1).Name = "Liste"
.ListObjects("Feuille 2").TableStyle = "TableStyleMedium1"
.Range("A1").Value = .Range("A1").Value & " " & .Range("B1").Value
.Range("A2").Value = .Range("A2").Value & " " & .Range("B2").Value
.Range("A3").Value = .Range("A3").Value & " " & .Range("B3").Value
.Range("B1:B3").ClearContents
.Range("A1:A3").HorizontalAlignment = xlLeft
.Range("A" & DernLigne + 3).Value = "BLABLA."
.Range("A" & DernLigne + 4).Value = "NOM:"
.Range("A" & DernLigne + 5).Value = "PRENOM:"
.Columns("A:B").AutoFit
With .PageSetup
.PrintArea = ActiveSheet.Range("A1:B" & DernLigne + 5).Address
.TopMargin = Application.InchesToPoints(1.1)
.Orientation = xlLandscape
.Draft = False
.PaperSize = xlPaperA4
.PrintTitleRows = "$1:$5"
End With
Userform1.Hide
.PrintPreview
.Visible = xlSheetVeryHidden
Userform1.Show 0
End With
Ws2.Cells.Delete
Ws1ListObjects("Tableau1").Range.AutoFilter Field:=25
Ws2.Cells.delete
Application.CutCopyMode = False
Application.Calculation = xlCalculationAutomatic
Application.ScreenUpdating = True
Application.EnableEvents = True
End Sub
Je trouve que l'exécution de cette macro est trop lente (entre 6 et 12s...). Pourriez-vous m'aider à l'optimiser ?
Merci beaucoup,
Bon dimanche