Je souhaite créer un document excel avec un bouton, une macro laquelle enregistrerait le document sous le format PDF dans un répertoire “mes documents/modifications de service”
Je souhaiterais que le nom du fichier (afin qu’il soit classé par date) soit automatiquement enregistré sous la forme année_mois_jour_heure_minutes_modification de service.PDF en cliquant sur le bouton enregistrer.
l’année, le mois, le jour et l’heure correspondant à la date où j’enregistre le document.
Qu’elqu’un peut-il m’aider à créer cette macro?
Merci d’avance
Voici une macro à mettre dans un module de votre classeur EXCEL
Il faudra bien veiller à modifier le chemin d’enregistrement (REP)
Sub Enreg_Pdf()
Dim LaDate$, Nom$, Rep$ 'Déclaration des variables
LaDate = Format(Now, "yyyy_mm_dd_") & Format(Time, "hh_mm_") 'formatage de la date et heure
Nom = "modification de service" 'Nom de l'onglet à entregistrer
Rep = "C:\Users\mes documents/modifications de service\" ' Chemin du répertoire à adapter depuis votre PC
ActiveSheet.ExportAsFixedFormat Type:=xlTypePDF, Filename:= _
Rep & LaDate & "_" & Nom & ".pdf", Quality:= _
xlQualityStandard, IncludeDocProperties:=True, IgnorePrintAreas:=False, _
From:=1, To:=1, OpenAfterPublish:=False 'enregistrement du fichier en PDF
End Sub
Mais cela ne fonctionne pas.
En cliquant sur le bouton pour enregistrer le fichier, je reçois ce message d’erreur : erreur d’exécution ‹ 5 ›, argument ou appel de procédure incorrect
je suis fort interessé par votre macro mais je ne parviens pas à la faire fonctionner. je vous joins une copie du fichier. Il s’agit de la gestion des stupéfiants de mon bloc opératoire.
Pour résumer, je voudrais que le fichier soit formatté en “yyyy.dd.mm_STUPS.nom de l’intervenant.PDF”.
Et s’enregistrer dans le dossier “P:\DAR\Anestbo\Pharmacie (NEW)\Gestion des stupéfiants\Archive”
A chaque fois que je lance la macro une erreur se produit etle debogeur demarre mais comme je pige pas grand chose au VBA…la macro en question s’appelle signaturePDF
Par ailleurs, et ce que cette macro enregistre toutesles pges du fichier excel, ou juste l’une d’entre elles ?
Teste avec ceci
et vérifie bien que le répertoire est identique à ceci "P:\DAR\Anestbo\Pharmacie (NEW)\Gestion des stupefiants\Archive\"
car tu as deux espaces après Pharmacie et avant (NEW)
Au mieux, il est préférable de faire un copier/coller depuis l’explorateur
Sub SignaturePDF()
'
' SignaturePDF Macro
'
'
Dim LaDate$, Nom$, Rep$ 'DŽclaration des variables
LaDate = Format(Now, "yyyy_mm_dd_")
Nom = "STUPS" 'Nom de l'onglet ˆ entregistrer
Rep = "P:\DAR\Anestbo\Pharmacie (NEW)\Gestion des stupefiants\Archive\" ' Chemin du rŽpertoire ˆ adapter depuis votre PC"
ActiveSheet.ExportAsFixedFormat Type:=xlTypePDF, FileName:= _
Rep & LaDate & "_" & Nom & ".pdf", Quality:= _
xlQualityStandard, IncludeDocProperties:=True, IgnorePrintAreas:=False, _
From:=1, To:=1, OpenAfterPublish:=False 'enregistrement du fichier en PDF
End Sub
Merci Mimimathy,
Comment transformer ton code pour que le fichier soit enregistré non plus en pdf mais au format excel, mais non modifiable, un peu s’il fallait protéger l’intégralité de la feuille nouvellement génerée lors de la signature, devenant ainsi lecture seule ?
Faut développer un peu plus,
Tu parles de Fichier, sur Excel on parle de Classeur qui contient des feuilles (ou Onglet)
Donc des précisions sur la demande est nécessaire
Et il aurait été préférable de créer votre propre post avec en référence le post présent
Bonsoir Mimimathy, désolé mais je ne sais pas comment creer un nouveau post en y integrant un post précedent, ce qui explique que je continue la suite ici, il y a dejà le fruit de ton aide.
Pour revenir à ce fichier classeur excel, avec lequel mes collègues se sont familiarisés, je souhaiterai apporter quelques modifications:
1- La macro Signature pdf que tu m’as aidé à réaliser enregistre le fichier au format pdf, est-il possible qu’il enregistre toutes les pages du fichier dans un pdf de plusieurs pages ? Sinon, peut-on demander à la macro de garder le format xlsx en sortie, mais dans ce cas le fichier de sorie serait totalement protege de toute modification (genre lecture seule).
2- Je voudrais faire, toujours dans cette même macro, une seconde operation, c’est à dire qu’en même temps qu’elle enregistre le fichier, elle en lance une impression, mais d’une page bien precise. Faut il creer une autre macro ? comment inserer une macro dans une macro ?
3- A l’usage, nous nous sommes rendus compte d’une coquille. Si, le même jour, nous ouvrons 2 classeurs que l’on signe toujours avec cette macro, sna s message d’avertissement le dernier clique sur le bouton signature ecrase le fichier pdf precedemment generé par la macro. Pour faire simple si je fais “enregistrer sous” (ce que fait la macro pour resumer), et que je mets 2 fois le même nom de fichier, um nessage d’alerte me demande si je souhaite remplacer le précédent, or avec cette macro la demande n’est pas generée et le fichier precedent est ecrasé. Quelle solution avons nous ? Ce cas se produit quand le même jour, je fais une entrée dans ma pharmacie d’ une nouvelle dotation de stupefiants (je signe alors le fichier) et que plus tard dans l’AM, je fais une “sortie” de stups. A ce moment le fichier d’entree premièrement generé sera effacé par le second.
J’espère avoir ete clair, sinon on decomposera les differents pb. Je te remercie d’avance, Cedrick M.STUPSV44.xlsm (182,0 Ko)
Remplace par cette macro.
Elle enregistre en PDF toutes les feuilles sauf la feuille ACCUEIL dans un seul PDF (Demande N°1)
Elle enregistre avec le même nom, même date et au bout de la date, l’heure. Ce qui évite l’effacement du précédent à la même date (Demande N°3)
Pour la demande N°2, comme je ne connait pas la feuille à imprimer, j’ai rien exploiter.
Tout comme la mise en page avec un classeur et des feuilles protégées par mot de passe
Sub SignaturePDF()
'
' SignaturePDF Macro
Dim LaDate$, Nom$, Rep$ 'Déclaration des variables
Sheets(Array("MOUVEMENTS", "RECAPITULATIF", "SALLE 1", "SALLE 2", "SALLE 3", "SALLE 4", "SALLE 5", "SALLE 6", "SALLE 7", "CMCE", "REVEIL", "DETAIL")).Select
LaDate = Format(Now, "yyyy_mm_dd_hh mm")
Nom = "STUPS" 'Nom de l'onglet ˆ entregistrer
Rep = "P:\DAR\Anestbo\Pharmacie (NEW)\Gestion des stupéfiants\Archive\ " ' Chemin du rŽpertoire ˆ adapter depuis votre PC"
ActiveSheet.ExportAsFixedFormat Type:=xlTypePDF, FileName:= _
Rep & LaDate & "_" & Nom & ".pdf", Quality:= _
xlQualityStandard, IncludeDocProperties:=True, IgnorePrintAreas:=False, _
OpenAfterPublish:=False 'enregistrement du fichier en PDF
End Sub
Bonjour Mimimathy,
je te remercie pour ta reponse. Je vois à travers cette dernière, que parfois, il faut pousser le raisonnement un peu plus loin pour avoir la réponse qui parait avant complexe. L’exemple que tu me donnes sur le formatage du fichier en ajoutant l’heure d’enregistrement, j’admets que ne n’y avais pas du tout pensé, et pourtant j’ai passé un moment ces dernières semaines sur cette question.
Je reviens sur la question 2 que tu n’as pas traiter suite à un manque d’informations, en effet, la feuille à imprimer est la feuille “RECAPITULATIF”.
Sub SignaturePDF()
'
' SignaturePDF Macro
Dim LaDate$, Nom$, Rep$ 'Déclaration des variables
Sheets("RECAPITULATIF").Select
LaDate = Format(Now, "yyyy_mm_dd_hh mm")
Nom = "STUPS" 'Nom de l'onglet ˆ entregistrer
Rep = "P:\DAR\Anestbo\Pharmacie (NEW)\Gestion des stupéfiants\Archive\ " ' Chemin du rŽpertoire ˆ adapter depuis votre PC"
ActiveSheet.ExportAsFixedFormat Type:=xlTypePDF, FileName:= _
Rep & LaDate & "_" & Nom & ".pdf", Quality:= _
xlQualityStandard, IncludeDocProperties:=True, IgnorePrintAreas:=False, _
OpenAfterPublish:=False 'enregistrement du fichier en PDF
End Sub
Macro super top, merci mais …
Comment ajouter dans le nom du fichier la valeur d’un champ concaténé en AA1 de l’onglet « clients » ?
J’ai dans l’onglet « clients » un champ ou je concatène 2 autres champs et je voudrais avoir comme préfixe du fichier sauvegardé en PDF la valeur de ce champ, est-ce possible ?
Merci d’avance pour la réponse
Michel
Sub VendeurOKtoPDF()
’
’ Enregistre en PDF l’onglet VendeurOK
’
Dim LaDate$, Nom$, Rep$ 'Déclaration des variables
LaDate = Format(Now, « yyyy_mm_dd_hh mm »)
Nom = « VendeurOK » 'Nom de l’onglet enregistrer
Rep = « D:\Auction\Acheteurs » ’ Chemin exact du répertoire
ActiveSheet.ExportAsFixedFormat Type:=xlTypePDF, Filename:= _
Rep & LaDate & « _ » & Nom & « .pdf », Quality:= _
xlQualityStandard, IncludeDocProperties:=True, IgnorePrintAreas:=False, _
From:=1, To:=1, OpenAfterPublish:=False 'enregistrement du fichier en PDF
End Sub
Hello
Tip top, ça fonctionne après une ou deux toutes petites adaptations cosmétiques sur le nom du fichier généré !
Merci pour le coup de main et belle journée