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:
Je joins également le fichier (le bouton noir de la feuill2 lance la macro)Doc tranport2.xlsm
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
Pourriez vous m'indiquer la démarche a suivre.
Merci
Partager