IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

VBA Word Discussion :

FileDialog(msoFileDialogSaveAs) et Filters


Sujet :

VBA Word

  1. #1
    Candidat au Club
    Homme Profil pro
    Acheteur
    Inscrit en
    août 2022
    Messages
    6
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 60
    Localisation : Suisse

    Informations professionnelles :
    Activité : Acheteur
    Secteur : Bâtiment

    Informations forums :
    Inscription : août 2022
    Messages : 6
    Points : 4
    Points
    4
    Par défaut FileDialog(msoFileDialogSaveAs) et Filters
    Bonjour à tous,
    j'aimerais bien perfectionner le bout de code ci-dessous qui devrait me permettre d'imprimer directement le document actif en pdf. Le problème c'est quand je veux paramétrer les 'Filters' avec ' .Filters.Clear ' et ' .Filters.Add "PDF", "*.pdf" ' ça plante avec l'erreur suivante:
    Erreur '438' : Propriété ou méthode non gérée par cet objet

    Et je ne vois pas trop comment faire pour arriver à mes fins. NB,
    l'exercice étant de l'appeller par son nom et extension , plutôt que par son index (La version index, fonctionne)
    Merci d'avance pour votre aide et suggestions.

    Sub Imprimer_Pdf()
    Dim dlgSaveAs As FileDialog
    Dim FileName As String
    Dim result As Integer

    ' Nom du fichier actif sans extension
    If InStrRev(ActiveDocument.Name, ".") > 0 Then
    FileName = Left(ActiveDocument.Name, InStrRev(ActiveDocument.Name, ".") - 1)
    Else
    FileName = ActiveDocument.Name
    End If

    Set dlgSaveAs = Application.FileDialog(msoFileDialogSaveAs)
    With dlgSaveAs
    .InitialFileName = "D:\Documents\" & FileName
    .Title = "Enregistrer sous"
    .Filters.Clear
    .Filters.Add "PDF", "*.pdf"

    .FilterIndex = 1
    result = .Show
    If result = -1 Then ' L'utilisateur clique sur "Enregistrer"
    ' Imprimer le document en PDF

    Else ' L'utilisateur clique sur "Annuler"
    MsgBox "Opération annulée."
    End If
    End With
    End Sub

    Cordialement,
    Emile

    Office Professionnel plus 2021 (Word)

  2. #2
    Membre averti
    Homme Profil pro
    Auto entrepreneur
    Inscrit en
    décembre 2021
    Messages
    207
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 66
    Localisation : France, Morbihan (Bretagne)

    Informations professionnelles :
    Activité : Auto entrepreneur
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : décembre 2021
    Messages : 207
    Points : 309
    Points
    309
    Par défaut
    Citation Envoyé par emile64 Voir le message
    Bonjour,

    Le répertoire de destination est toujours le même ?

    Nb : Mettez votre code avec le bouton # du menu.

  3. #3
    Candidat au Club
    Homme Profil pro
    Acheteur
    Inscrit en
    août 2022
    Messages
    6
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 60
    Localisation : Suisse

    Informations professionnelles :
    Activité : Acheteur
    Secteur : Bâtiment

    Informations forums :
    Inscription : août 2022
    Messages : 6
    Points : 4
    Points
    4
    Par défaut
    Bonjour et merci pour votre suivi,
    Oui, c'est toujours le même.
    Bonne journée

  4. #4
    Membre averti
    Homme Profil pro
    Auto entrepreneur
    Inscrit en
    décembre 2021
    Messages
    207
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 66
    Localisation : France, Morbihan (Bretagne)

    Informations professionnelles :
    Activité : Auto entrepreneur
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : décembre 2021
    Messages : 207
    Points : 309
    Points
    309
    Par défaut
    Citation Envoyé par emile64 Voir le message
    Bonjour,

    A tester :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
     
    Sub EnregistrerPDF()
     
    Dim Chemin As String, NomFichier As String
     
        ' Nom du fichier actif sans extension
        With ActiveDocument
     
             Chemin = .Path & "\"
             If InStrRev(.Name, ".") > 0 Then
                NomFichier = Left(.Name, InStrRev(.Name, ".") - 1)
             Else
                NomFichier = .Name
             End If
     
             .ExportAsFixedFormat outputFileName:=Chemin & "\" & NomFichier, exportformat:=wdExportFormatPDF  ', _
                        Quality:=wdQualityStandard, IncludeDocProperties:=True, IgnorePrintAreas:=False, OpenAfterPublish:=True
     
        End With
     
    End Sub

  5. #5
    Candidat au Club
    Homme Profil pro
    Acheteur
    Inscrit en
    août 2022
    Messages
    6
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 60
    Localisation : Suisse

    Informations professionnelles :
    Activité : Acheteur
    Secteur : Bâtiment

    Informations forums :
    Inscription : août 2022
    Messages : 6
    Points : 4
    Points
    4
    Par défaut
    Bonjour E KERGRESSE,
    Merci pour votre aide.
    Malheureusement, ça ne fonctionne pas comme je voudrais et souhaite vraiment calquer sur le modèle présenté.
    Je vais voir si je peux marier les deux code et voir ce que ça donne.
    Cordialement,
    Emile

  6. #6
    Membre averti
    Homme Profil pro
    Auto entrepreneur
    Inscrit en
    décembre 2021
    Messages
    207
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 66
    Localisation : France, Morbihan (Bretagne)

    Informations professionnelles :
    Activité : Auto entrepreneur
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : décembre 2021
    Messages : 207
    Points : 309
    Points
    309
    Par défaut
    Citation Envoyé par emile64 Voir le message
    Sauf erreur de ma part, vous essayez de sauvegarder un fichier word directement en fichier pdf en changeant seulement l'extension, mais je ne demande qu'à apprendre .

  7. #7
    Candidat au Club
    Homme Profil pro
    Acheteur
    Inscrit en
    août 2022
    Messages
    6
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 60
    Localisation : Suisse

    Informations professionnelles :
    Activité : Acheteur
    Secteur : Bâtiment

    Informations forums :
    Inscription : août 2022
    Messages : 6
    Points : 4
    Points
    4
    Par défaut
    Bonjour E KERGRESSE,
    Merci pour votre aide.

    Heu, non pas tout-à-fait. L'idée c'est d'utiliser la boîte de dialogue :Enregistrer sous...
    qui permets de changer le Nom du fichier (s'il y a lieu, mais un nom est déjà préparé par défaut), son répertoire éventuel ** et surtout le type, qui passe alors en pdf.
    ** Je souhaite qu'enregistrer sous... S'ouvre depuis : C:/ Mes documents / mais comme tous les pdf sont différents (Factures, fournisseurs, clients etc...) ils vont alors être envoyés a partir de mes documents dans leurs répertoires respectifs.

    La macro en question fonctionne mais avec : .filterIndex = 7 ' 7ème position de l'index des extensions (pdf), le problème c'est que l'index peut changer d'un pc à l'autre... Et je voudrais quelque chose de plus directe. D'où l'idée de mettre directement le filtre 'Type': de docx à PDF, mais malheureusement la commande
    .Filters.Clear et
    .Filters.Add "PDF", "*.pdf"

    Plantent la procédure, et ne semble pas fonctionner, comme si 'Filters' n'étaient pas reconnu dans cet environnement.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
        Dim dlgSaveAs As FileDialog
        Dim FileName As String
        Dim result As Integer
        
            ' Nom du fichier actif sans extension
            If InStrRev(ActiveDocument.Name, ".") > 0 Then
                FileName = Left(ActiveDocument.Name, InStrRev(ActiveDocument.Name, ".") - 1)
            Else
                FileName = ActiveDocument.Name
            End If
        
        Set dlgSaveAs = Application.FileDialog(msoFileDialogSaveAs)
        With dlgSaveAs
            .InitialFileName = "D:\Documents\" & FileName
            .Title = "Enregistrer sous"
            .filterIndex = 7 ' 7ème position de l'index des extensions (pdf), peut changer d'un pc à l'autre
            result = .Show
            If result = -1 Then ' L'utilisateur a cliqué sur "Enregistrer"
                ' Imprimer le document en PDF
    Voilà, j'espère que c'est plus compréhensible comme ça

  8. #8
    Membre averti
    Homme Profil pro
    Auto entrepreneur
    Inscrit en
    décembre 2021
    Messages
    207
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 66
    Localisation : France, Morbihan (Bretagne)

    Informations professionnelles :
    Activité : Auto entrepreneur
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : décembre 2021
    Messages : 207
    Points : 309
    Points
    309
    Par défaut
    Citation Envoyé par emile64 Voir le message
    Bonjour,

    Je viens d'essayer votre code. En effet, la boite de dialogue recherche les documents de type pdf, mais la validation ne donne rien, et pour cause mon document n'existe pas au format pdf.
    Etes-vous certain que la transformation d'un .doc vers un .pdf soit possible avec cette commande ?

    De mon point de vue, il faudrait créer un userform pour donner la possibilité de choisir le répertoire et changer le nom du document tout en utilisant le code d'un précédent message une fois validé.

Discussions similaires

  1. Réponses: 1
    Dernier message: 06/07/2016, 10h20
  2. EXCEL VBA pb sur FileDialog(msoFileDialogSaveAs).Show
    Par lecail65 dans le forum Macros et VBA Excel
    Réponses: 8
    Dernier message: 27/07/2009, 16h48
  3. [VBA/Excel] Utilisation de FileDialog(msoFileDialogSaveAs)
    Par daniel_gre dans le forum Macros et VBA Excel
    Réponses: 6
    Dernier message: 23/09/2008, 11h41
  4. FileDialog(msoFileDialogSaveAs)
    Par seringua1 dans le forum Access
    Réponses: 7
    Dernier message: 11/10/2005, 16h12
  5. CFileDialog Filter
    Par Patrick Beaudoin dans le forum MFC
    Réponses: 4
    Dernier message: 07/09/2002, 09h51

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo