Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

Couper/coller Comparaison de temps

9 réponses
Avatar
Le Nordiste
Bonjour tertous,

Je cherche =E0 gagner du temps de traitement pour copier 2000 lignes de
"Feuil2" vers "Feuil1"
Je n'ai pas utilis=E9 de select Feuil1 et select feuil2 altern=E9s

J'ai r=E9alis=E9 l'essai avec les deux lignes ci-dessous

A)
Worksheets("Feuil2").Cells(Cellule, 1).EntireRow.Cut _
Worksheets("Feuil1").Cells(5, 1).EntireRow

B)
Sheets("Feuil2").Cells(Cellule, 1).EntireRow.Cut _
Destination:=3DSheets("Feuil1").Cells(5, 1)

les r=E9sultats sont :

Formule ScreenUpdating =3D True ScreenUpdating =3D True
A 55 s 21 s
B 39 s 16 s


Ce qui confirme que le r=E9fraichissement =E9cran prends du temps et que
le choix du code peut =E9tre significatif si les quantit=E9s =E0 traiter
sont grandes.

Le Nordiste

9 réponses

Avatar
Jacky
Bonjour,
Je cherche à gagner du temps de traitement pour copier 2000 lignes
Un code du genre ci-dessous peut-être:

'---
[feuil1!a1:d2000].Copy [feuil2!a1]
'-----
Salutations
JJ

"Le Nordiste" a écrit dans le message de
news:
Bonjour tertous,

Je cherche à gagner du temps de traitement pour copier 2000 lignes de
"Feuil2" vers "Feuil1"
Je n'ai pas utilisé de select Feuil1 et select feuil2 alternés

J'ai réalisé l'essai avec les deux lignes ci-dessous

A)
Worksheets("Feuil2").Cells(Cellule, 1).EntireRow.Cut _
Worksheets("Feuil1").Cells(5, 1).EntireRow

B)
Sheets("Feuil2").Cells(Cellule, 1).EntireRow.Cut _
Destination:=Sheets("Feuil1").Cells(5, 1)

les résultats sont :

Formule ScreenUpdating = True ScreenUpdating = True
A 55 s 21 s
B 39 s 16 s


Ce qui confirme que le réfraichissement écran prends du temps et que
le choix du code peut étre significatif si les quantités à traiter
sont grandes.

Le Nordiste

Avatar
michdenis
Bonjour Jacky,

Pourquoi pas alors ceci : tu devrais gagner au moins quelques nanosecondes
chères à AV ...;-))

Range("feuil1!a1:d2000").Copy Range("feuil2!a1")


Salutations!



"Jacky" a écrit dans le message de news:
Bonjour,
Je cherche à gagner du temps de traitement pour copier 2000 lignes
Un code du genre ci-dessous peut-être:

'---
[feuil1!a1:d2000].Copy [feuil2!a1]
'-----
Salutations
JJ

"Le Nordiste" a écrit dans le message de
news:
Bonjour tertous,

Je cherche à gagner du temps de traitement pour copier 2000 lignes de
"Feuil2" vers "Feuil1"
Je n'ai pas utilisé de select Feuil1 et select feuil2 alternés

J'ai réalisé l'essai avec les deux lignes ci-dessous

A)
Worksheets("Feuil2").Cells(Cellule, 1).EntireRow.Cut _
Worksheets("Feuil1").Cells(5, 1).EntireRow

B)
Sheets("Feuil2").Cells(Cellule, 1).EntireRow.Cut _
Destination:=Sheets("Feuil1").Cells(5, 1)

les résultats sont :

Formule ScreenUpdating = True ScreenUpdating = True
A 55 s 21 s
B 39 s 16 s


Ce qui confirme que le réfraichissement écran prends du temps et que
le choix du code peut étre significatif si les quantités à traiter
sont grandes.

Le Nordiste

Avatar
AV
Pffff....

| Pourquoi pas alors ceci : tu devrais gagner au moins quelques nanosecondes
| chères à AV ...;-))|
| Range("feuil1!a1:d2000").Copy Range("feuil2!a1")

A mon avis on va plutôt les perdre ... les nanosecondes ... avec la saisie de
Range(...
;-)
AV
Avatar
Jacky
Bonjour Denis

Voudrais-tu dire que celle-là:
Range("feuil1!a1:d2000").Copy Range("feuil2!a1")
est plus rapide que celle-ci:

[feuil1!a1:d2000].Copy [feuil2!a1]


??
JJ

"michdenis" a écrit dans le message de
news:
Bonjour Jacky,

Pourquoi pas alors ceci : tu devrais gagner au moins quelques nanosecondes
chères à AV ...;-))

Range("feuil1!a1:d2000").Copy Range("feuil2!a1")


Salutations!



"Jacky" a écrit dans le message de news:


Bonjour,
Je cherche à gagner du temps de traitement pour copier 2000 lignes
Un code du genre ci-dessous peut-être:

'---
[feuil1!a1:d2000].Copy [feuil2!a1]
'-----
Salutations
JJ

"Le Nordiste" a écrit dans le message de
news:
Bonjour tertous,

