Problème sauvegarde onglet dans un nouveau classeur

slaurent01

XLDnaute Junior
Bonjour,

J'ai un problème que je n'arrive pas à résoudre depuis un bon moment. et je viens demander de l'aide.

J'ai un onglet et quand je clique sur SAUVE, je veux copier cet onglet "Devis" dans un nouveau classeur puis le sauvegarder selon un nom définit par Vba et fermer ce nouveau classeur.

J'arrive à copier l'onglet dans un nouveau classeur,
J'arrive à créer le nom,
Mais pas la sauvegarde, mon code ne marche pas, ni la fermeture du dossier.

Je suis plus que débutant en vba, Je vous remercie par avance


Code:
Sub EnregistrerSous()

    Dim NomFichier As Variant, v As Integer, X As String, w As String, Y As String, z As String, NomDefaut As String
   

    'Définition des variables qui vont composer le nom du fichier
    w = ThisWorkbook.Worksheets("Devis").Range("D3")
    v = "-" & ThisWorkbook.Worksheets("Devis").Range("A4")
    X = "-" & ThisWorkbook.Worksheets("Devis").Range("D4")
    Y = "-" & Format(Date, "dd mm yyyy")
    z = "-" & Format(Time, "hhmmss")
    
    'Création du nom du fichier
    NomDefaut = w & v & X & Y & z
    
    'Création d'un nouveau classeur et copie de l'onglet devis
    
    Set wk = Workbooks.Add(xlWBATWorksheet)
    Set Ws = ThisWorkbook.Worksheets("Devis")
    Ws.Copy After:=wk.Sheets(Sheets.Count)

    
    'Ouverture de Enregistrer sous
    NomFichier = Application.GetSaveAsFilename(NomDefaut, "Microsoft Excel (*.xlsm), *.xlsm")
    'Sauvegarde
    If NomFichier = False Then Exit Sub
    ActiveWorkbook.SaveAs Filename:=NomFichier
    
End Sub
Cordialement stéphane
 

Pièces jointes

  • Feuil6.xlsm
    236.9 KB · Affichages: 34

kjin

XLDnaute Barbatruc
Re : Problème sauvegarde onglet dans un nouveau classeur

Bonjour,
Je ne pige pas !
Si tu crées NomDéfaut je suppose que c'est pour t'en servir et dans ce cas pourquoi ouvrir la boite "enregistrer sous" ?
Si c'est pour choisir le répertoire de destination, c'est une autre question !
A+
kjin
 

kjin

XLDnaute Barbatruc
Re : Problème sauvegarde onglet dans un nouveau classeur

Bonsoir,
...oui je crée un nom par défaut, mais l'utilisateur à un répertoire propre à son pc, c'est pour ca que j'ouvre le ''enregistrer sous"
Autant ouvrir la boite idoine...
Code:
Sub EnregistrerSous()
Dim NomFichier$, Dossier$, v$, x$, w$, y$, z$
Dossier = ChoixDossier
If Dossier = "" Then Exit Sub
Application.ScreenUpdating = False
With Worksheets("Devis")
    w = .Range("D3")
    v = "-" & .Range("A4")
    x = "-" & .Range("D4")
    y = "-" & Format(Date, "dd mm yyyy")
    z = "-" & Format(Time, "hhmmss")
    .Copy
End With
NomFichier = w & v & x & y & z & ".xlsm"
With ActiveWorkbook
    .SaveAs Dossier & "\" & NomFichier
    .Close
End With
End Sub

'http://msdn.microsoft.com/en-us/library/windows/desktop/bb774065%28v=vs.85%29.aspx
Function ChoixDossier() As String
Dim objShell
Dim objFolder
Set objShell = CreateObject("shell.application")
    Set objFolder = objShell.BrowseForFolder(0, "Choisissez le dossier de sauvegarde", 0, 5)
        If (Not objFolder Is Nothing) Then
            ChoixDossier = objFolder.Self.Path
        End If
    Set objFolder = Nothing
Set objShell = Nothing
End Function
A+
kjin
 

slaurent01

XLDnaute Junior
Re : Problème sauvegarde onglet dans un nouveau classeur

Bonjour le forum,

Bonjour Kjin, Et merci pour ta réponse. Ce code fonctionne bien dans mon projet.

Cependant si je peux me permettre, de te demander encore un peu d'aide, je n'ai pas acces aux lecteurs réseaux, (par ex : P\Commercial\devis....)
qu'elle ligne de code dois-je modifier pour afficher ces lecteurs dans la boite de dialogue.

De plus je peux enregistrer le fichier en ".XLS", ".XLM" mais pas en ".XLSM" j'apporte bien la modification dans le code mais il m'affiche un message comme quoi l'extension n'est pas valide.

Merci pour l'attention que tu as déja porté à ma demande,
bonne journée
Stéphane
 

kjin

XLDnaute Barbatruc
Re : Problème sauvegarde onglet dans un nouveau classeur

bonjour,
Cependant si je peux me permettre, de te demander encore un peu d'aide, je n'ai pas acces aux lecteurs réseaux, (par ex : P\Commercial\devis....)
Essaie de remplacer 5 par 0
Code:
 Set objFolder = objShell.BrowseForFolder(0, "Choisissez le dossier de sauvegarde", 0, 0)

De plus je peux enregistrer le fichier en ".XLS", ".XLM" mais pas en ".XLSM" j'apporte bien la modification dans le code mais il m'affiche un message comme quoi l'extension n'est pas valide.
Désolé, je n'ai pas 2007 donc je pense qu'il faut spécifier le format du fichier
Code:
With ActiveWorkbook
    .SaveAs Dossier & "\" & NomFichier , fileformat:=52
A+
kjin
 

slaurent01

XLDnaute Junior
[RESOLU] Problème sauvegarde onglet dans un nouveau classeur

Bonjour à tous,


Un très grand merci, pour ton aide Kjin, tout fonctionne parfaitement. ca faisait plusieurs jours que j'étais dessus....
Je peux ainsi continu à finaliser mon projet.
Bon apres midi

Cordialement
stephane
 

Discussions similaires

Membres actuellement en ligne

Statistiques des forums

Discussions
312 520
Messages
2 089 299
Membres
104 092
dernier inscrit
karbone57