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 !
Bonjour Quicksland et le Forum,
à tester, ça devrait suffire de remplacer la macro EditionJL par la macro suivante (difficile pour moi de faire plus avec des feuilles cachées et protection par mot de passe)
VB:
Sub ExportSheetJL()Dim Dossier AsString, Horodatage AsString, NomFichier AsStringDim targetWorkbook As Workbook
Dossier = ThisWorkbook.Path 'r_pertoire courant o? sera cr__ le fichier PDF
Horodatage = WorksheetFunction.Text(Now,"YYYYMMDD-HHMM")'avec les heures et minutes
NomFichier ="Journal des stocks "& Horodatage
Extension =".xlsx"
CheminJL = Dossier &"\"& NomFichier & Extension
ThisWorkbook.Sheets("JOURNAL").Copy
With ActiveWorkbook
.SaveAs CheminJL
.Close
EndWithEndSub
Bonjour Quicksland et le Forum,
à tester, ça devrait suffire de remplacer la macro EditionJL par la macro suivante (difficile pour moi de faire plus avec des feuilles cachées et protection par mot de passe)
VB:
Sub ExportSheetJL()Dim Dossier AsString, Horodatage AsString, NomFichier AsStringDim targetWorkbook As Workbook
Dossier = ThisWorkbook.Path 'r_pertoire courant o? sera cr__ le fichier PDF
Horodatage = WorksheetFunction.Text(Now,"YYYYMMDD-HHMM")'avec les heures et minutes
NomFichier ="Journal des stocks "& Horodatage
Extension =".xlsx"
CheminJL = Dossier &"\"& NomFichier & Extension
ThisWorkbook.Sheets("JOURNAL").Copy
With ActiveWorkbook
.SaveAs CheminJL
.Close
EndWithEndSub
C'est normal que tu aies ce message d'alerte : tu as des macros dans ta feuille "JOURNAL", mais tu enregistres la feuille en .xlsX.
Soit tu veux envoyer la feuille avec ses macros, et donc tu enregistres la feuille en .xlsM.
Soit tu veux envoyer la feuille sans ses macros, et donc tu enregistres la feuille en xlsX.
Je te propose une macro qui fait, au choix, un des 3 formats (pdf, xlsx, xlsm) :
VB:
Sub EditionJL(Extension AsString)'Dim Dossier$, Horodatage$, NomFichier$
Application.ScreenUpdating =False
Dossier = ThisWorkbook.Path ' Répertoire courant où sera créé le fichier PDF
Horodatage = Format(Now," YYYYMMDD-HHMM")' Avec les heures et minutes
NomFichier ="Journal des stocks "& Horodatage
CheminJL = Dossier &"\"& NomFichier & Extension
With Sheets("JOURNAL")SelectCase Extension
Case".pdf".ExportAsFixedFormat Type:=xlTypePDF, Filename:=CheminJL, IgnorePrintAreas:=FalseCase".xlsx".Copy
Application.DisplayAlerts =False
ActiveWorkbook.SaveAs Filename:=CheminJL, FileFormat:=xlOpenXMLWorkbook
ActiveWorkbook.Close
Case".xlsm".Copy
ActiveWorkbook.SaveAs Filename:=CheminJL, FileFormat:=xlOpenXMLWorkbookMacroEnabled
ActiveWorkbook.Close
CaseElse
MsgBox "Feuille non enregistrée car format '"& Extension &"' inconnu.", vbOKOnly + vbInformation,"Erreur"EndSelectEndWithEndSub
Il faut donc appeler la macro de cette façon, selon le format sous lequel tu veux enregistrer la feuille : call EditionJL(".pdf") ou call EditionJL(".xlsx") ou call EditionJL(".xlsm").
Si tu passes en paramètre autre chose qu'une de ces trois extensions, tu as un message d'alerte qui te prévient immédiatement que l'enregistrement n'a pas été effectué car le format n'est pas connu.
Si tu trouves que c'est trop compliqué, tu supprimes tout ce qu'il y a en trop pour ne garder que le format que tu veux. 😉
C'est normal que tu aies ce message d'alerte : tu as des macros dans ta feuille "JOURNAL", mais tu enregistres la feuille en .xlsX.
Soit tu veux envoyer la feuille avec ses macros, et donc tu enregistres la feuille en .xlsM.
Soit tu veux envoyer la feuille sans ses macros, et donc tu enregistres la feuille en xlsX.
Je te propose une macro qui fait, au choix, un des 3 formats (pdf, xlsx, xlsm) :
VB:
Sub EditionJL(Extension AsString)'Dim Dossier$, Horodatage$, NomFichier$
Application.ScreenUpdating =False
Dossier = ThisWorkbook.Path ' Répertoire courant où sera créé le fichier PDF
Horodatage = WorksheetFunction.Text(Now," YYYYMMDD-HHMM")' Avec les heures et minutes
NomFichier ="Journal des stocks "& Horodatage
CheminJL = Dossier &"\"& NomFichier & Extension
With Sheets("JOURNAL")SelectCase Extension
Case".pdf".ExportAsFixedFormat Type:=xlTypePDF, Filename:=CheminJL, IgnorePrintAreas:=FalseCase".xlsx".Copy
Application.DisplayAlerts =False
ActiveWorkbook.SaveAs Filename:=CheminJL, FileFormat:=xlOpenXMLWorkbook
ActiveWorkbook.Close
Case".xlsm".Copy
ActiveWorkbook.SaveAs Filename:=CheminJL, FileFormat:=xlOpenXMLWorkbookMacroEnabled
ActiveWorkbook.Close
CaseElse
MsgBox "Feuille non enregistrée car format '"& Extension &"' inconnu.", vbOKOnly + vbInformation,"Erreur"EndSelectEndWithEndSub
Il faut donc appeler la macro de cette façon, selon le format sous lequel tu veux enregistrer la feuille : call EditionJL(".pdf") ou call EditionJL(".xlsx") ou call EditionJL(".xlsm").
Si tu passes en paramètre autre chose qu'une de ces trois extensions, tu as un message d'alerte qui te prévient immédiatement que l'enregistrement n'a pas été effectué car le format n'est pas connu.
Si tu trouves que c'est trop compliqué, tu supprimes tout ce qu'il y a en trop pour ne garder que le format que tu veux. 😉
Je me posais la même question quand je t'ai vu arriver il y a 10 ou 15 minutes. 🤣 🤣 🤣
Je n'ai pas touché à cette macro.
Tu n'avais pas l'erreur avant ?
Tu as bien lu tout ce que j'ai écrit en #8 ???
J'ai changé le nom de la macro (j'ai en fait laissé celui d'origine), donc si tu veux l'appeler, il faut mettre son nom...
Et c'est pas comme si je l'avais écrit en couleur, et avec les 3 possibilités ! 😡😤
Il faut donc appeler la macro de cette façon, selon le format sous lequel tu veux enregistrer la feuille : call EditionJL(".pdf") ou call EditionJL(".xlsx") ou call EditionJL(".xlsm").
- 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