Enregistrement automatique

RONIBO

XLDnaute Impliqué
Bonjour,



J'ai besoin de votre soutien afin de finaliser mon projet



j'ai crée un modèle de facture, jusque ici tout va bien



j'aimerai qu'elle nomme automatique la facture que j'ai créer lorsque que je fais enregistrer sous



on considère E8 comme "Facture Nº", F8 comme "057" (numéro de facture) et D9 comme le nom client (exemple) Pierre

lorsque j'enregistre sous, je souhaiterai la nommer comme ceci : Facture N°057 - Pierre



Comment fait-on pour enregistrer un fichier à partir des cellules



merci d'avance et à+ :)
 

Gelinotte

XLDnaute Accro
Re : Enregistrement automatique

Bonsoir,

Intercepter la fonction "Enregistrer sous", je ne saurais faire.

Un bouton non imprimable qui enregistre en format pdf serait une option intéressante.
Sous Excel 2007, le format pdf n'est pas natif, il faut installer le plug-in ... ICI ...

Adapter le chemin et le nom de la feuille ...

Code:
Sub Macro1()
Dim Chemin As String

Chemin = "C:\a_test\Robino\"
ActiveSheet.ExportAsFixedFormat Type:=xlTypePDF, Filename:=Chemin & _
   Sheets("feuil1").Range("E8").Value & Sheets("feuil1").Range("F8").Value & _
   " - " & Sheets("feuil1").Range("D9").Value & ".pdf", Quality:=xlQualityStandard, _
   IncludeDocProperties:=True, IgnorePrintAreas:=False, OpenAfterPublish:= _
   False
End Sub


G
 

Grand Chaman Excel

XLDnaute Impliqué
Re : Enregistrement automatique

Bonsoir Ronibo,

Cette macro sauvegarde sous.... en format .xlsm simplement :
(adapter le répertoire de sauvegarder (dossier) au besoin)

VB:
Sub Sauvegarder()
    Dim sDossier As String
    Dim sFichier As String
    
    sDossier = ActiveWorkbook.Path & "\"    'Dossier doit terminé par "\", par défaut, répertoire de la facture
    sFichier = Range("E8") & Range("F8") & " - " & Range("D9") & ".xlsm"  'nom du fichier
    
    ThisWorkbook.SaveAs sDossier & sFichier
End Sub

A+
 

RONIBO

XLDnaute Impliqué
Re : Enregistrement automatique

Bonsoir Ronibo,

Cette macro sauvegarde sous.... en format .xlsm simplement :
(adapter le répertoire de sauvegarder (dossier) au besoin)

VB:
Sub Sauvegarder()
    Dim sDossier As String
    Dim sFichier As String
    
    sDossier = ActiveWorkbook.Path & "\"    'Dossier doit terminé par "\", par défaut, répertoire de la facture
    sFichier = Range("E8") & Range("F8") & " - " & Range("D9") & ".xlsm"  'nom du fichier
    
    ThisWorkbook.SaveAs sDossier & sFichier
End Sub

A+

Re, tout d'abord merci à vous deux pour votre aide c'est très gentil :)
Si j'ai bien compris j'ai juste à mettre le chemin du dossier pour que ça fonctionne?
Tu peux me souligner en je dois l'insérer?
En E8 c'est ta dire "Facture N°" j'ai créer une liste déroulante qui me permet de sélectionner parmi les trois choix (Facture nº, devis n° et bon de commande nº, est qui serai possible d'enregistrer les documents de chaque catégorie dans un dossier spécifique, (tous les facture dans un dossier, les devis dans un autre)
À+
 

RONIBO

XLDnaute Impliqué
Re : Enregistrement automatique

Bonsoir Ronibo,

Cette macro sauvegarde sous.... en format .xlsm simplement :
(adapter le répertoire de sauvegarder (dossier) au besoin)

VB:
Sub Sauvegarder()
    Dim sDossier As String
    Dim sFichier As String
    
    sDossier = ActiveWorkbook.Path & "\"    'Dossier doit terminé par "\", par défaut, répertoire de la facture
    sFichier = Range("E8") & Range("F8") & " - " & Range("D9") & ".xlsm"  'nom du fichier
    
    ThisWorkbook.SaveAs sDossier & sFichier
End Sub

A+

Bonjour,


J'ai pas réussi à intégrer la macro dans mon fichier c'est pour cela que je mets en pj le fichier


J'enregistre les documents sur ce chemin

D:\Picard Metal\Facture\


a+
 
Dernière édition:

bof

XLDnaute Occasionnel
Re : Enregistrement automatique

Bonjour,
A essayer (non testé) :
Code:
Private Sub Workbook_BeforeSave(ByVal SaveAsUI As Boolean, Cancel As Boolean)
SaveAsUI = False
Cancel = True
With Worksheets("Picard Bat")
Select Case Left(.Range("E8"), 1)
Case "F": chemin = "D:\Picard Metal\Facture\"
Case "D": chemin = "D:\Picard Metal\Devis\"
Case "B": chemin = "D:\Picard Metal\Bons\"
End Select
MyFile = Chemin & .Range("F8") & Chr(160) & "-" & Chr(160) & .Range("D9") & ".xlsm"
End With
Application.EnableEvents = False
Me.SaveAs MyFile
Application.EnableEvents = True
MsgBox "Le fichier a bien été enregistré !"
End Sub
Eventuellement ajuster les répertoires cibles pour les Bons et Devis.
A+
 
Dernière édition:

RONIBO

XLDnaute Impliqué
Re : Enregistrement automatique

Bonsoir

je viens d'essayere et ça marche mais il manque le nom du documents il me les enregistre de cette facon

003 - CHARLES

il manque Facture N° Devis N) ou bon de commande au début

