VB EXCEL ActiveWorkbook.SaveCopyAs trop long
Fermé
Ludivine50
Messages postés
114
Date d'inscription
lundi 9 février 2009
Statut
Membre
Dernière intervention
1 février 2016
-
1 févr. 2010 à 18:22
Ludivine50 Messages postés 114 Date d'inscription lundi 9 février 2009 Statut Membre Dernière intervention 1 février 2016 - 8 févr. 2010 à 12:19
Ludivine50 Messages postés 114 Date d'inscription lundi 9 février 2009 Statut Membre Dernière intervention 1 février 2016 - 8 févr. 2010 à 12:19
A voir également:
- Excel savecopyas
- Liste déroulante excel - Guide
- Si et excel - Guide
- Aller à la ligne excel - Guide
- Word et excel gratuit - Guide
- Mise en forme conditionnelle excel - Guide
10 réponses
michel_m
Messages postés
16603
Date d'inscription
lundi 12 septembre 2005
Statut
Contributeur
Dernière intervention
16 décembre 2023
3 310
1 févr. 2010 à 18:35
1 févr. 2010 à 18:35
Bonjour,
Quel est le poids du classeur en Mo ?
Quel est le poids du classeur en Mo ?
Ludivine50
Messages postés
114
Date d'inscription
lundi 9 février 2009
Statut
Membre
Dernière intervention
1 février 2016
7
2 févr. 2010 à 09:00
2 févr. 2010 à 09:00
Bonjour Michel, merci de ta réponse. Il faut 3,55 Mo.
Du coup, j'ai tenté une autre méthode: une seule feuille m'intéresse, donc
J'ai remplacé
ActiveWorkbook.SaveCopyAs "\\1.1.1.1\xxxxxx.XLS"
par ça:
Sheets("Feuil1").Copy
ActiveWorkbook.SaveCopyAs Filename:= _
"\\1.1.1.1\xxxxxx.xls"
Et j'ai gagné un temps fou. Pour l'instant, cette solution me convient. On attend un peu mais c'est supportable.
Ludivine
Du coup, j'ai tenté une autre méthode: une seule feuille m'intéresse, donc
J'ai remplacé
ActiveWorkbook.SaveCopyAs "\\1.1.1.1\xxxxxx.XLS"
par ça:
Sheets("Feuil1").Copy
ActiveWorkbook.SaveCopyAs Filename:= _
"\\1.1.1.1\xxxxxx.xls"
Et j'ai gagné un temps fou. Pour l'instant, cette solution me convient. On attend un peu mais c'est supportable.
Ludivine
michel_m
Messages postés
16603
Date d'inscription
lundi 12 septembre 2005
Statut
Contributeur
Dernière intervention
16 décembre 2023
3 310
2 févr. 2010 à 10:03
2 févr. 2010 à 10:03
Bonjour,
De toutes façons avec 3,5 Mo, fichier obèse, outre le temps d'ouverture, de sauvegarde, tu risques fort d'avoir des refus d'ouverture, de corruption... 95% de ce genre de problèmes viennent de ces fichiers obèses: 2 à 2,5Mo semble la limite critique. Pour ma part je ne dépasse jamais 1,5 Mo et essaie toujours de rester sous 1Mo.
De toutes façons avec 3,5 Mo, fichier obèse, outre le temps d'ouverture, de sauvegarde, tu risques fort d'avoir des refus d'ouverture, de corruption... 95% de ce genre de problèmes viennent de ces fichiers obèses: 2 à 2,5Mo semble la limite critique. Pour ma part je ne dépasse jamais 1,5 Mo et essaie toujours de rester sous 1Mo.
tompols
Messages postés
1273
Date d'inscription
jeudi 29 juillet 2004
Statut
Contributeur
Dernière intervention
25 novembre 2013
435
2 févr. 2010 à 10:18
2 févr. 2010 à 10:18
Bonjour Ludivine50, michel_m :)
Ludivine, pour sauvegarder une feuille, tu peux aussi utiliser Worsheets(i).saveas
Pour ce qui es de la taille, effectivement 3,5 Mo c'est beaucoup mais loin d'etre "trop pour excel". Microsoft ne recommande pas de taille limite mais ne garantit pas la fiabilité des calculs au delà de 20Mo (perso j'ai déjà vu du 90 Mo qui fonctionnait encore ! :s ).
Pour ton problème de lenteur, as-tu testé la meme instruction sur le disque local ? là tu donnes l'adresse d'une machine distante, il faut aussi conter un temps de connection à cette machine (tu peux aussi essayer de monter un lecteur réseau sur le pc et ensuite passer par une lettre de lecteur dans ton code pour accelerer un peu)
Ludivine, pour sauvegarder une feuille, tu peux aussi utiliser Worsheets(i).saveas
Pour ce qui es de la taille, effectivement 3,5 Mo c'est beaucoup mais loin d'etre "trop pour excel". Microsoft ne recommande pas de taille limite mais ne garantit pas la fiabilité des calculs au delà de 20Mo (perso j'ai déjà vu du 90 Mo qui fonctionnait encore ! :s ).
Pour ton problème de lenteur, as-tu testé la meme instruction sur le disque local ? là tu donnes l'adresse d'une machine distante, il faut aussi conter un temps de connection à cette machine (tu peux aussi essayer de monter un lecteur réseau sur le pc et ensuite passer par une lettre de lecteur dans ton code pour accelerer un peu)
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
michel_m
Messages postés
16603
Date d'inscription
lundi 12 septembre 2005
Statut
Contributeur
Dernière intervention
16 décembre 2023
3 310
2 févr. 2010 à 10:47
2 févr. 2010 à 10:47
D'accord, je dis des c...!
regarde donc Tous les messages sur ce forum et d'autres plus sérieux concernant ce problème !... 90 Mo bien sûr ca s'enregistre en 1 clin d'oeil...Vachement pratique
comme m'avait dit un des mes grands chefs après que j'eus réalisé un 5 mo : gros classeur= gros c... et bonjour la rallonge reportée (ou la fin de l'essai pour le stagiaire)
Microsoft ne va pas se contredire puisqu'il propose des feuilles disproportionnées (qui utilises 1 million de lignes?)
regarde donc Tous les messages sur ce forum et d'autres plus sérieux concernant ce problème !... 90 Mo bien sûr ca s'enregistre en 1 clin d'oeil...Vachement pratique
comme m'avait dit un des mes grands chefs après que j'eus réalisé un 5 mo : gros classeur= gros c... et bonjour la rallonge reportée (ou la fin de l'essai pour le stagiaire)
Microsoft ne va pas se contredire puisqu'il propose des feuilles disproportionnées (qui utilises 1 million de lignes?)
tompols
Messages postés
1273
Date d'inscription
jeudi 29 juillet 2004
Statut
Contributeur
Dernière intervention
25 novembre 2013
435
2 févr. 2010 à 11:18
2 févr. 2010 à 11:18
Re,
euh....michel_m je ne voulais pas t'offenser ! Je suis plutot d'accord avec toi, il faut tendre à avoir les classeurs les plus legers possibles, viser 1Mo est une bonne pratique....maintenant en entreprise de nombreux classeurs excel qui font plus de 3Mo s'échangent tous les jours sans que cela ne pose de probleme particulier (pour info un simple feuille de données avec env 20000 lignes et 15 colonnes atteindra 5Mo sans meme la moindre formule ou mise en forme, ce qui est courant quand on extrait de données pour analyse ad hoc depuis un ERP par exemple).
Pour le fichier de 90Mo c'était un exemple extreme de ce qu'il ne fait pas faire (créé par un financier, les champions du monde du gros fichier excel), moi-meme j'avais tenté de le réduire (ce fichier nécessitait un quantité de RAM importante pour l'ouvrir et "monopolisait" les ressources de la machine) !
Bref je ne dis pas que tu dis que de c..... (et meme loin de là, jsuis meme plutot d'accord avec toi comme bien souvent) mais je suis un peu moins 'radical' sur cette histoire de taille (et j'apportais qqes compléments d'infos)...dsl....
euh....michel_m je ne voulais pas t'offenser ! Je suis plutot d'accord avec toi, il faut tendre à avoir les classeurs les plus legers possibles, viser 1Mo est une bonne pratique....maintenant en entreprise de nombreux classeurs excel qui font plus de 3Mo s'échangent tous les jours sans que cela ne pose de probleme particulier (pour info un simple feuille de données avec env 20000 lignes et 15 colonnes atteindra 5Mo sans meme la moindre formule ou mise en forme, ce qui est courant quand on extrait de données pour analyse ad hoc depuis un ERP par exemple).
Pour le fichier de 90Mo c'était un exemple extreme de ce qu'il ne fait pas faire (créé par un financier, les champions du monde du gros fichier excel), moi-meme j'avais tenté de le réduire (ce fichier nécessitait un quantité de RAM importante pour l'ouvrir et "monopolisait" les ressources de la machine) !
Bref je ne dis pas que tu dis que de c..... (et meme loin de là, jsuis meme plutot d'accord avec toi comme bien souvent) mais je suis un peu moins 'radical' sur cette histoire de taille (et j'apportais qqes compléments d'infos)...dsl....
michel_m
Messages postés
16603
Date d'inscription
lundi 12 septembre 2005
Statut
Contributeur
Dernière intervention
16 décembre 2023
3 310
2 févr. 2010 à 11:34
2 févr. 2010 à 11:34
Tiens donc!
Sauf que si un jour, un de tes réalisations 5Mo se coince; Bonjour les petites annonces. La perte de patrimoine due à cette erreur te grillera définitivement dans ton secteur
L'évaluation du projet au départ a été bâclée... (proverbe chinois: "si tu es pressé commence par t'asseoir" à écrire en grande banderole dans les salles d'info). Excel n'est pas forcément la solution mais très souvent un mix Access-Excel et on très bien faire légalement une base de données au format Access sans avoir Access (par ADOX)
Excuses moi de m'énerver mais malgré tous les messages de problèmes dûs au fichier obèse, il y a toujours l'homme qu'a vu l'homme qu'a vu l'ours de 90 Mo...
Sauf que si un jour, un de tes réalisations 5Mo se coince; Bonjour les petites annonces. La perte de patrimoine due à cette erreur te grillera définitivement dans ton secteur
L'évaluation du projet au départ a été bâclée... (proverbe chinois: "si tu es pressé commence par t'asseoir" à écrire en grande banderole dans les salles d'info). Excel n'est pas forcément la solution mais très souvent un mix Access-Excel et on très bien faire légalement une base de données au format Access sans avoir Access (par ADOX)
Excuses moi de m'énerver mais malgré tous les messages de problèmes dûs au fichier obèse, il y a toujours l'homme qu'a vu l'homme qu'a vu l'ours de 90 Mo...
Ludivine50
Messages postés
114
Date d'inscription
lundi 9 février 2009
Statut
Membre
Dernière intervention
1 février 2016
7
2 févr. 2010 à 11:46
2 févr. 2010 à 11:46
Bonjour à tous les deux et merci beaucoup de votre aide.
le fichier est trop lourd effectivement, malheureusement je ne peux pas le diviser en plusieurs fichiers. Au moins, il ne devrait pas trop s'alourdir par la suite.
Worsheets(i).saveas "\\1.1.1.1\xxxxxx.XLS" est plus rapide que "ActiveWorkbook.SaveCopyAs "\\1.1.1.1\xxxxxx.XLS", mais plus lent que
J'ai aussi testé la différence de durée d'exécution entre enregistrer en local ou sur le serveur. Aucun écart en fait. C'est bon à savoir.
Je vais donc rester sur
qui me satisfait pas mal. Mais j'ai appris qu'effectivement le problème vient bien de la grosseur du fichier. A éviter pour les prochaines fois.
Je vous remercie beaucoup tous les deux, et bonne journée.
le fichier est trop lourd effectivement, malheureusement je ne peux pas le diviser en plusieurs fichiers. Au moins, il ne devrait pas trop s'alourdir par la suite.
Worsheets(i).saveas "\\1.1.1.1\xxxxxx.XLS" est plus rapide que "ActiveWorkbook.SaveCopyAs "\\1.1.1.1\xxxxxx.XLS", mais plus lent que
"Sheets("Feuil1").Copy ActiveWorkbook.SaveCopyAs Filename:= _ "\\1.1.1.1\xxxxxx.xls"
J'ai aussi testé la différence de durée d'exécution entre enregistrer en local ou sur le serveur. Aucun écart en fait. C'est bon à savoir.
Je vais donc rester sur
"Sheets("Feuil1").Copy ActiveWorkbook.SaveCopyAs Filename:= _ "\\1.1.1.1\xxxxxx.xls"
qui me satisfait pas mal. Mais j'ai appris qu'effectivement le problème vient bien de la grosseur du fichier. A éviter pour les prochaines fois.
Je vous remercie beaucoup tous les deux, et bonne journée.
tompols
Messages postés
1273
Date d'inscription
jeudi 29 juillet 2004
Statut
Contributeur
Dernière intervention
25 novembre 2013
435
2 févr. 2010 à 12:00
2 févr. 2010 à 12:00
ok; pb résolu alors....
bonne journée
bonne journée
Ludivine50
Messages postés
114
Date d'inscription
lundi 9 février 2009
Statut
Membre
Dernière intervention
1 février 2016
7
8 févr. 2010 à 12:19
8 févr. 2010 à 12:19
Bonjour,
Je rouvre ce dossier, car mon code pose de gros problèmes.
En effet, il plante régulièrement. J'ai l'impression qu'Excel ne pige pas que l'activeWorkbook dont je parle est le classeur qu'il vient de créer. En fait, il crée le fichier, puis il affiche la boîte de dialogue "Enregistrer sous" 2 fois, puis plantage. Le fichier est carrément supprimé, puis procédure de récupération des fichiers.
Y-a-t-il un autre code qui permet de copier un fichier avec sélection de deux feuilles seulement, et sauvegarde sous un nouveau nom, sans plantage?
merci beaucoup
Ludivine
Je rouvre ce dossier, car mon code pose de gros problèmes.
"Sheets(array("Feuil1","Feuil2")).Copy ActiveWorkbook.SaveCopyAs Filename:= _ "\\1.1.1.1\xxxxxx.xls"
En effet, il plante régulièrement. J'ai l'impression qu'Excel ne pige pas que l'activeWorkbook dont je parle est le classeur qu'il vient de créer. En fait, il crée le fichier, puis il affiche la boîte de dialogue "Enregistrer sous" 2 fois, puis plantage. Le fichier est carrément supprimé, puis procédure de récupération des fichiers.
Y-a-t-il un autre code qui permet de copier un fichier avec sélection de deux feuilles seulement, et sauvegarde sous un nouveau nom, sans plantage?
merci beaucoup
Ludivine