Problème avec mon SaveAs

tim_so

XLDnaute Nouveau
Bonjour tout le monde,

Je viens vers vous (encore j'y prends goût !!) parce que je suis sur ma macro depuis plus d'une semaine et là je pense qu'il est temps que je demande de l'aide.

J'ai un classeur avec 3 feuilles (Epicerie, Produits diet et Boissons), j'aimerais enregistrer chacune des 3 feuilles dans un nouveau classeur et les enregistrer toutes les 3 dans un nouveau dossier.

Mon nouveau dossier est bien créé, ma première feuille est bien copié dans un nouveau classeur avec son nom mais ça bloque à l'enregistrement. J'ai le message : Erreur d'exécution 1004 : la méthode SaveAs de l'objet _Workbook a échoué".

J'ai testé plusieurs solution trouvé sur internet, modifié certaines choses mais rien à faire. Mon chemin est bon puisque mon dossier se créé bien au bon endroit.

voici mon code :

Code:
Sub Save_test()


'Enregistrement des différentes feuilles
        Dim chemin$
        ', Nomdossier$
        chemin = "\\srvsauvegard\sces_eco\Commun\Commande alimentaire\"
        Nomdossier = "Commande SEM " & Sheets("Epicerie").Range("B2").Value & " " & Sheets("Epicerie").Range("C2").Value & " " & Sheets("Epicerie").Range("D2").Value & " " & Sheets("Epicerie").Range("E2").Value & " " & Sheets("Epicerie").Range("F2").Value & " " & Sheets("Epicerie").Range("G2").Value
'Vérifie si le dossier existe, s'il existe, ne fait rien, sinon le créer
        If Dir(chemin & Nomdossier, vbDirectory) = "" Then MkDir chemin & Nomdossier
 'Enregistre chaque feuille dans le nouveau dossier
        Sheets("Epicerie").Copy
        ActiveWorkbook.SaveAs chemin & Nomdossier & "\" & "Commande Epicerie" & ".xlsx"
        Sheets("Epicerie").DrawingObjects.Delete
        Workbooks("Commande Epicerie.xlsx").Save
        ActiveWorkbook.Close
        Sheets("Boissons").Copy
        ActiveWorkbook.SaveAs chemin & Nomdossier & "\" & "Commande Boissons" & ".xlsx"
        ActiveWorkbook.Close
        Sheets("Produits diet").Copy
        ActiveWorkbook.SaveAs chemin & Nomdossier & "\" & "Commande Produits Diet" & ".xlsx"
        ActiveWorkbook.Close
    ThisWorkbook.Close savechanges:=False

End sub

J'espère que vous pourrez m'aider.
 

tim_so

XLDnaute Nouveau
Re : Problème avec mon SaveAs

Merci pour la réponse rapide,

je viens de tester j'ai le même message.

Par contre je viens de me rendre compte que dans le code que j'ai affiché, j'ai fait une erreur (j'ai fait tellement de test que je ne l'ai pas remis correctement) le problème reste le même mais au moins je remets le bon code :

Code:
Sub savetest()
'
' savetest Macro
'
'Enregistrement des différentes feuilles
        Dim chemin$, Nomdossier$
        chemin = "\\srvsauvegarde\sces_eco\Commun\Commande alimentaire\"
        Nomdossier = "Commande SEM " & Sheets("Epicerie").Range("B2").Value & " " & Sheets("Epicerie").Range("C2").Value & " " & Sheets("Epicerie").Range("D2").Value & " " & Sheets("Epicerie").Range("E2").Value & " " & Sheets("Epicerie").Range("F2").Value & " " & Sheets("Epicerie").Range("G2").Value
'Vérifie si le dossier existe, s'il existe, ne fait rien, sinon le créer
        If Dir(chemin & Nomdossier, vbDirectory) = "" Then MkDir chemin & Nomdossier
 'Enregistre chaque feuille dans le nouveau dossier
        Sheets("Epicerie").Copy
        ActiveWorkbook.SaveAs chemin & Nomdossier & "\" & "Commande Epicerie" & ".xlsx"
        Sheets("Epicerie").DrawingObjects.Delete
        Workbooks("Commande Epicerie.xlsx").Save
        ActiveWorkbook.Close
        Sheets("Boissons").Copy
        ActiveWorkbook.SaveAs chemin & Nomdossier & "\" & "Commande Boissons" & ".xlsx"
        ActiveWorkbook.Close
        Sheets("Produits diet").Copy
        ActiveWorkbook.SaveAs chemin & Nomdossier & "\" & "Commande Produits Diet" & ".xlsx"
        ActiveWorkbook.Close
    ThisWorkbook.Close savechanges:=False
    
End Sub
 
Dernière édition:

tim_so

XLDnaute Nouveau
Re : Problème avec mon SaveAs

Bon finalement, j'ai trouvé mon problème, j'ai un peu honte de venir dire d'où venait le problème mais bon ça peut peut-être servir à des débutants comme moi !!

Alors en fait dans mon "Nomdossier" je fais référence à des cellules, elles ne sont pas toujours remplies puisque les tableaux servent à faire des commandes de produits sur plusieurs semaines mais ça peut-être sur 4, 5 ou 6 semaines (et donc toutes les cellules ne sont pas remplies). Du coup mon dossier se créé bien mais l'enregistrement du fichier ne se fait pas. J'ai contourné le problème en notant le numéro des semaines dans une seule cellule !!!

Mais il existe peut-être (sûrement) quelque chose qui permette de dire que la cellule peut-être vide donc si quelqu'un a tout de même une solution pour que ça puisse fonctionner dans le cas ou une des cellules est vide je suis preneuse.
 

JCGL

XLDnaute Barbatruc
Re : Problème avec mon SaveAs

Bonjour à tous,

Si nous avions eu ton fichier, nous aurions, peut-être, remarqué ce manque...

Un test d'erreur :
VB:
If Application.WorksheetFunction.CountA(Sheets("Epicerie").[B2:G2]) <> 6 Then MsgBox "Il manque une ou des valeurs nécessaire(s) à la sauvegarde...", 0, "Oups!!!"
A + à tous
 
Dernière édition:

Staple1600

XLDnaute Barbatruc
Re : Problème avec mon SaveAs

Bonsoir


Pour infos: si tu veux simplifier ton code pour créer ton nom de dossier tu peux t'inspirer de ceci
Code:
Sub test()
Dim nomdossier$, t
With Application: t = .Transpose(.Transpose([B2:G2])): End With
nomdossier = "Commande SEM " & Join(t, Chr(32))
MsgBox nomdossier
End Sub
 

tim_so

XLDnaute Nouveau
Re : Problème avec mon SaveAs

Bonjour,

C'est vrai JCGL, c'est ce que je me suis dit aussi pour le fichier. Je pensais que pour le coup il n'y en avait pas forcément besoin, la prochaine fois je ne me poserais pas la question !!!

Je vais tester vos deux codes en revenant de vacances (j'interviens dans deux établissements et aujourd'hui je n'ai pas mes fichiers pour pouvoir tester malheureusement).

En tout cas merci pour vos réponses.

bonne journée
 

Discussions similaires

Statistiques des forums

Discussions
312 489
Messages
2 088 855
Membres
103 979
dernier inscrit
bderradji