VBA Macro pour générer un PDF sans l'enregistrer

Résolu/Fermé
Looping38 Messages postés 92 Date d'inscription samedi 22 octobre 2016 Statut Membre Dernière intervention 20 juillet 2020 - 23 mai 2018 à 10:24
Looping38 Messages postés 92 Date d'inscription samedi 22 octobre 2016 Statut Membre Dernière intervention 20 juillet 2020 - 31 mai 2018 à 17:28
Bonjour,
Je bloque sur une macro. Je souhaite générer un pdf d'une sélection d'un classeur en lui donnant un nom selon certaines celulles, mai uniquement l'ouvrir par la fonction OpenAfterPublish:= _True. et pas dorcement l'enregistrer. A l'utilisateur de faire enregistrer sous depuis adobe Reader.
En effet, je ne connais pas forcement le lieu de destination du fichier pour l'utilisateur.
Une alternative serait de proposer une boite de dialogue pour choisir la destination, en proposant déja un nom de fichier. (solution que je souhaite uniquement si pas possible autrement.
Actuellement j'utilise le code suivant :

Sub ExportPDFnomvariable()
'Sélection de la zone à imprimer
CV = 6
With Worksheets("Panorama FM")
For n = 8 To 115
If .Columns(n).Hidden = False Then CV = CV + 1
If CV = 11 Then Exit For
Next n
.Range(Cells(8, 2), Cells(114, n)).Select

' Macro export en PDF avec nom variable selon contenu cellule.

'Chemin d'accès pour l'enregistrement
ChDir "C:\Users\Martin GIVELET\Desktop\Devis Santé"
selection.ExportAsFixedFormat Type:=xlTypePDF, Filename:= _
"C:\Users\Martin GIVELET\Desktop\Devis Santé\DEVIS " & " " & Sheets("Données Client").Cells(1, 10).Value & " " & Sheets("Données Client").Cells(5, 5).Value & " " & Sheets("Données Client").Cells(4, 5).Value, Quality:=xlQualityStandard, _
IncludeDocProperties:=True, IgnorePrintAreas:=False, OpenAfterPublish:= _
True

End With


End Sub

Merci de votre aide.
Cordialement, Martin
A voir également:

2 réponses

Looping38 Messages postés 92 Date d'inscription samedi 22 octobre 2016 Statut Membre Dernière intervention 20 juillet 2020 1
23 mai 2018 à 15:52
J'ai avancé et je partage ma solution : J'enregistre le fichier dans le même répertoire que le fichier excel.
Dans l'idéal, il faudrait vérifier si un dossier "Devis" existe pour l'utiliser sinon, le créer.

Sub ExportPDFnomvariable()
'incrémentation N° à chaque impression

Sheets("Données Client").[C25] = Sheets("Données Client").[C25] + 1


'Séléction de la zone à imprimer
CV = 6
With Worksheets("Panorama FM")
For n = 8 To 123
If .Columns(n).Hidden = False Then CV = CV + 1
If CV = 11 Then Exit For
Next n
Range(Cells(8, 2), Cells(121, n)).Select

' Macro export en PDF avec nom variable selon contenu cellule.

'Chemin d'accès pour l'enregistrement
ChDir (ThisWorkbook.Path)

'Chemin d'accès + nom du document souhaité
'Attention ==> Sheets("Feuille de route").Cells(N°deLIGNE, N°deCOLONNE).Value
'Pour les espaces, copier ==> &" "&
'Pour autoriser ou non l'ouverture du document en pdf a chaque enregistrement changer OpenAfterPublish:= _False/True


selection.ExportAsFixedFormat Type:=xlTypePDF, Filename:= _
" Devis " & Sheets("Données Client").Cells(1, 10).Value & " " & Sheets("Données Client").Cells(5, 5).Value & " " & Sheets("Données Client").Cells(4, 5).Value & Sheets("Données Client").Cells(25, 3).Value, Quality:=xlQualityStandard, _
IncludeDocProperties:=True, IgnorePrintAreas:=False, OpenAfterPublish:= _
True

End With


End Sub

Si quelqu'un peut m'aider sur la fin...
Martin
0
Looping38 Messages postés 92 Date d'inscription samedi 22 octobre 2016 Statut Membre Dernière intervention 20 juillet 2020 1
24 mai 2018 à 12:18
Comment créer le dossier DEVIS s'il n'existe pas?
0
cs_Le Pivert Messages postés 7903 Date d'inscription jeudi 13 septembre 2007 Statut Contributeur Dernière intervention 11 mars 2024 728
24 mai 2018 à 15:11
bonjour,


a mettre dans Thisworkbook tiré du site:

https://excel-malin.com/

Option Explicit
Private Sub Workbook_Open()
TesteSiDossierExiste
End Sub
Sub TesteSiDossierExiste()
'par Excel-Malin.com ( http://excel-malin.com )

Dim MonDossier As String

MonDossier = ThisWorkbook.Path & "\DEVIS "

    If DossierExiste(MonDossier) = True Then
       ' MsgBox "Le dossier existe..."
    Else
      MkDir (ThisWorkbook.Path & "\DEVIS ")
    End If

End Sub
Public Function DossierExiste(MonDossier As String)
'par Excel-Malin.com ( http://excel-malin.com )

   If Len(Dir(MonDossier, vbDirectory)) > 0 Then
      DossierExiste = True
   Else
      DossierExiste = False
   End If
End Function


0
Looping38 Messages postés 92 Date d'inscription samedi 22 octobre 2016 Statut Membre Dernière intervention 20 juillet 2020 1
31 mai 2018 à 17:28
Super merci, ça marche.
0