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 (étant très lent, je n'avais pas vu que tu avais déjà répondu, ).

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,

Rechercher des sujets similaires à "macro enregistrement pdf"