VBA Macro pour générer un PDF sans l'enregistrer [Résolu/Fermé]

Signaler
Messages postés
92
Date d'inscription
samedi 22 octobre 2016
Statut
Membre
Dernière intervention
20 juillet 2020
-
Messages postés
92
Date d'inscription
samedi 22 octobre 2016
Statut
Membre
Dernière intervention
20 juillet 2020
-
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

2 réponses

Messages postés
92
Date d'inscription
samedi 22 octobre 2016
Statut
Membre
Dernière intervention
20 juillet 2020
1
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
Messages postés
92
Date d'inscription
samedi 22 octobre 2016
Statut
Membre
Dernière intervention
20 juillet 2020
1
Comment créer le dossier DEVIS s'il n'existe pas?
Messages postés
6985
Date d'inscription
jeudi 13 septembre 2007
Statut
Contributeur
Dernière intervention
22 octobre 2020
562
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


Messages postés
92
Date d'inscription
samedi 22 octobre 2016
Statut
Membre
Dernière intervention
20 juillet 2020
1
Super merci, ça marche.