Enlever la boîte de dialogue automatique "Enregistrer sous" PDF
Bonjour,
J'ai une petite requête à vous soumettre que je trouve simple mais n'y arrive pas du tout..
Je voudrais enlever la boîte de dialogue "Enregistrer sous" dans mon fichier. Le but étant que l'enregistrement PDF se fasse quasiment en automatique.Tout marche bien, c'est juste ce détail qui va être chronophage
Voici mon code:
Sub Impression(L)
Dim wsA As Worksheet
Dim strPath As String
Dim strFile As String
Dim strPathFile As String
Dim myFile As Variant
Dim oWSHShell As Object
On Error GoTo errHandler
Set wsA = Sheets("Modèle")
'Récupère le répertoire "Bureau"
Set oWSHShell = CreateObject("WScript.Shell")
strPath = oWSHShell.SpecialFolders("Desktop")
If Range("RefArt") <> "" Then
strFile = "Fiche_" & SER & "_" & "n°" & Range("A2") & ".pdf"
Else
strFile = "FICHE_Template.pdf"
End If
strPathFile = strPath & "\" & strFile
Application.ScreenUpdating = False
myFile = Application.GetSaveAsFilename(FileFilter:="PDF Files (*.pdf), *.pdf", InitialFileName:=strPathFile)
If (myFile <> False) Or (myFile <> "") Then
wsA.SaveAs Filename:=strPathFile
Application.ScreenUpdating = False
Sheets("Modèle").Select
wsA.ExportAsFixedFormat _
Type:=xlTypePDF, _
Filename:=myFile, _
Quality:=xlQualityStandard, _
IncludeDocProperties:=True, _
IgnorePrintAreas:=False, _
OpenAfterPublish:=False
exitHandler:
Set oWSHShell = Nothing
Exit Sub
errHandler:
MsgBox "Could not create PDF file"
Resume exitHandler
End Sub
J'ai essayé d'ajouter ceci, mais sans succès:
Application.DisplayAlerts=False
Merci pour votre aide
Bonjour,
Pouvez-vous m'aiguiller sur ce sujet svp?
En vous remerciant par avance
Bonjour FeitaN_
Une question qui me vient comme ça
Pourquoi toutes ces lignes espacées dans votre code
De plus, si vous ne savez pas d'où vient ce message, c'est que vous n'avez rien compris au code qu'on vous donne...
A+
Bonjour BrunoM45,
Merci pour votre retour
Ces espaces sont dûs au fait que j'ai essayé plusieurs manips mais en vain...
J'ai compris le code, après je suis débutant, donc je ne maîtrise pas encore bien. Tout ce que je veux, c'est que le code m'enregistre automatiquement sans qu'il y ait besoin de cliquer sur "Enregistrer"
C'est moi qui ai incrémenté le code..
Merci à vous
Re,
La ligne qui vous affiche cette boite de dialogue est là
myFile = Application.GetSaveAsFilename(FileFilter:="PDF Files (*.pdf), *.pdf", InitialFileName:=strPathFile)
Il suffit de la remplacer par
MyFile = "C:\Dossier\NomFichier.pdf"
A+
Re,
Alors oui, j'ai essayé de remplacer cette ligne mais le fichier sera sur un disque partagé
D'où le fait que j'ai ajouté ces 2 lignes, qui, peu importe où se trouve le fichier, iront directement chercher le bureau du poste "n"
Set oWSHShell = CreateObject("WScript.Shell")
strPath = oWSHShell.SpecialFolders("Desktop")
Je ne sais pas s'il y a un code un peu plus généraliste ou bien s'il faudra aller sur les postes en questions et nommer de la même manière chaque dossier?
De plus, mon code permettait de nommer le pdf directement. Auriez-vous une idée de comment combiner le tout svp ?
Merci pour votre retour
Re,
Pour rappel, votre demande initiale était
Je voudrais enlever la boîte de dialogue "Enregistrer sous" dans mon fichier. Le but étant que l'enregistrement PDF se fasse quasiment en automatique.Tout marche bien, c'est juste ce détail qui va être chronophage
Donc j'ai répondu à votre question, et votre code ne nommai pas directement, puisque vous passiez par cette boite de dialogue
Je pense qu'il faut commencer par savoir ce que vous voulez exactement... ensuite revenez nous voir
A+
Re,
Effectivement parce que dans mon code, la partie "nomination" était déjà incrémentée. Pour vous répondre, si, elle nommait directement, voici le code qui le permettait, et ça marche très bien :
If Range("RefArt") <> "" Then
strFile = "Fiche_" & SER & "_" & "n°" & Range("A2") & ".pdf"
Mais je vais le reformuler, vous avez raison. Ce que je veux:
1. Enregistrement automatique sans générer la boîte de dialogue dans un dossier spécifique (peu importe le dossier, je l'adapterai à mon code)
2. Nomination du fichier automatique par le code "strFile"
Je pense que c'est tout bon :)
Je viens de réussir à enregistrer automatiquement, mais en contrepartie, le code me nomme le pdf par la nom du classeur en question..
Merci pour votre aide
Re,
Alors supprimez
myFile = Application.GetSaveAsFilename(FileFilter:="PDF Files (*.pdf), *.pdf", InitialFileName:=strPathFile)
If (myFile <> False) Or (myFile <> "") Then
Et remplacer par cette ligne, celle qui suit
wsA.ExportAsFixedFormat Type:=xlTypePDF, Filename:=StrPathFile, Quality:=xlQualityStandard, _
IncludeDocProperties:=True, IgnorePrintAreas:=False, OpenAfterPublish:=False
Et supprimez moi tous ces espaces entre les lignes par pitié
A+
Re,
J'ai fait exactement ce que vous m'avez dit de faire en modifiant "myFile" par "strPathFile" et un message d'erreur apparaît:
Erreur d'exécution 1004 : Document non enregistré. Le document est peut-être ouvert ou une erreur s'est produite lors de l'enregistrement
J'avais le même message d'erreur lorsque je faisais mes tests ce matin
De plus, est-il possible de lui faire dire d'aller dans un dossier spécifique dans le bureau ou ce n'est pas possible ?
Merci pour votre aide (et oui je vais supprimer les lignes, vous avez raison, ce n'est pas rigoureux de ma part)
Re,
Hhaha oui, j'y avais pensé mais le fichier est assez complexe et pas mal de codes sont liés...
Je viens cependant de trouver un code qui marche avec presque le résultat que je souhaite:
Sub Impression(L)
Dim Nom$, Rep$
Set oWSHShell=CreateObject("WScript.Shell")
strPath=oWSHShell.SpecialFolders("Desktop")
Nom="Range("A2")
Rep=strPath
Sheets("Modèle").ExportAsFixedFormat Type:=xlTypePDF, FileName:= _
Nom & ".pdf", Quality:= _
xlQualityStandard, IncludeDocProperties:=True, IgnorePrintAreas:=False, _
From:=1, To:=1, OpenAfterPublish:=False
End Sub
Ce code enregistre bien sans boîte de dialogue et avec le nom que la cellule comporte. Le seul bémol est qu'il va s'enregistrer tout seul dans mes "Documents". Parce que j'ai décidé la partie "Rep" du "FileName". Donc en gros, toute la partie recherche automatique du bureau est inutile ici... Parce que je n'arrive pas à attribuer un dossier
Merci pour votre temps et pédagogie BrunoM45 :)
Belle soirée à vous
Salut,
Sheets("Modèle").ExportAsFixedFormat _
Type:=xlTypePDF, _
Filename:=Nom & ".pdf", _
Quality:=xlQualityStandard, _
IncludeDocProperties:=True, _
IgnorePrintAreas:=False, _
From:=1, To:=1, OpenAfterPublish:=False
Tu dois adapter le Filename pour qu'il pointe sur le répertoire voulu
Filename:=Path & "\" & Nom & ".pdf",
Tu dois déterminer Path avant...... Path ="c:\utilisateur\Desktop\Test" par exemple
Bonsoir Jean-Paul,
Je suis sincèrement désolé de répondre aussi tardivement. Je n'avais pas du tout vu votre message
Je pense avoir essayé votre méthode, avec notamment "\". Je vais réessayer et vous donnerai un retour lundi
De mémoire, il me donnait le nom du "Path" et non ce qui suit juste après, cad, "Nom & ".pdf""
Merci beaucoup pour votre aide :)
Bonne fin de semaine
Bonjour Jean-Paul,
Je suis quasiment sûr d'avoir pourtant utiliser le même code que vous et pourtant ça n'a pas marché...
Je viens de tester aujourd'hui et tout marche très bien, je vous remercie Jean-Paul et BrunoM45 pour votre aide très prolifique
Belle semaine à vous