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

VBA > Créer un dossier nom variable et y enregistrer un fichier portant le même nom

rems

XLDnaute Nouveau
Bonjour,

Nouveau sur ce forum et débutant en VBA, je cherche à créer un dossier dont le nom varie selon le fichier qui sera enregistré dans ce dossier.

Je souhaite partir d'une feuille EXCEL (fiche précédemment créée) qui devra être sauvegardée dans :
1/ un dossier à créer sous C:\Fiches\ et qui portera le nom contenu dans la cellule I4 de la feuille EXCEL ;
2/ une fois le dossier créé (et vérification faite qu'il n'existe pas déjà), la feuille EXCEL devra être enregistrée dans ce dossier créé sous le même nom contenu dans la cellule I4.xls

Avec mes maigres connaissances, j'en suis au code ci-dessous mais je n'arrive pas au résultat souhaité (pour le moment j'ai une dialog box qui me permet d'aller l'enregistrer mais ce n'est pas ce que je souhaite ...).
- - - - - - - - -
Sub Savesheet()
ActiveSheet.Name = Range("I4").Text
InitialFileName = Range("I4").Text
If Len(Dir("C:\Fiches\" & Range("I4").Value, vbDirectory)) = 0 Then
MkDir "C:\Fiches\" & Range("I4").Value
End If
Application.Dialogs(xlDialogSaveAs).Show CStr(ThisWorkbook.ActiveSheet.Range("I4").Value)
End Sub
- - - - - - - - -
Si vous avez une solution à m'apporter, je suis preneur.
Merci d'avance pour votre aide.
Bonne soirée.
 

Staple1600

XLDnaute Barbatruc
Re : VBA > Créer un dossier nom variable et y enregistrer un fichier portant le même

Bonsoir

Merci pour le retour
Quelques suggestions
Code:
Sub Savesheet()
Dim FolderPath As String, TestStr As String, Nom As String
ActiveSheet.Copy
Nom = [I4]
ActiveSheet.Name = Nom
InitialFileName = Nom
With ActiveSheet.Range("A1:J45")
.Value=.Value
End With
    FolderPath = "C:\Fiches\" & Nom & "\"
    TestStr = ""' début de " je me complique la vie"
    On Error Resume Next
    TestStr = Dir(FolderPath)
    On Error GoTo 0
    If TestStr = "" Then
        MkDir "C:\Fiches\" & Nom' fin de je me complique la vie
' le If End if des exemples précents pouvaient suffire
        ChDir "C:\Fiches\" & Nom
Application.Dialogs(xlDialogSaveAs).Show CStr(ThisWorkbook.ActiveSheet.Range("I4").Value)
    Else
        MsgBox "ATTENTION : folder already exists."
        Application.Dialogs(xlDialogSaveAs).Show CStr(ThisWorkbook.ActiveSheet.Range("I4").Value)
    End If
End Sub
 

rems

XLDnaute Nouveau
Re : VBA > Créer un dossier nom variable et y enregistrer un fichier portant le même


Plus clean et tout aussi efficace, merci beaucoup !
Rems
 

Staple1600

XLDnaute Barbatruc
Re : VBA > Créer un dossier nom variable et y enregistrer un fichier portant le même

Re

Un dernier petit coup de balai avant d'aller préparer la soupe
Code:
Sub SavesheetTer()
 Dim FolderPath$, Nom$
 ActiveSheet.Copy
 Nom = [I4]
 With ActiveSheet.Range("A1:J45")
       .Value = .Value
  End With
FolderPath = "C:\Temp\" & Nom
If Dir(FolderPath, vbDirectory) = "" Then
        MkDir FolderPath
        ChDir FolderPath
        Application.Dialogs(xlDialogSaveAs).Show Nom
        Else
        MsgBox "ATTENTION : folder already exists."
        Application.Dialogs(xlDialogSaveAs).Show Nom
End If
End Sub
PS: Je te laisse remettre le bon path (que j'ai changé pour faire mes tests ici)
 
Dernière édition:

MarieVT

XLDnaute Nouveau
Re : VBA > Créer un dossier nom variable et y enregistrer un fichier portant le même

Bonjour,

Je voudrais savoir s'il serait possible d'intégrer dans If Dir("C:\Temp\" & Nom, vbDirectory) = "" Then MkDir "C:\Temp\(INTEGRER ICI)\" & Nom

la valeur d'une cellule A1, par exemple...

Merci !!!
 

Discussions similaires

Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…