Bonjour a tous

Je viens de créer une macro par "tâtonnement" qui me permet pour chaque ligne d'un tableau de saisie de commande (commande CETA) d'extraire uniquement les produits présents. Ainsi j'obtiens un "bon de livraison" en aperçu avant impression pour chaque client avec les seuls produits commandé.
Cependant cette macro est très lente et malgré les discussions sur le sujet dans ce forum je n'arrive pas à l’accélérer. J'ai bien essayé d'enlever les "select" mais les "SpecialCells(xlCellTypeVisible)" me pose problème.

Voici la macro:

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
Sub essai()
Application.ScreenUpdating = False
 
 
For i = 3 To Sheets("Commande CETA").[A65000].End(xlUp).Row
Range("compteur") = i - 2
 
Sheets("Feuil2").Range("C6:D150").ClearContents
 
Sheets("Commande CETA").Select
ActiveSheet.Calculate
If Cells(i, "B") <> 0 Then
Range("C" & i, "DP" & i).SpecialCells(xlCellTypeVisible).Select
Selection.Copy
Worksheets("Feuil2").Select
Range("D6").PasteSpecial Paste:=xlValues, Operation:=xlNone, SkipBlanks:= _
        False, Transpose:=True
Sheets("Commande CETA").Select
Range("Produit").SpecialCells(xlCellTypeVisible).Select
Selection.Copy
Worksheets("Feuil2").Select
Range("C6").PasteSpecial Paste:=xlValues, Operation:=xlNone, SkipBlanks:= _
        False, Transpose:=True
 
Range("C5").AutoFilter Field:=2, Criteria1:="<>"
 
 
Sheets("Feuil2").PrintPreview
End If
Next
Application.ScreenUpdating = True
 
End Sub
Je joins également le fichier (le bouton noir de la feuill2 lance la macro)Doc tranport2.xlsm

Pourriez vous m'indiquer la démarche a suivre.

Merci