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