est ce que quelqu'un peux corriger ceci s'il vous plait

a+
 

Gelinotte

XLDnaute Accro
Re : Enregistrement automatique

Bonsoir,

Les adresses des cellules que tu as mentionnées au post #1 ne correspondent pas à ton fichier exemple.

M'enfin. J'ai utilisé G13, H13 et A16 en espérant l'exactitude de mes choix.

Regarde cela ...

Code:
Private Sub Workbook_BeforeSave(ByVal SaveAsUI As Boolean, Cancel As Boolean)
 SaveAsUI = False
 Cancel = True
 With Worksheets("Picard Bat")
 Select Case Left(.Range("G13"), 1)
 Case "F": Chemin = "D:\Picard Metal\Facture\"
 Case "D": Chemin = "D:\Picard Metal\Devis\"
 Case "B": Chemin = "D:\Picard Metal\Bons\"
 End Select
 MyFile = Chemin & .Range("G13") & Chr(160) & "-" & Chr(160) & .Range("H13") & Chr(160) & .Range("A16") & ".xlsm"
 End With
 Application.EnableEvents = False
 Me.SaveAs MyFile
 Application.EnableEvents = True
 MsgBox "Le fichier a bien été enregistré !"
 End Sub


G
 

RONIBO

XLDnaute Impliqué
Re : Enregistrement automatique

Bonsoir,

Les adresses des cellules que tu as mentionnées au post #1 ne correspondent pas à ton fichier exemple.

M'enfin. J'ai utilisé G13, H13 et A16 en espérant l'exactitude de mes choix.

Regarde cela ...

Code:
Private Sub Workbook_BeforeSave(ByVal SaveAsUI As Boolean, Cancel As Boolean)
 SaveAsUI = False
 Cancel = True
 With Worksheets("Picard Bat")
 Select Case Left(.Range("G13"), 1)
 Case "F": Chemin = "D:\Picard Metal\Facture\"
 Case "D": Chemin = "D:\Picard Metal\Devis\"
 Case "B": Chemin = "D:\Picard Metal\Bons\"
 End Select
 MyFile = Chemin & .Range("G13") & Chr(160) & "-" & Chr(160) & .Range("H13") & Chr(160) & .Range("A16") & ".xlsm"
 End With
 Application.EnableEvents = False
 Me.SaveAs MyFile
 Application.EnableEvents = True
 MsgBox "Le fichier a bien été enregistré !"
 End Sub


G

Re,

je crois que y'a une erreur sur le code, il me surligne le titre en me disant que une erreur de compilation

a+
 

Gelinotte

XLDnaute Accro
Re : Enregistrement automatique

Bonsoir,


Il fonctionne chez-moi.
Est-ce que ces dossiers existent ????
"D:\Picard Metal\Facture\"
"D:\Picard Metal\Devis\"
"D:\Picard Metal\Bons\"

Sinon, les créer à la main ou modifier dans la macro.


G
 

Pièces jointes

  • Facture Exemple(2).xlsm
    203.4 KB · Affichages: 64

bof

XLDnaute Occasionnel
Re : Enregistrement automatique

Bonjour,
On ne nous dit pas tout...
Erreur de compilation : Il y a en général une explication qui suit.
Je vote pour
Nom ambigu détecté Workbook_BeforeClose
Si c'est le cas supprime l'ancienne macro.
A+
 

Gelinotte

XLDnaute Accro
Re : Enregistrement automatique

Bonjour,

C'est sûr qu'il faut faire attention aux noms de macro en double.

Comme mentionne bof, on peut supprimer. Mais on peut aussi mettre en commentaire si on ne veut pas perdre le code.

Puis quand tout fonctionne correctement, on peut effacer les bouts de code en commentaire pour faire plus propre.


G
 

Discussions similaires

Membres actuellement en ligne

Statistiques des forums

Discussions
313 344
Messages
2 097 337
Membres
106 916
dernier inscrit
Soltani mohamed