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,

En prenant soin de virer toutes les lignes vides avant SVP

A+

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

Rechercher des sujets similaires à "enlever boite dialogue automatique enregistrer pdf"