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

Macros et VBA Excel Discussion :

Macro impression pdf a partir d'une liste


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Homme Profil pro
    Chargé d'affaire
    Inscrit en
    Décembre 2019
    Messages
    119
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Eure et Loir (Centre)

    Informations professionnelles :
    Activité : Chargé d'affaire
    Secteur : Communication - Médias

    Informations forums :
    Inscription : Décembre 2019
    Messages : 119
    Par défaut Macro impression pdf a partir d'une liste
    Bonjour a tous;

    Je souhaiterais un macro (exécutable via un bouton) permettant d'imprimer des documents PDF via son nom qui ce trouve dans une plage de cellule.

    Description:

    -Chaque pdf a pour nom un code "SDIS" du type : 12345-00001,12345-00002,etc
    -il existe un dossier pour chaque commune (7 dossiers) qui ne comporte pas les même pdf
    - le nom de la commune ce trouve en "E5" sur la feuille "FD"
    - La plage de cellule ce trouve de "D28 a D37"
    - l'adresse du dossier qui comporte les communes qui elle méme comporte les fichier pdf est :D:\Système Hydro\RESET\Sauvegarde Générale (pendant cette année)\Rapport- Devis\Fiche ID\Fiche ID "nom de la commune en E5" 2019\"titre du fichier de D28 a D37".pdf

    Problématique:

    Je souhaiterais que quand j'effectue le macro il détecte le nom des fichier PDF présent dans la plage de cellules et les imprimes.

    Merci pour la transmission de votre savoir

  2. #2
    Expert confirmé
    Homme Profil pro
    retraité
    Inscrit en
    Juin 2012
    Messages
    3 419
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : retraité
    Secteur : Associations - ONG

    Informations forums :
    Inscription : Juin 2012
    Messages : 3 419
    Par défaut
    Bonjour,

    Bien que je n'aie pas tout à fait bien compris votre demande, voici toujours une piste pour imprimer une série de fichiers pdf.
    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
    22
    23
    24
    25
    26
    27
    28
    Option Explicit
     
    Declare Function apiShellExecute Lib "shell32.dll" Alias "ShellExecuteA" ( _
                ByVal hwnd As Long, _
                ByVal lpOperation As String, _
                ByVal lpFile As String, _
                ByVal lpParameters As String, _
                ByVal lpDirectory As String, _
                ByVal nShowCmd As Long) _
                As Long
     
    Public Sub PrintPDF()
        Dim kRow As Long, sDoss As String, sPdf As String
        sDoss = "D:\Système Hydro\RESET\Sauvegarde Générale (pendant cette année)\Rapport- Devis\Fiche ID\Fiche ID NomCommune 2019\NomFichier.pdf"
        With Sheets("FD")
            For kRow = 28 To 37
                If .Range("D" & kRow) <> "" Then
                    sPdf = Replace(sDoss, "NomCommune", .Range("E5"))
                    sPdf = Replace(sPdf, "NomFichier", .Range("D" & kRow))
                    If Dir(sPdf) = "" Then
                        MsgBox "Fichier manquant:" & vbCrLf & sPdf, , "Anomalie"
                    Else
                        Call apiShellExecute(Application.hwnd, "print", sPdf, vbNullString, vbNullString, 0)
                    End If
                End If
            Next kRow
        End With
    End Sub
    Bonne continuation.
    Fichiers attachés Fichiers attachés

  3. #3
    Membre confirmé
    Homme Profil pro
    Chargé d'affaire
    Inscrit en
    Décembre 2019
    Messages
    119
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Eure et Loir (Centre)

    Informations professionnelles :
    Activité : Chargé d'affaire
    Secteur : Communication - Médias

    Informations forums :
    Inscription : Décembre 2019
    Messages : 119
    Par défaut
    Merci pour ton aide mais ton code ne fonctionne pas avec ma version 64 bits

  4. #4
    Expert confirmé
    Homme Profil pro
    retraité
    Inscrit en
    Juin 2012
    Messages
    3 419
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : retraité
    Secteur : Associations - ONG

    Informations forums :
    Inscription : Juin 2012
    Messages : 3 419
    Par défaut
    Bonjour,

    Essayer avec ceci (en remplacement de la partie Declare):
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    #If VBA7 Then
        Private Declare PtrSafe Function ShellExecute Lib "shell32.dll" Alias "ShellExecuteA" _
            (ByVal hwnd As Long, ByVal lpOperation As String, ByVal lpFile As String, _
             ByVal lpParameters As String, ByVal lpDirectory As String, ByVal nShowCmd As Long) As Long
    #Else
        Private Declare Function ShellExecute Lib "shell32.dll" Alias "ShellExecuteA" _
            (ByVal hwnd As Long, ByVal lpOperation As String, ByVal lpFile As String, _
             ByVal lpParameters As String, ByVal lpDirectory As String, ByVal nShowCmd As Long) As Long
    #End If
    Un lien utile: Développer avec Office 64 bits

    Cordialement.

  5. #5
    Membre confirmé
    Homme Profil pro
    Chargé d'affaire
    Inscrit en
    Décembre 2019
    Messages
    119
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Eure et Loir (Centre)

    Informations professionnelles :
    Activité : Chargé d'affaire
    Secteur : Communication - Médias

    Informations forums :
    Inscription : Décembre 2019
    Messages : 119
    Par défaut
    Bonjour je suis désolé mais ton code déclare encore une erreur, étant un débutant dans le VBA je te fournie un screen de la situation.
    Nom : Screenshot_9.png
