Fichier leger sous excel 2007 devient trop lourd sous excel 2010 [Résolu/Fermé]

Signaler
Messages postés
1
Date d'inscription
samedi 6 juillet 2013
Statut
Membre
Dernière intervention
6 juillet 2013
-
Messages postés
2102
Date d'inscription
lundi 6 mai 2013
Statut
Membre
Dernière intervention
4 août 2020
-
Bonjour
Je m'adresse à vous car j'ai un problème avec cette macro que j'ai installé sur un bouton "sauvegarde":
Sub enregistrementc1()
' enregistrement Macro


Sheets("cycle1").Select
Rows("6:6").Select
With Selection.Font
.Name = "Calibri"
.Size = 3
.Underline = xlUnderlineStyleNone
.ThemeColor = xlThemeColorLight1
.TintAndShade = 0
.ThemeFont = xlThemeFontMinor
End With
Columns("D:D").Select
Columns("D:D").EntireColumn.AutoFit

Dim chemin As String, fichier As String
chemin = ThisWorkbook.Path
fichier = chemin & "\" & Range("A1") & Range("D1")
ActiveWorkbook.SaveAs Filename:=fichier
Nom = Range("A1") & Range("D1")

Range("AW7").Select
Range("AW7") = Nom

ActiveSheet.Buttons.Add(102.75, 39, 51, 25.5).Select
Selection.OnAction = "démarrerc1"
Selection.ShapeRange.IncrementTop -3#
Selection.ShapeRange.IncrementTop -2.25
Selection.ShapeRange.IncrementLeft -64.5
Selection.ShapeRange.IncrementTop 25.5
Selection.ShapeRange.IncrementLeft -29.25
Selection.ShapeRange.IncrementTop 2.25

Selection.Characters.Text = "2) Démarrer la saisie"
With Selection.Characters(Start:=1, Length:=21).Font
.Name = "Calibri"
.FontStyle = "Gras"
.ColorIndex = 46
.Size = 9
End With


Range("A1").Select

End Sub

Sous excel 2007, il me permet de créer un fichier sous un nom précis, ce fichier etant presque equivalent au fichier excel d'origine (environ 997 Ko)et il est crée rapidement. Par contre sous excel 2010 il met plus de 5 mn à créer le fichier demandé et ce fichier dépasse les 7Mo.
Je cale !!!!
Pouvez-vous m'aider?

13 réponses

Messages postés
2102
Date d'inscription
lundi 6 mai 2013
Statut
Membre
Dernière intervention
4 août 2020
278
Bonsoir

A mon avis, tu devrais indiquer le nom du lecteur et le nom du répertoire
ChDrive "C"
ChDir EmplacementDesFichiers à enregistrer

d'autre part, tu devrais exécuter ta macro en pas à pas pour déterminer l'endroit ou ça ralentit.

essaie et dis-nous le résultat

cdlt
Le problème c'est que c'est un programme qui sert à plein de personnes et le chemin n'est pas le même en fonction de la personne qui l'utilise. Il est sur une clé usb et voyage d'ordinateur à ordinateur. C'est pour ça que je ne peux pas préciser le chemin "C:/....." Sinon en ayant supprimé petit à petit des lignes, il semblerait que ça freine au niveau de la sauvegarde! Pourtant avec excel 2007 ça passe tout seul
Messages postés
95
Date d'inscription
mardi 13 décembre 2011
Statut
Membre
Dernière intervention
8 janvier 2019
2
Bonsoir,

Je pense bêtement à quelque chose :

Columns("D:D").EntireColumn.AutoFit


Combien de lignes dans 2010 ?

Mais, je dis peut-être une bêtise!

Cordialement
Je viens d'essayer et c'est toujours pareil, merci quand même.
Messages postés
2102
Date d'inscription
lundi 6 mai 2013
Statut
Membre
Dernière intervention
4 août 2020
278
Bonjour

