Erreur lors d'une boucle Copy-Paste

yeti_yeti

XLDnaute Junior
Bonjour,

J'ai une manip toute simple à faire: Copier des données d'un fichier et les coller dans un nouveau. Il y a environ 8000 données, donc j'ai recours à une macro. Je pensais qu'elle serait toute simple à réaliser mais je rencontre une erreur à chaque fois que je veux coller.

"Run-Time error '438': Object does not support this property or method"

Le bout de code qui provoque cette erreur est le suivant:

Code:
For i = 3 To 2000
If Workbooks("DN-2010.xls").Sheets("OL").Cells(i, 1) = ThisWorkbook.Sheets("OL").Cells(i, 1) Then
            
Workbooks("DN-2010.xls").Sheets("OL").Cells(i, 23).Copy
ThisWorkbook.Sheets("OL").Cells(i, 23).Paste

Else
End If
Next i

Je ne vois pas où il y a d'erreur même si la ligne qui est marquée comme étant fausse est la dernière (avec le .Paste)

Merci d'avance de votre aide.

A bientôt

YeTi
 

job75

XLDnaute Barbatruc
Re : Erreur lors d'une boucle Copy-Paste

Bonjour yeti_yeti, salut Pierrot :)

Mais pourquoi donc utiliser Paste ? Je pense que ceci devrait être plus rapide :

Code:
Set F1 = Workbooks("DN-2010.xls").Sheets("OL")
Set F2 = ThisWorkbook.Sheets("OL")
For i = 3 To 2000
  If F1.Cells(i, 1) = F2.Cells(i, 1) Then
    F1.Cells(i, 23).Copy F2.Cells(i, 23)
  Else 's'il y a une suite après Else...
  End If
Next

Et si l'on ne cherche à copier que les valeurs :

Code:
Set F1 = Workbooks("DN-2010.xls").Sheets("OL")
Set F2 = ThisWorkbook.Sheets("OL")
For i = 3 To 2000
  If F1.Cells(i, 1) = F2.Cells(i, 1) Then
    F2.Cells(i, 23) = F1.Cells(i, 23)
  Else 's'il y a une suite après Else...
  End If
Next

A+
 
Dernière édition:

yeti_yeti

XLDnaute Junior
Re : Erreur lors d'une boucle Copy-Paste

Merci Pierrot, ta dernière solution semble marcher!

@job75: j'utilise "Paste" pour coller les données que j'ai copié dans le 1er fichier... tu veux dire qu'avec ta solution Excel transférerait les données du premier fichier vers le deuxième sans jamais copier ou coller?
 

yeti_yeti

XLDnaute Junior
Re : Erreur lors d'une boucle Copy-Paste

Bonjour Job75,

La solution de Pierrot fonctionnait et je l'avais déjà testée/utilisée avant votre intervention, c'est pour cela que je ne l'avais pas essayé et que je posais simplement la question.

Mais afin de ne frustrer personne, j'ai testé votre solution qui, en plus de fonctionner parfaitement, le fait d'une manière beaucoup plus rapide.

Salutations,

YeTi
 

job75

XLDnaute Barbatruc
Re : Erreur lors d'une boucle Copy-Paste

Re,

j'ai testé votre solution qui, en plus de fonctionner parfaitement, le fait d'une manière beaucoup plus rapide.

Laquelle de mes 2 solutions utilisez-vous et sur combien de lignes ?

Je n'ai rien testé et, comme bien d'autres, je serai intéressé de connaître les durées d'exécution et celle avec Paste...

Pour mesurer la durée d'exécution, mettre en début de macro :

t = Timer

et en fin de macro :

MsgBox Timer - t

A+
 

Discussions similaires

Statistiques des forums

Discussions
312 843
Messages
2 092 748
Membres
105 520
dernier inscrit
Inconnuto