XL 2013 Temps de copie des feuilles

Dudu2

XLDnaute Barbatruc
Bonjour,

En VBA le problème et le suivant:
- Je copie une feuille d'un classeur en N exemplaires dans le même classeur -> tout se passe normalement
- Je supprime d'abord des lignes de la feuille avant de la copier en N exemplaires dans le même classeur-> le temps de chaque copie devient extrêmement long.

J'ai tout essayé:
- Méthode de copie feuille à feuille directe: Worksheets(1).Copy After:=Worksheets(1)
- Méthode de copie par contenu: Worksheets.Add After:=Worksheets(1) puis Worksheets(1) .Cells.Copy puis Worksheets(2) .Cells.Pastespecial xlPasteAll
- Calculation manuel, etc...

Qu'est-ce qui peut bien provoquer ce ralentissement ?
Cordialement
D
 

Dudu2

XLDnaute Barbatruc
Bonjour les amis,
Non, je n'ai pas enregistré le fichier car il ne le faut pas dans la logique applicative.
Ce que j'ai remarqué c'est que la fermeture du classeur sur <Ne pas enregistrer> est aussi plus longue comme si Excel prenait du temps à faire le ménage.
Je ne crois pas trop au UsedRange mais je vais essayer en soirée.
 

Dudu2

XLDnaute Barbatruc
Ok, pour info cette feuille qui est copiée vient elle-même d'un autre classeur où son UsedRange est gigantesque (va jusqu'au max des lignes) sans que ce soit justifié par le contenu. Historique des manips ?
J'ai pu la récupérer avec un UsedRange "utile" en copiant indirectement par le contenu Cells -> Cells. (pas directement de feuille à feuille).
Car en plus je dois conserver les MFC définies à l'origine sur les colonnes enitères ex $A:$A et cette copie globale est nécessaire pour ne pas réduire les MFC à un Range limité qui serait copié.

Ces MFC c'est la m... à gérer car non dissociables de formats.
J'ai fait un big outil pour les manipuler (Export / Import XML et VBA / Merge / Copy etc...)
Je crois que je vais extraire des fonctions simples pour pouvoir les manipuler dans des projets VBA pour les copier / supprimer / coller dans les feuilles.

Je crois que je confuse tout le monde. Désolé.
 

Dudu2

XLDnaute Barbatruc
Pour revenir au problème initial, je confirme qui si j'enregistre le fichier avant de copier N fois la feuille dans laquelle j'ai supprimé des lignes, la copie des feuilles est quasi-instantanée. Comme si j'avais copié sans supprimer les lignes dans la feuille source.

Donc l'enregistrement du classeur le libère de quelque chose, mais de quoi ?!
Ce n'est pas le ClipBoard que j'ai vidé après chaque manip.
Ni les Validations de Données ni les MFC que j'ai supprimées tour à tour pour vérifier.
Ni le Calculation que j'ai mis xlManual pour tester, de toutes façons y pas de formules dans la feuille.
Il n'y a pas non plus de liaisons externes.

D'autre part j'ai vérifié le UsedRange de la feuille à copier et il n'est pas extravagant et correspond aux valeurs présentes.
 
Dernière édition:

sylvanu

XLDnaute Barbatruc
Supporter XLD
Bonjour,
Ça arrive souvent quand un fichier commence à ramer que le fait de l'enregistrer lui redonne de la vitalité.
Je pense qu'qu'en cas de motifs il duplique plein de choses pour être capable de revenir en arrière et finit par utiliser le swap disque quand il dépasse la taille mémoire qui lui est allouée. Et tout est nettoyé à l'enregistrement.
 

Dudu2

XLDnaute Barbatruc
Bonjour Sylvanu,
En effet, même si le VBA efface l'Undo stack dès qu'on manipe sur le contenu, il conserve sûrement des trucs en masse avant un Save pour des raisons que lui seul connaît. Et je ne vois pas de méthode sur l'objet Workbook qui puisse y faire quoi que ce soit.
Donc je vais laisser tomber car à court d'idée.
Merci et bonne journée.
 

Dudu2

XLDnaute Barbatruc
Comme indiqué ci-dessus, la raison de ces copies de feuilles entières sont les MFC dont le morcellement est induit par des copies partielles de plages entre autres.

Et pour éviter de subir, j'ai donc extrait d'un outil MFC développé il y a quelques mois pour l'Export / Import / Merge / etc... des modules à intégrer éventuellement dans du code VBA pour copier / coller / supprimer les MFC... A récupérer sur ce lien:
 

Discussions similaires

Statistiques des forums

Discussions
312 240
Messages
2 086 514
Membres
103 239
dernier inscrit
wari