XL 2019 bouton enregistrer

toffduq

XLDnaute Occasionnel
bonjour à tous le forum
je suis entrain de créer un bouton enregistrer sur une feuille
avec ce code

Sub enregistrer()
ThisWorkbook.Save
End Sub

la question est comment faire pour enregistrer dans un dossier précis et en le nommant avec le contenu d'une cellule qui se nomme (='base de donnée'!B1)

merci
 
Solution
Le '/' est interdit dans les références de fichiers je crois.
Essayez comme ça :
VB:
Sub Enregistrer()
   ThisWorkbook.SaveAs "B:\Desktop\fiche palette\" & ['base de donnée'!B1].Text _
      & "-" & Format(Now, "yy-mm-dd-hh-mm-ss")
   End Sub

Dranreb

XLDnaute Barbatruc
Spécifiez le chemin dans la cellule.
Remarque: vous pourriez le déterminer par Application.GetSaveAsFilename

Exemple dans le module de l'objet Worrksheet de la feuille "base de donnée" :
VB:
Option Explicit

Private Sub Worksheet_SelectionChange(ByVal Target As Range)
   If Target.Address = "$B$1" Then
      Target.Value = Application.GetSaveAsFilename(, "Excel avec macro,*.xlsm")
      End If
   End Sub
 
Dernière édition:

Dranreb

XLDnaute Barbatruc
Qu'est ce qui ne fonctionne pas ?
Pour garantir que la référence du fichier est correcte, toujours dans le module du Worksheet pour la feuille :
VB:
Option Explicit

Private Sub Worksheet_SelectionChange(ByVal Target As Range)
   Dim GSAsFnm
   If Target.Address = "$B$1" Then
      GSAsFnm = Application.GetSaveAsFilename(, "Excel avec macro,*.xlsm")
      If VarType(GSAsFnm) = vbString Then Target.Value = GSAsFnm
      End If
   End Sub
 

Dranreb

XLDnaute Barbatruc
Avez vous utilisé ma Worksheet_SelectionChange ?
Une autre mouture :
VB:
Option Explicit

Private Sub Worksheet_SelectionChange(ByVal Target As Range)
   Dim GSAsFnm As Variant
   If Target.Address = "$B$1" Then
      GSAsFnm = Target.Value
      On Error Resume Next
      ChDrive GSAsFnm: ChDir Left(GSAsFnm, InStrRev(GSAsFnm, "\") - 1)
      On Error GoTo 0
      GSAsFnm = Application.GetSaveAsFilename(InitialFileName:=ThisWorkbook.Name, _
         FileFilter:="Excel avec macro,*.xlsm")
      If VarType(GSAsFnm) = vbString Then Target.Value = GSAsFnm
      End If
   End Sub
 

Dranreb

XLDnaute Barbatruc
Alors, si vous l'avez bien exécuté en sélectionnant cette cellule, c'est la Sub Enregistrer du bouton qui ne va pas ?
Mettez un espion sur ['base de donnée'!B1].Value pour vérifier que ça ramène bien le nom complet du fichier, muni de son chemin.
 

Dranreb

XLDnaute Barbatruc
Oui, bien sur. Il faut simplement y mettre le chemin devant avec ce que j'avais compris.
À moins qu'il soit fixe bien sûr. Dans ce cas il suffit de le concaténer devant :
VB:
Sub Enregistrer()
   ThisWorkbook.SaveAs "B:\Desktop\fiche palette\" & ['base de donnée'!B1].Text
   End Sub
 
Dernière édition:

Discussions similaires

Réponses
2
Affichages
253

Statistiques des forums

Discussions
311 733
Messages
2 082 015
Membres
101 867
dernier inscrit
XFPRO