Quand tu dis que tu as essayé, parlais-tu de ma proposition de dérouler le programme en pas à pas comme je te l'avais demandé un peu plus haut?
J'ai enlevé le début et la fin (quand je fabrique un bouton) et n'ai gardé que la partie sauvegarde et ça fait pareil. Ce que je ne comprends pas c'est pourquoi quand c'est excel 2007 il m'ouvre un fichier excel de la taille identique au classeur d'origine (environ 990Ko) en moins de 10 secondes et quand c'est excel 2010 il m'ouvre un fichier de plus de 7Mo en plus de 10 mn !!!
Mon but en fait c'est de faire une copie du fichier excel ouvert et qu'il l'enregistre avec un nom précis (les données se trouvent dans les cellules précisées) dans le même dossier que l'original. Ce dossier se trouvant sur une clé usb et cette clé voyageant de mains en mains, le chemin est différent en fonction de l'ordinateur sur lequel on travaille et la version excel aussi... Je ne sais pas si je suis assez clair dans ma demande? En plus je ne suis pas un pro de vba ... En fait je ne connais pas les "ordres" ChDrive "C"
ChDir EmplacementDesFichiers à enregistrer
Merci et bonne soirée
Messages postés
95
Date d'inscription
mardi 13 décembre 2011
Statut
Membre
Dernière intervention
8 janvier 2019
2
Bonsoir,

J'y reviens.

Copie des formats sur toute la colonne...
Sauf erreur de ma part, il y a environ 1 million de lignes dans 2007, mais 10 fois plus dans 2010.

Essaye, juste pour voir de commenter la ligne
 'Columns("D:D").EntireColumn.AutoFit


Cordialement
Messages postés
2102
Date d'inscription
lundi 6 mai 2013
Statut
Membre
Dernière intervention
4 août 2020
278
Bonjour

Une suggestion: Si tu l'enregistres directement sans passer par la macro, est-ce toujours pareil?
Si c'est plus rapide, alors enregistre une macro et compare avec ce que tu as écrit.

Autre chose: l'extension de ton fichier est-elle bien ".xlsm"?

Vu la grande quantité de lignes "+ 10 millions selon Babar64420", lorsque tu choisis "Enregistrer sous" existe-il une possibilité d'enregistrer sous un excel de version 2007, comme par exemple sous 2007 on peut choisir "classeur 97-2003"?

on se creuse la tête, on va y arriver

