Précédent   Forum des professionnels en informatique > Logiciels > Microsoft Office > Excel > Macros et VBA Excel
Macros et VBA Excel Vos questions relatives aux macros Excel, à l'utilisation de VBA et à l'automatisation de vos classeurs Excel.
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 20/12/2011, 12h06   #1
Invité de passage
 
Inscription : septembre 2011
Messages : 3
Détails du profil
Informations forums :
Inscription : septembre 2011
Messages : 3
Points : 0
Points : 0
Par défaut Erreur : Copier / Coller successifs

Bonjour,

Je souhaiterais copier une feuille d'un classeur dans un autre classeur par l'intermédiaire du VBA. Pour cela j'utilise la méthode Copy sur un objet Worksheet qui fonctionne parfaitement bien tant que la feuille n'est pas trop volumineuse.

Mon problème est que je dois parfois copier des feuilles contenant des données sur environ 200000 lignes et 200 colonnes. Dans ce cas la méthode Copy échoue. J'ai donc pensé à appeler plusieurs fois la méthode Copy sur des objets Range de la feuille à copier pour que les données soient copiées par petits blocs dans mon autre classeur. Les premiers appels de la méthode Copy fonctionnent mais au bout de 4 ou 5 "Copier/Coller", la méthode Copy échoue car : "Excel ne peut pas terminer cette tâche avec les ressources disponibles."

Je ne comprend pas pourquoi Excel ne dispose pas de ressources suffisantes pour faire une opération qu'il a déjà effectué plusieurs fois sans soucis.
J'ai essayé de vider le presse-papiers et de sauvegarder le classeur entre chaque appel de la méthode Copy mais rien n'y fait...

Si quelqu'un a une solution ou une explication , Merci d'avance.
oliv951 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 20/12/2011, 12h20   #2
Expert Confirmé Sénior
 
Homme Daniel
aucune
Inscription : septembre 2011
Messages : 2 004
Détails du profil
Informations personnelles :
Nom : Homme Daniel
Localisation : France, Seine et Marne (Île de France)

Informations professionnelles :
Activité : aucune

Informations forums :
Inscription : septembre 2011
Messages : 2 004
Points : 4 037
Points : 4 037
Bonjour,

Excel gère très mal la mémoire dont il dispose. Veille à mettre une ligne :

Code :
Application.CutCopyMode = False
Après chaque collage. Tu peux aussi essayer d'enregistrer ton classeur périodiquement (sans garantie...)
__________________
Cordialement.

Daniel

Citation:
La plus perdue de toutes les journées est celle où l'on n'a pas ri.
Chamfort
Daniel.C est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 20/12/2011, 16h18   #3
Invité de passage
 
Inscription : septembre 2011
Messages : 3
Détails du profil
Informations forums :
Inscription : septembre 2011
Messages : 3
Points : 0
Points : 0
Merci pour la réponse,

J'avais déjà utilisé cette ligne d'instruction. Je crois que j'ai utilisé à peu près toutes les solutions que j'ai pu trouver concernant le presse-papiers.
Concernant la sauvegarde périodique, j'avais également fait un essai en sauvegardant le classeur entre chaque "Copier/Coller".

J'ai fait le tour d'Internet aussi, mais il me semble qu'il n'y a pas vraiment de solutions permettant d'améliorer la gestion de la mémoire dans Excel...

J'aurai bien aimé récupérer des informations sur la mémoire libre mais les méthodes MemoryFree & co ne sont plus disponibles.

Je crois que je suis dans l'impasse...
oliv951 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 20/12/2011, 16h23   #4
Expert Confirmé Sénior
 
Avatar de mercatog
 
Inscription : juillet 2008
Messages : 5 848
Détails du profil
Informations forums :
Inscription : juillet 2008
Messages : 5 848
Points : 13 907
Points : 13 907
Tu peux copier directement les valeurs entre 2 feuilles. Ici transfert des valeurs de feuil1 vers feuil2 (sans les mises en forme)
Code :
Worksheets("Feuil2").Range("A1:KL20000").Value = Worksheets("Feuil1").Range("A1:KL20000").Value
__________________
Cordialement.
mercatog est déconnecté   Envoyer un message privé Réponse avec citation 10
Réponse Proposer ce sujet en actualité
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 20h30.


 
 
 
 
Partenaires

Hébergement Web