Je cherche à gagner du temps de traitement pour copier 2000 lignes de
"Feuil2" vers "Feuil1"
Je n'ai pas utilisé de select Feuil1 et select feuil2 alternés

J'ai réalisé l'essai avec les deux lignes ci-dessous

A)
Worksheets("Feuil2").Cells(Cellule, 1).EntireRow.Cut _
Worksheets("Feuil1").Cells(5, 1).EntireRow

B)
Sheets("Feuil2").Cells(Cellule, 1).EntireRow.Cut _
Destination:=Sheets("Feuil1").Cells(5, 1)

les résultats sont :

Formule ScreenUpdating = True ScreenUpdating = True
A 55 s 21 s
B 39 s 16 s


Ce qui confirme que le réfraichissement écran prends du temps et que
le choix du code peut étre significatif si les quantités à traiter
sont grandes.

Le Nordiste






Avatar
michdenis
Bonjour Jacky,

Théoriquement oui.

Il ne faut pas oublier que les crochets droits représentent la fonction Evaluate()

Excel doit d'abord évaluer le contenu (résoudre la fonction "Evaluate()"
de ce qu'il y a entre les crochets droits avant d'effectuer la copie. Cette opération
n'a pas lieu avec la syntaxe "Range"
En conséquence, il devrait y avoir une différence en temps car plus d'opérations à effectuer !


Salutations!


"Jacky" a écrit dans le message de news:
Bonjour Denis

Voudrais-tu dire que celle-là:
Range("feuil1!a1:d2000").Copy Range("feuil2!a1")
est plus rapide que celle-ci:

[feuil1!a1:d2000].Copy [feuil2!a1]


??
JJ

"michdenis" a écrit dans le message de
news:
Bonjour Jacky,

Pourquoi pas alors ceci : tu devrais gagner au moins quelques nanosecondes
chères à AV ...;-))

Range("feuil1!a1:d2000").Copy Range("feuil2!a1")


Salutations!



"Jacky" a écrit dans le message de news:


Bonjour,
Je cherche à gagner du temps de traitement pour copier 2000 lignes
Un code du genre ci-dessous peut-être:

'---
[feuil1!a1:d2000].Copy [feuil2!a1]
'-----
Salutations
JJ

"Le Nordiste" a écrit dans le message de
news:
Bonjour tertous,

Je cherche à gagner du temps de traitement pour copier 2000 lignes de
"Feuil2" vers "Feuil1"
Je n'ai pas utilisé de select Feuil1 et select feuil2 alternés

J'ai réalisé l'essai avec les deux lignes ci-dessous

A)
Worksheets("Feuil2").Cells(Cellule, 1).EntireRow.Cut _
Worksheets("Feuil1").Cells(5, 1).EntireRow

B)
Sheets("Feuil2").Cells(Cellule, 1).EntireRow.Cut _
Destination:=Sheets("Feuil1").Cells(5, 1)

les résultats sont :

Formule ScreenUpdating = True ScreenUpdating = True
A 55 s 21 s
B 39 s 16 s


Ce qui confirme que le réfraichissement écran prends du temps et que
le choix du code peut étre significatif si les quantités à traiter
sont grandes.

Le Nordiste






Avatar
AV
| Il ne faut pas oublier que les crochets droits représentent la fonction
Evaluate()

Ne serait-ce point la "méthode" et non la fonction Evaluate ?
Ouarfff, ouarfff....

AV
Avatar
Le Nordiste
Merci pour vos idées,

En fait je ne veux pas copier un bloc (A1:D2000) multiligne en un point
donné,
mais une ligne à la fois à insérer : est il possible d'avoir quelque
chose comme :

Range("feuil1!A1:BA1").Copy Range("feuil2!A22").insert

J'ai essayé mais sans succés, il reste bien la solution "lourde" :

Range("feuil1!A5").EntireRow.Insert
Range("FACTURES!A2:D2").Copy Range("feuil1!A5")

Merci pour votre aide.

Le Nordiste.
Avatar
Jacky
Re..
Essaie un truc du genre...
'---------
Sheets("FACTURES").Rows(1).Copy
Sheets("Feuil1").Rows(5).Insert Shift:=xlDown
'---------
Salutations
JJ

"Le Nordiste" a écrit dans le message de
news:
Merci pour vos idées,

En fait je ne veux pas copier un bloc (A1:D2000) multiligne en un point
donné,
mais une ligne à la fois à insérer : est il possible d'avoir quelque
chose comme :

Range("feuil1!A1:BA1").Copy Range("feuil2!A22").insert

J'ai essayé mais sans succés, il reste bien la solution "lourde" :

Range("feuil1!A5").EntireRow.Insert
Range("FACTURES!A2:D2").Copy Range("feuil1!A5")

Merci pour votre aide.

Le Nordiste.
Avatar
michdenis
| Ne serait-ce point la "méthode" et non la fonction Evaluate ?

Oui, oui tu as raison. Une méthode de l'objet application
application.Evaluate( )

Est-ce que cela change le fond de la donne ? ;-)


Salutations!