Macro enregistrement PDF
Bonjour,
Je suis un débutant sur VBA et j'utilise donc la fonction enregistrer une macro pour ensuite affecter ma macro à un bouton.
La macro que j'enregistre est la suivante :
' saveaspdf Macro
Sheets("RA SCPI").Select
Range("I35").Select
Sheets("RA SCPI").Select
Sheets("RA - SCPI").Visible = True
Sheets("RA - SCPI").Select
ActiveSheet.ExportAsFixedFormat Type:=xlTypePDF, Filename:= _
"C:\Users\..............\RAPPORT D'ADEQUATION SCPI.pdf" _
, Quality:=xlQualityStandard, IncludeDocProperties:=True, IgnorePrintAreas _
:=False, OpenAfterPublish:=True
Sheets("RA - SCPI").Select
ActiveWindow.SelectedSheets.Visible = False
End Sub
Lorsque je fais l'enregistrement tout se déroule sans problème.
Ensuite j'affecte la macro à un bouton et cela ne marche plus.
Pour donner plus de précisions, j'ai un deux onglets :
RA SPCI et RA - SCPI.
Le premier est ouvert est le second est maqué.
Dans RA SCPI (onglet affiché) on vient renseigner quelques information sur nos clients.
Le second onglet que je veux imprimer (RA - SCPI) est masqué et vient synthétiser des analyses pour nos clients.
Je voudrais donc après avoir renseigné les quelques informations de mon client dans l'onglet (RA SCPI celui qui reste affiché) que mon bouton en bas de page me permette de sauvegarder en PDF mon onglet (RA SCPI et que celui reste masqué après la sauvegarde en PDF).
Je vous remercie pour votre aide et si vous pouvez me solutionner ce premier problème cela serait top. Je pourrais ensuite regarder comment enregistrer avec le pdf avec un nom type comprenant le nom du client, la date,... infos qui sont déjà présentes dans le fichier excel
Bonjour
Essaie ça :
Sub Exporter()
Dim fa As Worksheet
Set fa = ActiveSheet
Sheets("RA - SCPI").Visible = True
Sheets("RA - SCPI").Select
ActiveSheet.ExportAsFixedFormat Type:=xlTypePDF, Filename:= _
"C:\Users\..............\RAPPORT D'ADEQUATION SCPI.pdf" _
, Quality:=xlQualityStandard, IncludeDocProperties:=True, IgnorePrintAreas _
:=False, OpenAfterPublish:=True
ActiveWindow.SelectedSheets.Visible = False
End Sub
Et si ça ne va pas,joins ton fichier.
Bye !
Bonjour bobyglf, le forum,
Ta demande n'est pas très claire....en plus avec des noms d'onglets pratiquement identiques...
Je voudrais donc après avoir renseigné les quelques informations de mon client dans l'onglet (
RA SCPI
celui qui reste affiché) que mon bouton en bas de page me permette de sauvegarder en PDF mon onglet (RA SCPI
et que celui reste masqué après la sauvegarde en PDF).
C'est bien le RA - SCPI que tu veux exporter et qui doit rester masquée ?
Sub test()
Application.ScreenUpdating = False
With Sheets("RA - SCPI")
.Visible = xlSheetVisible 'on affiche la feuille à exporter
.ExportAsFixedFormat Type:=xlTypePDF, Filename:= _
"C:\Users\.......\RAPPORT D'ADEQUATION SCPI.pdf" _
, Quality:=xlQualityStandard, IncludeDocProperties:=True, IgnorePrintAreas _
:=False, OpenAfterPublish:=False
.Visible = xlSheetVeryHidden 'on masque la feuille
End With
MsgBox "Export pdf réalisé avec succès"
Application.ScreenUpdating = True
End Sub
Cordialement,
EDIT: Bonjour gmb
Bonjour,
Merci pour vos deux réponses et désolé pour la présentation de mon problème, oui ce n'est pas simple avec des noms similaires.
J'ai modifié les noms, mon premier onglet (qui reste affiché pour le collaborateur) est "S.C.P.I."
Le nom de l'onglet que je souhaite afficher, enregistrer et masquer est "RA - SCPI"
Je viens de réussir avec la macro suivante : qu'en pensez-vous ?
Sub RAPDF()
'
' RAPDF Macro
'
'
Sheets("S.C.P.I.").Select
Sheets("RA - SCPI").Visible = True
Sheets("RA - SCPI").Select
ChDir "\\192.168.215.253\Commun\Questionnaire client\Export RA S.C.P.I"
ActiveSheet.ExportAsFixedFormat Type:=xlTypePDF, Filename:= _
"\\192.168.215.253\Commun\Questionnaire client\Export RA S.C.P.I\RAPPORT ADEQUATION - SCPI.pdf" _
, Quality:=xlQualityStandard, IncludeDocProperties:=True, IgnorePrintAreas _
:=False, OpenAfterPublish:=True
Sheets("RA - SCPI").Select
ActiveWindow.SelectedSheets.Visible = False
End Sub
Comme le fichier va voyager sur plusieurs ordinateurs j'ai indiqué un emplacement commun pour la sauvegarde et qui sera toujours accessible sur notre réseau.
Par contre, je viens de me rendre compte de deux points :
- lorsque mon fichier est protégé la macro ne fonctionne pas ! il ne doit pas pouvoir afficher l'onglet.
Cela veut-il dire que je dois donner le code de verrouillage aux collaborateurs pour qu'ils puissent enregistrer le pdf ? une autre solution existe-elle pour garder en permanence le fichier verrouillé ? (je sais la protection n'est pas infaillible, mais pour les erreurs de manip quand nos clients et collaborateurs utilisent le fichier, c'est quand même très pratique.
- le fichier généré écrase le précédent fichier pdf sauvegardé, est ce que je peux personnaliser la macro pour que l'enregistrement en PDF intègre le nom de mon client ?
Merci pour votre réactivité de ce matin.
cordialement.
Re,
Un essai...
La feuille RA - SCPI est masquée et protégée par mot de passe (toto).
Le bouton PDF est sur la feuille SCPI.
Sub test2()
Dim Chemin As String, nomFichier As String
Chemin = "C:\Users\maison\Desktop\Nouveau dossier\" 'à adapter
Application.ScreenUpdating = False 'évite le scintillement de l'écran
With Sheets("RA - SCPI")
.Unprotect ("toto") 'on enlève la protection de la feuille (mot de passe toto)
.Visible = xlSheetVisible 'on affiche la feuille à exporter
nomFichier = .Range("A1").Value 'si nom du client en A1, à adapter
.ExportAsFixedFormat _
Type:=xlTypePDF, _
Filename:=Chemin & nomFichier & ".pdf", _
Quality:=xlQualityStandard, _
IncludeDocProperties:=True, _
IgnorePrintAreas:=False, _
OpenAfterPublish:=False 'export en pdf
.Visible = xlSheetVeryHidden 'on masque la feuille
.Protect ("toto") 'on protège la feuille(mot de passe toto)
End With
MsgBox "Export pdf réalisé avec succès"
Application.ScreenUpdating = True
End Sub
Cordialement,
Bonjour,
Merci pour les nouveaux éléments. J'ai essayé d'adapter la macro comme je pouvais de manière à ce qu'elle puisse complètement déverrouiller le excel réaliser la sauvegarde et reverrouiller ensuite.
avec la macro suivante, tout est parfait, sauf le nom d'enregistrement qui est par défaut.
Sub PDFavecmp()
'
' PDFavecmp Macro
'
'
Application.ScreenUpdating = False
ActiveWorkbook.Unprotect ("toto")
Sheets("S.C.P.I.").Select
Sheets("RA - SCPI").Visible = True
Sheets("RA - SCPI").Select
ChDir "\\192.xxx.xxx\Commun\Questionnaire client\Export RA S.C.P.I"
nomFichier = Range("AR30").Value
ActiveSheet.ExportAsFixedFormat Type:=xlTypePDF, Filename:= _
"\\192.xxx.xxx\Commun\Questionnaire client\Export RA S.C.P.I\RAPPORT ADEQUATION - SCPI.pdf" _
, Quality:=xlQualityStandard, IncludeDocProperties:=True, IgnorePrintAreas _
:=False, OpenAfterPublish:=False
Sheets("RA - SCPI").Select
ActiveWindow.SelectedSheets.Visible = False
ActiveWorkbook.Protect ("toto"), Structure:=True, Windows:=False
MsgBox "Export du rapport d'adéquation réalisé avec succès - Fichier sauvegardé (\\192.xxx.xxx\Commun\Questionnaire client\Export RA S.C.P.I)"
End Sub
Après j'ai essayé d'ajouter la touche finale avec l'enregistrement du fichier d'après le nom du client et la j'ai un problème.
ActiveSheet.ExportAsFixedFormat Type:=xlTypePDF, Filename:=nomFichier & ".pdf", _
"\\192.xxx.xxx\Commun\Questionnaire client\Export RA S.C.P.I\RAPPORT ADEQUATION - SCPI.pdf" _
, Quality:=xlQualityStandard, IncludeDocProperties:=True, IgnorePrintAreas _
:=False, OpenAfterPublish:=False
le message d'erreur est erreur de compilation, erreur de syntaxe.
Je suis désolé je viens de chercher comment ne pas vous redemander mais je n'ai rien trouvé.
D'avance merci pour votre aide.
Re,
Le code que je t'ai fourni ne fait pas le job ?
Nouvel essai:
Sub test2()
Dim Chemin As String, nomFichier As String
Chemin = "\\192.xxx.xxx\Commun\Questionnaire client\Export RA S.C.P.I"
' Chemin = "https:\\192.xxx.xxx\Commun\Questionnaire client\Export RA S.C.P.I"
Application.ScreenUpdating = False 'évite le scintillement de l'écran
With Sheets("RA - SCPI")
.Unprotect ("toto") 'on enlève la protection de la feuille (mot de passe toto)
.Visible = xlSheetVisible 'on affiche la feuille à exporter
nomFichier = .Range("AR30").Value
.ExportAsFixedFormat _
Type:=xlTypePDF, _
Filename:=Chemin & nomFichier & ".pdf", _
Quality:=xlQualityStandard, _
IncludeDocProperties:=True, _
IgnorePrintAreas:=False, _
OpenAfterPublish:=False 'export en pdf
.Visible = xlSheetVeryHidden 'on masque la feuille
.Protect ("toto") 'on protège la feuille(mot de passe toto)
End With
MsgBox "Export du rapport d'adéquation réalisé avec succès - Fichier sauvegardé (\\192.xxx.xxx\Commun\Questionnaire client\Export RA S.C.P.I)"
Application.ScreenUpdating = True
End Sub
Sinon, essaie de remplacer
Filename:= _
"\\192.xxx.xxx\Commun\Questionnaire client\Export RA S.C.P.I\RAPPORT ADEQUATION - SCPI.pdf" _
par
Filename:= _
nomFichier & ".pdf" _
Cordialement,
Bonjour xorsankukai,
Merci pour ton rapide retour.
En prenant ton premier code, j'avais un message d'erreur de compilation. C'est pour cela que j'ai essayé de rajouter étape par étape les éléments pour sauvegarder en pdf et ensuite déjà bien déverrouiller et reverrouiller mon classeur complet.
Je viens de faire une nouvelle tentative en remplaçant comme indiqué mais cela ne fonctionne pas. Je ne vais pas te prendre plus de temps. Vous m'avez solutionné mon problème et j'ai découvert plein de nouveaux éléments :
- enlever le scintillement
- ouvrir une boite de dialogue à la fin
- gérer la protection de mon classeur,....
En l'état c'est top, j'ai mes éditions réglementaires qui sortent en pdf, enregistrées dans un dossier commun. Le collaborateur devra juste les déplacer dans le dossier du client et renommer le fichier avec le nom du client.
Il peut quand même faire quelques manipulations !
Merci !
Bonjour bobyglf,
Merci pour ton retour,
En prenant ton premier code, j'avais un message d'erreur de compilation.
Cela fonctionne pourtant correctement chez moi (mais mon dossier est sur mon bureau et non sur un réseau).
Et nos versions d'excel diffèrent....
tout est parfait, sauf le nom d'enregistrement qui est par défaut.
Ton dossier de destination se nomme bien Export RA S.C.P.I et donc le fichier enregistré se nomme RAPPORT ADEQUATION - SCPI.pdf ?
Si oui, à aucun moment tu lui demande de le renommer par nomFichier
.
Essaie:
Filename:= _
"\\192.xxx.xxx\Commun\Questionnaire client\Export RA S.C.P.I" & nomFichier & ".pdf" _
Ce serait dommage de bloquer sur ce point si tout le reste fonctionne,
Bon courage,
Cordialement,