Macro enregistrement PDF Le sujet est résolu

Y compris Power BI, Power Query et toute autre question en lien avec Excel
b
bobyglf
Nouveau venu
Nouveau venu
Messages : 5
Inscrit le : 23 janvier 2019
Version d'Excel : 2016FR
Version de Calc : 1802

Message par bobyglf » 22 juillet 2019, 10:01

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
g
gmb
Fanatique d'Excel
Fanatique d'Excel
Messages : 12'403
Appréciations reçues : 305
Inscrit le : 4 avril 2013
Version d'Excel : 2016

Message par gmb » 22 juillet 2019, 10:21

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 !
1 membre du forum aime ce message.
Avatar du membre
xorsankukai
Membre impliqué
Membre impliqué
Messages : 1'723
Appréciations reçues : 171
Inscrit le : 7 octobre 2014
Version d'Excel : 2010 FR

Message par xorsankukai » 22 juillet 2019, 10:42

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 :ave: (étant très lent, je n'avais pas vu que tu avais déjà répondu, :oops: ).
1 membre du forum aime ce message.
xorsankukai

La connaissance, c’est partager le savoir qui nous fait grandir.
b
bobyglf
Nouveau venu
Nouveau venu
Messages : 5
Inscrit le : 23 janvier 2019
Version d'Excel : 2016FR
Version de Calc : 1802

Message par bobyglf » 22 juillet 2019, 16:14

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.
Avatar du membre
xorsankukai
Membre impliqué
Membre impliqué
Messages : 1'723
Appréciations reçues : 171
Inscrit le : 7 octobre 2014
Version d'Excel : 2010 FR

Message par xorsankukai » 22 juillet 2019, 17:03

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,
1 membre du forum aime ce message.
xorsankukai

La connaissance, c’est partager le savoir qui nous fait grandir.
b
bobyglf
Nouveau venu
Nouveau venu
Messages : 5
Inscrit le : 23 janvier 2019
Version d'Excel : 2016FR
Version de Calc : 1802

Message par bobyglf » 23 juillet 2019, 16:11

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.
Avatar du membre
xorsankukai
Membre impliqué
Membre impliqué
Messages : 1'723
Appréciations reçues : 171
Inscrit le : 7 octobre 2014
Version d'Excel : 2010 FR

Message par xorsankukai » 24 juillet 2019, 05:34

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,
xorsankukai

La connaissance, c’est partager le savoir qui nous fait grandir.
b
bobyglf
Nouveau venu
Nouveau venu
Messages : 5
Inscrit le : 23 janvier 2019
Version d'Excel : 2016FR
Version de Calc : 1802

Message par bobyglf » 24 juillet 2019, 10:06

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 !
Avatar du membre
xorsankukai
Membre impliqué
Membre impliqué
Messages : 1'723
Appréciations reçues : 171
Inscrit le : 7 octobre 2014
Version d'Excel : 2010 FR

Message par xorsankukai » 24 juillet 2019, 11:07

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,
xorsankukai

La connaissance, c’est partager le savoir qui nous fait grandir.
Répondre Sujet précédentSujet suivant
  • Sujets similaires
    Réponses
    Vues
    Dernier message