Enregistrer plage sous répertoire prédéfini

bd_city

XLDnaute Junior
Bonsoir le Forum,

Je cherche à modifier le code d'un bouton qui permettrait à l'utilisateur de choisir le répertoire pour enregistrer une plage définie sur son poste.

Le clic devrait ouvrir la boite de dialogue de Windows "Enregistrer sous" au lieu d'effectuer un enregistrement automatique sur le répertoire prédéfini par l'administrateur (C:\Temp\).

Voici le code (gros merci à vbacrumble !) :

Private Sub CommandButton18_Click()
Dim wkS As Workbook, wkD As Workbook, s As Worksheet
Dim nf$
Set wkS = ThisWorkbook
nf = "C:\Temp\" & Format(Date, "dd-mm-yyyy_") _
& Format(Time, "h-mm-ss") & "_" & wkS.Name
Set s = wkS.Sheets(5)
s.Range("A$73:$Q$93").Name = "Tab_1"
Application.ScreenUpdating = False
Set wkD = Workbooks.Add(xlWBATWorksheet)
s.[Tab_2].Copy wkD.Sheets(1).[A5]
wkD.SaveAs nf
wkD.Close True
Application.ScreenUpdating = True
End Sub

Dans ce code, l'enregistrement de la plage "Tab_1" sous "C:\Temp\" se fait sur une feuille non formatée. Il faut remettre en page la feuille cible d'après la mise en page de la feuille source pour pouvoir visualiser la plage correctement. Ma question est : Peut-on créer une feuille pré-formatée (d'après la mise en page originelle de la feuille source) qui servira comme modèle d'enregistrement de la plage "Tab_1" (on pourrait l'enregistre par ex. sous le même répertoire de sortie).

Merci d'avance pour votre aide et au plaisir de vous lire.
 

vbacrumble

XLDnaute Accro
Re : Enregistrer plage sous répertoire prédéfini

Bonsoir

Une petit recherche sur le forum devrait pouvoir t'aider

Excel Downloads Forums - Recherche dans les forums

voir aussi l'aide de Visual Basic for Applications -touche F1

GetSaveAsFilename, méthode - Exemple

Cet exemple montre comment afficher la boîte de dialogue Enregistrer sous, dont le filtre de fichier est défini en fichiers texte. Si l'utilisateur choisit un nom de fichier, ce nom de fichier est affiché dans un message.

fileSaveName = Application.GetSaveAsFilename( _
fileFilter:="Text Files (*.txt), *.txt")
If fileSaveName <> False Then
MsgBox "Save as " & fileSaveName
End If

Comme je ne suis pas encore sous la couette et que je suis dans un bon jour
Code:
Sub CommandButton18_Click()
Dim wkS As Workbook, wkD As Workbook, s As Worksheet
Dim nf
Set wkS = ThisWorkbook
Set s = wkS.Sheets(1)
s.Range("$A$73:$Q$93").Name = "Tab_1"
Application.ScreenUpdating = False
Set wkD = Workbooks.Add(xlWBATWorksheet)
s.[Tab_1].Copy wkD.Sheets(1).[A5]
nf = _
Application.GetSaveAsFilename(Format(Date, "dd-mm-yyyy_") & _
        Format(Time, "h-mm-ss") _
        & "_" & wkS.Name & ".xls", _
        "FICHIER EXCEL(*.xls), *.xls", 1, _
        "Sauvegarde personnalisée")
If nf <> False Then
    MsgBox "Classeur enregistré dans : " & nf, _
        vbInformation + vbOKCancel, _
        "AFFICHAGE DU REPERTOIRE DE SAUVEGARDE"
End If
wkD.SaveAs nf
wkD.Close True
Application.ScreenUpdating = True
End Sub
 
Dernière édition:

bd_city

XLDnaute Junior
Re : Enregistrer plage sous répertoire prédéfini

Bonsoir vbacrumble,

Merci pour ta réponse.

Je vois pas ou insérer ce bout de code dans la macro ?! J’ai déjà adopté le code que tu m’as refilé, il marche à merveille sauf que je préfère que l’enregistrement de la plage se fasse par la boite "Enregistrer sous".
 

bd_city

XLDnaute Junior
Re : Enregistrer plage sous répertoire prédéfini

Impec… impec…. impec !
Je confirme : t’es vraiment un as !

Sauf que je n’arrive pas à comprendre ce bout de code :
MsgBox "Classeur enregistré dans : " & nf, _
vbInformation + vbOKCancel, _
"AFFICHAGE DU REPERTOIRE DE SAUVEGARDE"
Quand j’appuie sur OK le fichier ne s’affiche pas !

Encore merci pour ton aide vbacrumble !
 

vbacrumble

XLDnaute Accro
Re : Enregistrer plage sous répertoire prédéfini

Re


Quand j’appuie sur OK le fichier ne s’affiche pas !

C'est normal, ce n'est pas ce que le code est censé faire.

C'est juste une MsgBox qui te rappelle le lieu de l'enregistrement du fichier.

je ne fais que répondre à ce que tu disais :

Je cherche à modifier le code d'un bouton qui permettrait à l'utilisateur de choisir le répertoire pour enregistrer une plage définie sur son poste.
 

bd_city

XLDnaute Junior
Re : Enregistrer plage sous répertoire prédéfini

Oups… et moi qui pensait que c’était pour afficher à l’écran le fichier enregistré.
Oui, je suis d’accord un rappel c’est toujours bon :).

Est-ce qu’il est possible que l’enregistrement se fasse dans une feuille formatée d'après la mise en page originelle de la feuille source ?
 

vbacrumble

XLDnaute Accro
Re : Enregistrer plage sous répertoire prédéfini

Bonjour


Voir la PJ (j'ai repris ton fichier de l'ancien fil )
 

Pièces jointes

  • Exemple_bd_city-3.zip
    12.3 KB · Affichages: 76
  • Exemple_bd_city-3.zip
    12.3 KB · Affichages: 81
  • Exemple_bd_city-3.zip
    12.3 KB · Affichages: 90

bd_city

XLDnaute Junior
Re : Enregistrer plage sous répertoire prédéfini

BRAVO… Et un autre exploit pour vbacrumble !

Le code marche à merveille pour la visualisation, la plage est enregistrée selon le format de la plage source (largeur colonnes / hauteur cellules) mais n’a pas respecté la mise en page de cette dernière (orientation page, marges, échelle).

Autre bug (mineur ?) : quand je veux annuler l’enregistrement le fichier s’enregistre quand même sous le nom FALSE.

Salutations cordiales et gros, gros merci pour ton aide précieuse (tous fils confondus) :)
 

Discussions similaires

Statistiques des forums

Discussions
312 226
Messages
2 086 414
Membres
103 204
dernier inscrit
alaa20dine01