Ceci est une page optimisée pour les mobiles. Cliquez sur ce texte pour afficher la vraie page.

Besoin aide VBA fonction Save As

  • Initiateur de la discussion Initiateur de la discussion Djbs
  • Date de début Date de début

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

Djbs

XLDnaute Nouveau
Bonjour à tous,

Je suis débutant sur excel et je souhaite créer une macro afin de sauvegarder une fiche, mais elle ne fonctionne pas et m'affiche le message suivant :



Ça fait déjà plusieurs heures que je tourne en rond et je n'arrive toujours pas à trouver d'où vient mon erreur.

Ma macro est la suivante :

Code:
Sub Save()

    Sheets("Base devis").Select
    
    Dim ChDir As String
    Dim NomFichier As String
    Dim NomCompletFichier As String
    Dim Grp As String
    Dim datesejour As String
    Dim Dossier As String
    
    Grp = Range("B6").Value
    datesejour = Range("N1").Value
    Dossier = Range("N2").Value
        
    Sheets("Devis").Visible = True
    Sheets("Devis").Select
         
    ChDir = Application.ActiveWorkbook.Path
    NomFichier = Grp & "_" & datesejour
    NomCompletFichier = ChDir & "\" & Dossier & "\" & NomFichier
    
    ActiveSheet.Copy
    ActiveWorkbook.SaveAs Filename:=NomCompletFichier
    ActiveWorkbook.Close
    
    MsgBox "le fichier a été enregistré sous le nom : " & vbCrLf & NomCompletFichier
    
End Function

Les valeur des cellules sont les suivantes :
-B6 = IUT
-N1 = 020514
-N2 = janvier05

Pourriez vous m'aider à trouver l'erreur dans le code ???

Merci d'avance
 

Pièces jointes

  • erreur.png
    9.1 KB · Affichages: 84
  • erreur.png
    9.1 KB · Affichages: 87
Re : Besoin aide VBA fonction Save As

bonsoir,
Code:
Sub Save()
Dim CDir$
Dim NomFichier$
Dim NomCompletFichier$
Dim Grp$
Dim datesejour$
Dim Dossier$

CDir = ActiveWorkbook.Path

With Sheets("Base devis")
    Grp = .Range("B6").Value
    datesejour = .Range("N1").Value
    Dossier = .Range("N2").Value
End With

NomFichier = Grp & "_" & datesejour
NomCompletFichier = CDir & "\" & Dossier & "\" & NomFichier & ".xlsx" 'ou .xls,...

With Sheets("Devis")
    .Visible = True
    .Copy
End With
With ActiveWorkbook
    .SaveAs NomCompletFichier
    .Close
End With

MsgBox "le fichier a été enregistré sous le nom : " & vbCrLf & NomCompletFichier
    
End Sub
A+
kjin
 
Re : Besoin aide VBA fonction Save As

Bonjour Djbs, Kjin