Affichages : 1188
Taille : 160,3 Ko

  6. #6
    Expert confirmé
    Homme Profil pro
    retraité
    Inscrit en
    Juin 2012
    Messages
    3 419
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : retraité
    Secteur : Associations - ONG

    Informations forums :
    Inscription : Juin 2012
    Messages : 3 419
    Par défaut
    Bonjour,

    Il est normal que la partie entre le #Else et #End If soit en rouge.
    Sur votre machine 64bits c'est la partie qui suit l'instruction #If VBA7 Then qui est employée.
    Le même fichier sur une machine 32bits utilisera ce qui suit l'instruction #Else.

    Maintenant, il y a quand même une faute d'inattention: dans la déclaration il faut nommer la fonction apiShellExecute (et non ShellExecute) pour qu'il y ait concordance avec l'instruction Call apiShellExecute ... appelée dans la procédure PrintPdf().
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    #If VBA7 Then
        Private Declare PtrSafe Function apiShellExecute Lib "shell32.dll" Alias "ShellExecuteA" _
            (ByVal hwnd As Long, ByVal lpOperation As String, ByVal lpFile As String, _
             ByVal lpParameters As String, ByVal lpDirectory As String, ByVal nShowCmd As Long) As Long
    #Else
        Private Declare Function apiShellExecute Lib "shell32.dll" Alias "ShellExecuteA" _
            (ByVal hwnd As Long, ByVal lpOperation As String, ByVal lpFile As String, _
             ByVal lpParameters As String, ByVal lpDirectory As String, ByVal nShowCmd As Long) As Long
    #End If
    Bonne continuation.

Discussions similaires

  1. [XL-2010] Macro pour recherche multiple à partir d'une liste
    Par DJ_OAKLEY_511 dans le forum Macros et VBA Excel
    Réponses: 7
    Dernier message: 20/04/2018, 17h18
  2. [XL-2013] Macro impression pdf via une liste déroulante
    Par ovich87 dans le forum Macros et VBA Excel
    Réponses: 4
    Dernier message: 08/03/2017, 16h28
  3. [XL-2007] Macro mail individuel personnalisé à partir d'une liste d'adresses
    Par AntoineHubert dans le forum Excel
    Réponses: 2
    Dernier message: 02/08/2016, 09h40
  4. generation et impression d'un PDF a partir d'une JSP
    Par j2eejsp dans le forum Jasper
    Réponses: 1
    Dernier message: 01/07/2008, 09h51
  5. VBA sous excel - Macro - Création de feuilles à partir d'une liste
    Par Sylione dans le forum Macros et VBA Excel
    Réponses: 1
    Dernier message: 14/05/2007, 09h42

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