Erreur d'enregistrement après une macro SavecopyAs
Fermé
kevin44_49
Messages postés
9
Date d'inscription
samedi 4 février 2017
Statut
Membre
Dernière intervention
10 février 2017
-
4 févr. 2017 à 13:28
kevin44_49 Messages postés 9 Date d'inscription samedi 4 février 2017 Statut Membre Dernière intervention 10 février 2017 - 10 févr. 2017 à 20:50
kevin44_49 Messages postés 9 Date d'inscription samedi 4 février 2017 Statut Membre Dernière intervention 10 février 2017 - 10 févr. 2017 à 20:50
6 réponses
Frenchie83
Messages postés
2240
Date d'inscription
lundi 6 mai 2013
Statut
Membre
Dernière intervention
11 août 2023
338
5 févr. 2017 à 17:35
5 févr. 2017 à 17:35
Bonjour
Probablement parce que l'espace disponible est insuffisant.
Avez-vous vérifié?
Cdlt
Probablement parce que l'espace disponible est insuffisant.
Avez-vous vérifié?
Cdlt
pijaku
Messages postés
12263
Date d'inscription
jeudi 15 mai 2008
Statut
Modérateur
Dernière intervention
4 janvier 2024
2 752
6 févr. 2017 à 10:31
6 févr. 2017 à 10:31
Bonjour,
J'ai un classeur qui commence à être assez lourd (3.4Mo) et qui contient un listing client, des données importantes
Que contient exactement ton classeur?
dis nous tout.
J'ai un classeur qui commence à être assez lourd (3.4Mo) et qui contient un listing client, des données importantes
Que contient exactement ton classeur?
- formules
- données uniquement (si oui combien de feuilles, lignes et colonnes utiles)
- listes de validation
- mise en forme
- MFC
dis nous tout.
kevin44_49
Messages postés
9
Date d'inscription
samedi 4 février 2017
Statut
Membre
Dernière intervention
10 février 2017
6 févr. 2017 à 18:14
6 févr. 2017 à 18:14
Alors c'est un peu une usine à gaz, mais pour le moment faute de mieux et de finances pour faire développer un vrai logiciel... on se contente de ce que l'on a...
Ce classeur contient environs 20 feuilles certaines servent de "base de données", d'autre servent uniquement de "template" pour des 'impressions, et d'autre sont juste là pour faire joli :D
J'ai environ 15 unserform. J'ai 1 usf qui me sert de "bureau" où sont affichés 2 listview. Et c'est à partir de ce Usf principal que j'ouvre mes autres usf pour des tâches diverses comme l'enregistrement et la sauvegarde par exemple.
Dans la construction de ce classeur (que j'ai récuperé sur le net) j'ai essayé (avec mes maigres connaissance) de ne pas entrelacer les différentes macros/fonctions qui sont propre à chacun des Usf,
C'est un vrai outils que j'utilise pour une asso. Et ce petit problème de sauvegarde me chagrine un peu...
Pour info, je suis sous Office2000 (ouai, payer 99€/an pour une petite asso, et pour une utilisation ponctuelle ça fait mal).
En tout cas, merci pour vos aides ;)
Ce classeur contient environs 20 feuilles certaines servent de "base de données", d'autre servent uniquement de "template" pour des 'impressions, et d'autre sont juste là pour faire joli :D
J'ai environ 15 unserform. J'ai 1 usf qui me sert de "bureau" où sont affichés 2 listview. Et c'est à partir de ce Usf principal que j'ouvre mes autres usf pour des tâches diverses comme l'enregistrement et la sauvegarde par exemple.
Dans la construction de ce classeur (que j'ai récuperé sur le net) j'ai essayé (avec mes maigres connaissance) de ne pas entrelacer les différentes macros/fonctions qui sont propre à chacun des Usf,
C'est un vrai outils que j'utilise pour une asso. Et ce petit problème de sauvegarde me chagrine un peu...
Pour info, je suis sous Office2000 (ouai, payer 99€/an pour une petite asso, et pour une utilisation ponctuelle ça fait mal).
En tout cas, merci pour vos aides ;)
kevin44_49
Messages postés
9
Date d'inscription
samedi 4 février 2017
Statut
Membre
Dernière intervention
10 février 2017
>
kevin44_49
Messages postés
9
Date d'inscription
samedi 4 février 2017
Statut
Membre
Dernière intervention
10 février 2017
6 févr. 2017 à 18:17
6 févr. 2017 à 18:17
Pour les feuilles servant de BdDonnées, les tableaux n’excèdent pas 12 colonnes et 10'000 lignes (c'est le classeur de base que j'ai trouvé sur internet qui est comme ça - et ça nous suffit largement).
;)
;)
pijaku
Messages postés
12263
Date d'inscription
jeudi 15 mai 2008
Statut
Modérateur
Dernière intervention
4 janvier 2024
2 752
Modifié par pijaku le 7/02/2017 à 11:15
Modifié par pijaku le 7/02/2017 à 11:15
Bonjour,
Sommes toutes un classeur ordinaire.
A tester (pas sur du tout de l'efficacité), le End en fin de macro d'enregistrement :
Sinon, il ne te reste qu'à :
- prendre l'habitude de fermer/réouvrir ton classeur à chaque sauvegarde
- modifier complètement sa conception en externalisant (dans des fichiers txt par exemple) toutes les données...
Avant, j'arrivais jamais à finir mes phrases... mais maintenant je
Sommes toutes un classeur ordinaire.
A tester (pas sur du tout de l'efficacité), le End en fin de macro d'enregistrement :
'ici ton code de sauvegarde End End Sub
Sinon, il ne te reste qu'à :
- prendre l'habitude de fermer/réouvrir ton classeur à chaque sauvegarde
- modifier complètement sa conception en externalisant (dans des fichiers txt par exemple) toutes les données...
Avant, j'arrivais jamais à finir mes phrases... mais maintenant je
kevin44_49
Messages postés
9
Date d'inscription
samedi 4 février 2017
Statut
Membre
Dernière intervention
10 février 2017
8 févr. 2017 à 20:02
8 févr. 2017 à 20:02
Merci Pijaku,
Ca ne fonctionne pas mais j'ai une piste...
J'ai lu sur des forums en anglais, que la fonction SaveCopyAs ne fonctionnerait qu'à partir de la version 2003 (ou 2007 je ne sais plus trop...)
Je me suis donc orienté vers l'ancienne méthode que j'utilisais avant, le bon vieux SaveAs.
Le tout avec
puis
C'est 20fois plus long qu'avant, mais ça ne plante pas.
Si vous avez d'autres idées, d'autres pistes... des suggestions, des remarques... je suis à l'écoute.
1000 merci à vous pour vos aides !
Ca ne fonctionne pas mais j'ai une piste...
J'ai lu sur des forums en anglais, que la fonction SaveCopyAs ne fonctionnerait qu'à partir de la version 2003 (ou 2007 je ne sais plus trop...)
Je me suis donc orienté vers l'ancienne méthode que j'utilisais avant, le bon vieux SaveAs.
ThisWorkbook.Save ThisWorkbook.SaveAs CheminSave & "\" & NomSave ThisWorkbook.SaveAs Chemin & "\" & MyName
Le tout avec
Application.ScreenUpdating = false
puis
Application.ScreenUpdating = True
C'est 20fois plus long qu'avant, mais ça ne plante pas.
Si vous avez d'autres idées, d'autres pistes... des suggestions, des remarques... je suis à l'écoute.
1000 merci à vous pour vos aides !
pijaku
Messages postés
12263
Date d'inscription
jeudi 15 mai 2008
Statut
Modérateur
Dernière intervention
4 janvier 2024
2 752
9 févr. 2017 à 07:50
9 févr. 2017 à 07:50
Bonjour,
Est ce que le problème de sauvegarde avec SaveCopyAs est apparu de suite ou lorsque ton classeur a commencé à prendre trop de "poids"?
Si oui, il convient alors de placer les feuilles "bases de données" dans un autre classeur ou dans des fichiers txt.
C'est relativement facile et souple après de les exploiter.
Si non, tu n'as pas d'autre choix que :
Est ce que le problème de sauvegarde avec SaveCopyAs est apparu de suite ou lorsque ton classeur a commencé à prendre trop de "poids"?
Si oui, il convient alors de placer les feuilles "bases de données" dans un autre classeur ou dans des fichiers txt.
C'est relativement facile et souple après de les exploiter.
Si non, tu n'as pas d'autre choix que :
- ta solution actuelle de SaveAs (20 secondes c'est pas non plus insurmontable)
- passer tout ton outil sous Access
- acheter une version plus récente d'Office
- passer au libre : OpenOffice ou LibreOffice.
kevin44_49
Messages postés
9
Date d'inscription
samedi 4 février 2017
Statut
Membre
Dernière intervention
10 février 2017
>
pijaku
Messages postés
12263
Date d'inscription
jeudi 15 mai 2008
Statut
Modérateur
Dernière intervention
4 janvier 2024
9 févr. 2017 à 08:44
9 févr. 2017 à 08:44
Oui le problème est apparu lorsque j'ai changé mon mode de sauvegarde par SaveCopyAs...
voici le code:
Effectivement je pense que la solution d'acheter une version plus recente est à envisager. Pour le moment je retourner à mon ancienne méthode. Oui 20 secondes ce n'est pas la mort, c'est juste que je trouvais cette solution de copy hyper interessante!
J'ai le temps, je ne suis pas pressé.
Quand tu dis d'externaliser les Bdd sur un fichier txt, c'est juste pour la sauvegarde ou pour l'utilisation de l'ensemble du classeur? Ça m’intéresse, je vais creuser cette piste ;)
Par contre, tout passer sous libre office, j'ai déjà essayé, mais les macros Excel ne sont pas compatibles avec OOffice (ou alors je ne sais pas comment faire).
En tout cas, merci à tous !
voici le code:
Private Sub CommandButton44_Click() ' bouton sauvegarde UserForm3.Show 'Usf qui invite à patientenr Application.Wait Time + TimeSerial(0, 0, 1) 'pour éviter les plantage Application.ScreenUpdating = False ThisWorkbook.Save 'avant la sauvegarde, il fait un enregistrement simple On Error Resume Next If Err <> 0 Then Exit Sub Dim nom As String nom = Day(Date) & "-" & Month(Date) & "-" & Year(Date) & "_" & Hour(Time) & "-" & Minute(Time) & "_" & ActiveWorkbook.Name ActiveWorkbook.SaveCopyAs ActiveWorkbook.Path & "\" & nom 'msgbox "Votre classeur est sauvegardé sous le nom : " & nom, vbYes + vbInformation, "Copie sauvegarde classeur" 'Msgbox qui retourne l'emplacement de la sauvegarde Application.Wait Time + TimeSerial(0, 0, 2) On Error Resume Next If Err <> 0 Then Exit Sub Application.ScreenUpdating = True UserForm3.Hide msgbox "Fichier sauvegardé", vbQuestion, vbSystemModal End Sub
Effectivement je pense que la solution d'acheter une version plus recente est à envisager. Pour le moment je retourner à mon ancienne méthode. Oui 20 secondes ce n'est pas la mort, c'est juste que je trouvais cette solution de copy hyper interessante!
J'ai le temps, je ne suis pas pressé.
Quand tu dis d'externaliser les Bdd sur un fichier txt, c'est juste pour la sauvegarde ou pour l'utilisation de l'ensemble du classeur? Ça m’intéresse, je vais creuser cette piste ;)
Par contre, tout passer sous libre office, j'ai déjà essayé, mais les macros Excel ne sont pas compatibles avec OOffice (ou alors je ne sais pas comment faire).
En tout cas, merci à tous !
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
pijaku
Messages postés
12263
Date d'inscription
jeudi 15 mai 2008
Statut
Modérateur
Dernière intervention
4 janvier 2024
2 752
9 févr. 2017 à 09:10
9 févr. 2017 à 09:10
1- pour éviter quels plantages utilises tu les Application.Wait Time + TimeSerial ?
2- essaie de sauver directement le classeur après la copie, comme ceci :
Au passage, j'ai modifié ta variable nom grâce à Format, et référencé ActiveWorkbook dans un bloc With...
3- externaliser les bdd sert à l'utilisation du classeur. En fait, dans ton cas, je ne le recommande plus...
4- non en effet, les programmes libres n'utilisent pas Visual Basic, mais un Basic différent.
2- essaie de sauver directement le classeur après la copie, comme ceci :
Dim nom As String With ActiveWorkbook nom = Format(Now, "dd-mm-yyyy_hh-mm") & "_" & .Name .SaveCopyAs .Path & "\" & nom .Save End With
Au passage, j'ai modifié ta variable nom grâce à Format, et référencé ActiveWorkbook dans un bloc With...
3- externaliser les bdd sert à l'utilisation du classeur. En fait, dans ton cas, je ne le recommande plus...
4- non en effet, les programmes libres n'utilisent pas Visual Basic, mais un Basic différent.
kevin44_49
Messages postés
9
Date d'inscription
samedi 4 février 2017
Statut
Membre
Dernière intervention
10 février 2017
10 févr. 2017 à 20:21
10 févr. 2017 à 20:21
Lorsque VBA enchaine des enregistrements sur mon autre ordinateur qui me sert de sauvegarde, régulièrement j'avais des plantages... j'ai créé ce wait time, et depuis plus de souci...
Pour info, j'ai essayé "SaveCopyAs" sur un Office2013, et ça fonctionne parfaitement.
J'ai réessayé sur mon office2000, même en vidant mon classeur de toutes les données, ça ne fonctionne toujours pas.
Je vais tester ta méthode et je te redis.
Pour info, j'ai essayé "SaveCopyAs" sur un Office2013, et ça fonctionne parfaitement.
J'ai réessayé sur mon office2000, même en vidant mon classeur de toutes les données, ça ne fonctionne toujours pas.
Je vais tester ta méthode et je te redis.
kevin44_49
Messages postés
9
Date d'inscription
samedi 4 février 2017
Statut
Membre
Dernière intervention
10 février 2017
10 févr. 2017 à 20:50
10 févr. 2017 à 20:50
Alors... J'ai testé ta méthode sur Office2000.
La copie se crée bien, mais Excel plante dès la fin de la macro
C'est le .save qu'il n'aime pas...
Bon, je crois que c'est vraiment la version du pack office qui pose problème.
Merci quand même.
La copie se crée bien, mais Excel plante dès la fin de la macro
C'est le .save qu'il n'aime pas...
Bon, je crois que c'est vraiment la version du pack office qui pose problème.
Merci quand même.
5 févr. 2017 à 21:14
Merci quand même pour votre réponse.
6 févr. 2017 à 06:23
Il ne s'agit pas de l'espace disque, mais plutôt de l'espace alloué au fichier temporaire puisqu'il n'accepte pas plus de 2,53Mo. Forcez l'enregistrement dans un répertoire de votre disque dur.
Cdlt
6 févr. 2017 à 08:41
Merci Frenchie83