Juste un détail pour la sauvegarde suivant le format, il est préférable de renseigner le type de fichier sans mettre l'extension. L'extension sera rajoutée automatiquement (voir dans l'aide).

ex:

Code:
Sub sauve()
ActiveWorkbook.SaveAs "C:\Temp\Test", FileFormat:=52 '51 xlsx '52 xlsm
End Sub
 
Re : Besoin aide VBA fonction Save As

Merci à vous deux pour les améliorations que vous avez apportés au code.
Mais malheureusement, quand j’exécute la macro il m'affiche toujours le même message d'erreur 🙁

Vous voulez que je mette le fichier en ligne pour voir si mon problème ne vient pas d'une autre partie ?

En vous souhaitant de bonnes fêtes de fin d'année.
 
Re : Besoin aide VBA fonction Save As

Bonjour à tous

Une petite correction à apporter
Sub Save()
'ici ton code
End Sub

Ensuite ajoute ceci pour tester ton path
juste après cette ligne
NomCompletFichier = ChDir & "\" & Dossier & "\" & NomFichier
Msgbox NomCompletFichier

Qu'affiche alors le MsgBox?
 
Re : Besoin aide VBA fonction Save As

Re

Tu as remarqué que kjin a changé le chdir en cdir pour la raison suivante

Ci dessous ta macro modifiée simplement pour tester le path
(donc qu'affiche le msgbox?)
Code:
Sub SaveTestpath()
Dim CDir$, NomFichier$, NomCompletFichier$
Dim Grp$, datesejour$, Dossier$
With Sheets("Base devis")
    Grp = .Range("B6").Value
    datesejour = .Range("N1").Value
    Dossier = .Range("N2").Value
End With
    
Sheets("Devis").Visible = True
Sheets("Devis").Select
         
CDir = Application.ActiveWorkbook.Path
NomFichier = Grp & "_" & datesejour
NomCompletFichier = CDir & "\" & Dossier & "\" & NomFichier
MsgBox NomCompletFichier
'    ActiveSheet.Copy
'    ActiveWorkbook.SaveAs Filename:=NomCompletFichier
'    ActiveWorkbook.Close
'    MsgBox "le fichier a été enregistré sous le nom : " & vbCrLf & NomCompletFichier
End Sub
 
Dernière édition:
Re : Besoin aide VBA fonction Save As

Re


As-tu fait le test que je te demandais?
Si oui qu'affiche le MsgBox?

Bonjour,

La msgBox affiche bien C:\User\Jean-Baptiste\Desktop\k\mai14\IUT_020514.
J'avais déjà fait le test avant d'appeler à l'aide 🙂. C'est pour ça que j'arrive pas à comprendre où ça coince car c'est bien l'endroit et le nom du fichier que je veux.

Merci pour votre aide.
 
Re : Besoin aide VBA fonction Save As

Re


Oui mais il manque l'extension de ton fichier.
Extension qui avait été ajouté dans la proposition faite par kjin ...
NomCompletFichier = CDir & "\" & Dossier & "\" & NomFichier & ".xlsx" 'ou .xls,...
et ce déjà depuis 3 jours 😉
 
Dernière édition:
Re : Besoin aide VBA fonction Save As

J'avais mis l'extension mais j'ai oublié de le remettre avant de mettre le fichier en lien.

J'ai essayé avec .xls ou .xlsx et sans l'extension mais avec FileFormat:=51 ou 52 , j'ai le même message d'erreur. 🙁
 
Re : Besoin aide VBA fonction Save As

Re,

Je me sens vraiment stupide, je viens de réussir à la faire marcher.

Je comprend pas très bien pourquoi mais la macro échoue si le dossier n'existe pas mais je penser qu'il le crée automatiquement car il la déjà fait lorsque j'ai fait des tests.
Je suis vraiment désolé de vous avoir fait chercher pour rien 🙁

Juste une dernière question et j’arrête de vous embêter. Peut on modifier la macro pour qu'elle crée automatiquement le dossier s'il n'existe pas?

Cordialement
 
Re : Besoin aide VBA fonction Save As

Re

Oui c'est possible avec MkDir (voir dans l'aide VBA)
Voir aussi différents exemples présents dans les archives du forum (en cliquant sur la loupe en haut à droite)

PS:
si le dossier n'existe pas mais je penser qu'il le crée automatiquement car il la déjà fait lorsque j'ai fait des tests.
Ce n'est pas possible si la création du dossier n'est implémenté dans le code de la macro.
Donc avec ta macro d'origine, jamais un dossier n'a pu être créé automatiquement s'il n'existait pas.
 
Dernière édition:
- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD

Discussions similaires

Réponses
4
Affichages
703
Réponses
1
Affichages
277
Réponses
2
Affichages
695
  • Question Question
Microsoft 365 Code VBA
Réponses
10
Affichages
953
Réponses
3
Affichages
820
Réponses
10
Affichages
705
Réponses
5
Affichages
635
Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…