XL 2019 bouton enregistrer

  • Initiateur de la discussion Initiateur de la discussion toffduq
  • 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 !

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
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:
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
 
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
 
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.
 
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:
- 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
0
Affichages
113
Réponses
15
Affichages
301
Réponses
2
Affichages
118
  • Question Question
Microsoft 365 Problème macro
Réponses
4
Affichages
318
  • Question Question
Microsoft 365 bouton supprimer
Réponses
4
Affichages
141
Réponses
40
Affichages
1 K
Retour