bonne journée
Bonjour J'ai carrément supprimé les lignes 'Columns("D:D").EntireColumn.AutoFit. et ça fait toujours la même chose. Le fichier 2010 fait toujours 7,47 Mo alors que le fichier 2007 fait 994Ko. Ensuite j'ai fait un "enregistré sous" manuel sous le conseil de frenchie83 et effectivement ça fait la même chose qu'avec la macro c'est à dire que avec excel 2007 il est enregistré en 3 secondes en 997Ko et sous excel 2010 en plus de 5 mn en 7,47 Mo... Je n'ai pas trouvé dans le déroulé de excel 2010 pour l'enregistrer sous excel 2007, j'ai pris un excel acceptant les macros car mon fichier est bourré d'autres macros sous d'autres boutons (qui eux marchent très bien sous excel 2010 d'ailleurs). Je précise que ce fichier avait été conçu à la base sous excel 2007... Merci pour votre aide.
Bonne journée
Messages postés
95
Date d'inscription
mardi 13 décembre 2011
Statut
Membre
Dernière intervention
8 janvier 2019
2
Re,

Difficile...

On pourrait essayer de bloquer les évènements pour voir?

Créer un bouton "Enregistrer", pointé vers une Sub contenant les lignes :

Application.EnableEvennts= False
ThisWorkbook.save
Applcation.EnableEvents=True


Cordialement
Messages postés
95
Date d'inscription
mardi 13 décembre 2011
Statut
Membre
Dernière intervention
8 janvier 2019
2
Oh là là! quels noeuds de doigts je fais!

Application.EnableEvents= False
ThisWorkbook.save
Application.EnableEvents=True
ça fait pareil !! et ça enregistre sous le nom d'origine...
Messages postés
2102
Date d'inscription
lundi 6 mai 2013
Statut
Membre
Dernière intervention
4 août 2020
278
Re

"mon fichier est bourré d'autres macros sous d'autres boutons "

Par hasard, dans toutes ces macros, n'y a t-il pas des opérations de copier-coller sur le même emplacement (ne serait-ce que pour conserver une valeur à la place de formule ou autre chose) avec des zones comportant des objets dessinés, des boutons ou autres..? ce qui par exemple reproduirait une grande quantité de fois un objet, mais comme ce dernier se recopierai au même endroit, tu n'en verrais qu'un seul. Si tel est le cas, clique sur un des objets et regarde dans la zone de nom, le numéro qui lui est attribué, ou déplace le légèrement pour voir si il y en a pas d'autres derrière.

Je pense à ça parce que je suis déjà tombé sur un cas de figure similaire, et peut-être que tu as le même problème. De toute manière cela ne coûte rien d'essayer.

à la prochaine
cdlt
Messages postés
95
Date d'inscription
mardi 13 décembre 2011
Statut
Membre
Dernière intervention
8 janvier 2019
2
Re,

C'est pour ça que je voulais voir si, en "stoppant" les évènements (les macros ne "déclenchent" plus) avant l'ordre d'enregistrer (peut importe sous quel nom et où pour tester), le problème se présentait toujours. Et visiblement oui...

Cette "manip" ne visait QUE les évènements (particulièrement ceux déclenchés par "Change" et "SelectionChange).

Il en est tout autrement pour les formules (dans un thread différent). J'y crois beaucoup moins, mais essayez de passer en calcul "sur ordre", avec "Recalcul avant enregistrement" décoché.

Je n'ai pas 2010, donc je ne vais pas pouvoir être d'un grand secours...

Mais je cherche encore.

Cordialement
Pour essayer d'expliquer mais c'est pas facile, je suis désolé : ce dossier au départ comprend 2 fichiers excel, le 1er est nommé base de données : il sert à enregistrer les noms, prénoms, date de naissance, d'une classe d'une école, primaire, ainsi que le niveau de la classe et l'année scolaire en cours. Quand l'enseignant a saisi toutes ces données il appuie sur un bouton qui va envoyer ces données sur un fichier nommé "classeur2". Sur ce fichier le niveau de classe va s'afficher dans la cellule "A1" et l'année scolaire dans la cellule "D1". Ensuite je demande par le bouton sauvegarder (qui me cause problème) d'enregistrer le fichier classeur2 sous le nom "cellule "A1"-cellule"D1" (exemple : CP-2012-2013.xlsm). C'est important car toute l'ecole peut ainsi inscrire leur classe avec le même classeur2, qui lui reste disponible pour accueillir les autres classes. Dans ce classeur2 j'ai crée 22 feuilles différentes où les enseignants vont pouvoir remplir leur livret d'évaluation des élèves. Sur ces 22 feuilles 3 possèdent le fameux bouton "sauvegarde" avec les mêmes cellules "A1" et "D1". Mais le fichier "création de base de données" n'envoie qu'à une seule feuille les données : il la sélection en fonction du niveau de la classe choisie par l'enseignant. exple : l'enseignant a tapé "CP" le fichier "création base de données " envoie la classe de CP sur la feuille "cycle2" ou il y a le bouton de sauvegarde décrit précédemment, mais sur les 2 autres feuilles nommées "cycle1" et "cycle3" il n'y a rien qui apparait, elles restent vierges. Je ne sais pas si j'ai été clair?
Cordialement
Euréka !!! J'ai trouvé un truc qui marche grâce à vous!
J'ai incorporé dans la macro un ordre pour supprimer toutes les feuilles qui me sont inutiles, ce qui allège considérablement le fichier et donc la sauvegarde se fait nickel avec les deux excels. Merci à tous pour vos tuyaux.
Messages postés
2102
Date d'inscription
lundi 6 mai 2013
Statut
Membre
Dernière intervention
4 août 2020
278
très heureux pour toi, mais ça n'explique pas qu'une version plus récente et donc plus performante ne soit pas en mesure d'absorber la même chose sans problème.

mais l'essentiel, c'est que ça marche.

à la prochaine