Bonsoir à tous

Ce code me permet de séparer le contenu du Presse-papier (assemblé dans une autre application, et collé), puis de copier les champs dans plusieurs cellules sur la même (dernière) ligne non vide de ma feuille courante : il marche parfaitement bien et remplie sa fonction.

Mais il s'exécute en 6 secondes, alors que je m'attends à ce qu'il ne prenne que quelques dixièmes vu sa simplicité ....

Avez-vous une explication, une astuce pour accélérer la bestiole, voire un autre code ?

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
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
Sub Extract()
 
' MàJ Nouvelle Commande
 
Application.ScreenUpdating = False
 
Dim CDE() As String
Dim C1 As String
Dim C9 As Variant
Dim C4, C6 As Date
Dim C7 As Double
 
Range("I1").Select
ActiveSheet.Paste
 
If I1 = "" Then
MsgBox ("Rien dans le Presse-Papier : Recommencez.")
GoTo Suite:
End If
 
 
CDE() = Split(Range("I1").Value, "=")
C1 = CDE(0) 'colonne 1 Dossier
C4 = CDE(1) ' colonne 4Date Cde
C6 = CDE(2) 'colonne 6 Date Facture
C7 = CDE(3) 'colonne 7 MontantTTC
C9 = CDE(4) 'colonne 8 TVA
 
Sheets("Commandes").Select
Range("A65536").End(xlUp).Offset(1, 0).Select
Selection.Value = C1
 
Range("A65536").End(xlUp).Offset(0, 6).Select
Selection.Value = C7
Selection.NumberFormat = "#,##0.00"
 
Range("A65536").End(xlUp).Offset(0, 8).Select
Selection.Value = C9 / 100
 
Range("A65536").End(xlUp).Offset(0, 3).Select
Selection.Value = C4
Selection.NumberFormat = "dd/mm/yy;@"
 
Range("A65536").End(xlUp).Offset(0, 5).Select
Selection.Value = C6
Selection.NumberFormat = "dd/mm/yy;@"
 
MsgBox "Commande ajoutée - Achats à renseigner."
 
Suite:
 
Range("I1").Clear
 
Range("A65536").End(xlUp).Offset(0, 0).Select
 
Application.ScreenUpdating = True
 
End Sub
En remplaçant
Code : Sélectionner tout - Visualiser dans une fenêtre à part
Range("A65536").End(xlUp).Offset(0, 6).Select
par
Code : Sélectionner tout - Visualiser dans une fenêtre à part
ActiveCell.Offset(0, 6).Select
pour éviter de faire des A/R en bas du fichier, ça ne change pas grand chose ...

Merci pour votre aide.