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
Bonjour à toutes et tous.
Je tâtonne un peu en vba et jusque là j'ai toujours réussi à me dépatouiller avec les différents forums qui existent.

J'ai un classeur qui commence à être assez lourd (3.4Mo) et qui contient un listing client, des données importantes, ... Tous les soirs je fais une sauvegarde de ce classeur via une macro vba
SaveCopyas avec un nom du genre "SaveCopy_date_NomClasseur". La sauvegarde se fait sans problème en à peine 3 secondes (je sauvegarde sur un autre pc en réseau).
Mon problème apparait après cette macro lorsque je veux faire un enregistrement simple.
Là excel plante, me ferme tout et me crée un fichier temporaire du type "94FBE480" (de 2.53Mo).
Pourquoi ce plantage systématique ? alors que si je ne crée pas cette sauvegarde via savecopyas, tout se passe bien?

Merci pour vos réponse.
Kévin.

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
Bonjour
Probablement parce que l'espace disponible est insuffisant.
Avez-vous vérifié?
Cdlt
0
kevin44_49 Messages postés 9 Date d'inscription samedi 4 février 2017 Statut Membre Dernière intervention 10 février 2017
5 févr. 2017 à 21:14
Comment ça ? sur mon support de stockage ? Ca me semble assez peu probable, car mon hdd fait 750Go... et je n'ai que 200Go d'utilisé...
Merci quand même pour votre réponse.
0
Frenchie83 Messages postés 2240 Date d'inscription lundi 6 mai 2013 Statut Membre Dernière intervention 11 août 2023 338 > 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 à 06:23
Bonjour
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
0
kevin44_49 Messages postés 9 Date d'inscription samedi 4 février 2017 Statut Membre Dernière intervention 10 février 2017 > Frenchie83 Messages postés 2240 Date d'inscription lundi 6 mai 2013 Statut Membre Dernière intervention 11 août 2023
6 févr. 2017 à 08:41
Je viens d'essayer de sauvegarder en local, sur mon propre ssd, toujours le même problème.
Merci Frenchie83
0
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
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?
  • formules
  • données uniquement (si oui combien de feuilles, lignes et colonnes utiles)
  • listes de validation
  • mise en forme
  • MFC

dis nous tout.
0
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
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 ;)
0
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
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).
;)
0
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
Bonjour,

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
0
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
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.


    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 !
0
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
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 :
  • 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.
0
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
Oui le problème est apparu lorsque j'ai changé mon mode de sauvegarde par SaveCopyAs...
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 !
0

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
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 :
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.
0
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
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.
0
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
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.
0