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 :

Exportation PDF multtiple [XL-2010]


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Inscrit en
    Décembre 2013
    Messages
    11
    Détails du profil
    Informations forums :
    Inscription : Décembre 2013
    Messages : 11
    Par défaut Exportation PDF multtiple
    Bonjour à tous,

    J'ai créé un fichier avec un feuille "Base de données" avec plus de 200 lignes qui correspondent à autant de clients.
    La deuxième feuille affiche et met en forme ces données en entrant simplement le n° client en A1 puis avec des "recherchev".
    J'ai aussi mis une macro pour l'exportation en PDF.

    Le problème : Comment exporter en PDF toutes les fiches clients en une seule macro ce qui limiterai les oublis et cette action rébarbative ?

  2. #2
    Expert éminent Avatar de Menhir
    Homme Profil pro
    Ingénieur
    Inscrit en
    Juin 2007
    Messages
    16 037
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Finistère (Bretagne)

    Informations professionnelles :
    Activité : Ingénieur
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2007
    Messages : 16 037
    Par défaut
    Tu fais une boucle qui scrute toutes les lignes du tableau de ta feuille 2 et qui, à chaque tour, met le nom du client dans le A1 de ta feuille 2 et génère le PDF.

    En supposant que tes noms de clients sont en colonne A à partir de la ligne 1

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    Dim Client as range
    For each Client in Feuille1.Range("A1:A"&Feulle1.Cells(Rows,1).End(xlUp).Row)
       Feuille2.Value = Client.Value
     
       procédure d'impression du PDF
     
    Next Client

  3. #3
    Membre averti
    Inscrit en
    Décembre 2013
    Messages
    11
    Détails du profil
    Informations forums :
    Inscription : Décembre 2013
    Messages : 11
    Par défaut Sur la bonne voie
    Merci Menhir, je pense que la solution est bonne mais étant novice au stade bidouille je n'arrive à l'adapté:

    En fait le code client est entré en B1 de la feuille de synthèse et le 1er numéro client est en A3 de la feuille de saisie.

    Voici le code que j'ai essayer mais il bloque :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    Sub Publi_Tout_Pdf()
     
    Dim Client As Range
    For Each Client In Sheets("Feuille de saisie").Range("A3:A" & Sheets("Feuille de saisie").Cells(Rows, 3).End(xlUp).Row)
       Sheets("Feuille de synthèse").Range("B1") = Client.Value
     
    Call PubliPdf
     
    Next Client
     
    End Sub

  4. #4
    Expert éminent Avatar de Menhir
    Homme Profil pro
    Ingénieur
    Inscrit en
    Juin 2007
    Messages
    16 037
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Finistère (Bretagne)

    Informations professionnelles :
    Activité : Ingénieur
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2007
    Messages : 16 037
    Par défaut
    Citation Envoyé par trezz Voir le message
    étant novice au stade bidouille je n'arrive à l'adapté:
    J'ai cru que tu avais créé ta macro d'exportation des PDF.

    Si tu ne mets pas le contenu de la macro, impossible de te dire comment l'adapter.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Sheets("Feuille de synthèse").Range("B1") = Client.Value
    Effectivement, j'avais oublié de mettre la référence de la cellule destination dans mon code.
    Tu l'as très bien corrigé.

    Voici le code que j'ai essayer mais il bloque :
    Que veux-tu dire par "il bloque" ?
    Quelle intitulé d'erreur ? Sur quelle ligne ?

    Citation Envoyé par trezz Voir le message
    Pourquoi pas le bon forum ?
    Parce que ce qui concerne les macro VBA se met dans la sous-rubrique "Macros et VBA Excel".
    Ici, normalement, c'est la rubrique Excel pur (mais tu n'es pas seul à faire cette erreur).

  5. #5
    Membre averti
    Inscrit en
    Décembre 2013
    Messages
    11
    Détails du profil
    Informations forums :
    Inscription : Décembre 2013
    Messages : 11
    Par défaut
    Il me met "erreur d'exécution 13 incompatibilité de type" et cette ligne s'affiche en jaune :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    For Each Client In Sheets("Feuille de saisie").Range("A3:A" & Sheets("Feuille de saisie").Cells(Rows, 3).End(xlUp).Row)
    La macro PubliPdf fonctionne très bien quand je rentre le n° client manuellement c'est pour ça que je fait un call sinon la voici : .

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    Sub PubliPdf()
     
    Dim fichier As String
    fichier = "C:\\" & [A2].Value & ""
    ActiveSheet.ExportAsFixedFormat Type:=xlTypePDF, Filename:=fichier, _
        Quality:=xlQualityStandard, IncludeDocProperties:=True, _
        ignorePrintAreas:=False, OpenAfterPublish:=False
     
    End Sub

  6. #6
    Expert éminent Avatar de Menhir
    Homme Profil pro
    Ingénieur
    Inscrit en
    Juin 2007
    Messages
    16 037
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Finistère (Bretagne)

    Informations professionnelles :
    Activité : Ingénieur
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2007
    Messages : 16 037
    Par défaut
    Citation Envoyé par trezz Voir le message
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    For Each Client In Sheets("Feuille de saisie").Range("A3:A" & Sheets("Feuille de saisie").Cells(Rows, 3).End(xlUp).Row)
    J'ai tapé mon code un peu vite. J'ai oublié que Rows n'est pas un nombre de cellules mais un ensemble de cellules. Il faut y ajouter .Count
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    For Each Client In Sheets("Feuille de saisie").Range("A3:A" & Sheets("Feuille de saisie").Cells(Rows.Count, 3).End(xlUp).Row)
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    Dim fichier As String
     
    fichier = "C:\\" & [A2].Value & ""
    ActiveSheet.ExportAsFixedFormat Type:=xlTypePDF, Filename:=fichier, _
        Quality:=xlQualityStandard, IncludeDocProperties:=True, _
        ignorePrintAreas:=False, OpenAfterPublish:=False
    Es-tu sûr de ton A2 pour créer le nom de fichier ?
    Essaye de le précéder d'un Worksheets() avec le nom de l'onglet dans lequel se trouve cette cellule.

  7. #7
    Membre averti
    Inscrit en
    Décembre 2013
    Messages
    11
    Détails du profil
    Informations forums :
    Inscription : Décembre 2013
    Messages : 11
    Par défaut Mission accomplie !!!
    Pour le A2 c'était OK.

    Merci Menhir pour cette aide et l'astuce du "worksheets" c'était bien vu j'en ai coller 2 pour blinder le tout !

    Les macros en état de marche :
    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
    Sub PubliPdf()
     
     
    Dim fichier As String
    fichier = Sheets("Fiche de synthèse").Range("O2") + "\" & Worksheets("Fiche de synthèse").Range("A2").Value & ""
    Worksheets("Fiche de synthèse").ExportAsFixedFormat Type:=xlTypePDF, Filename:=fichier, _
        Quality:=xlQualityStandard, IncludeDocProperties:=True, _
        ignorePrintAreas:=False, OpenAfterPublish:=False
     
    End Sub
     
    Sub Publi_Tout_Pdf()
     
    Dim Client As Range
    For Each Client In Sheets("Feuille de saisie").Range("A3:A" & Sheets("Feuille de saisie").Cells(Rows.Count, 3).End(xlUp).Row)
       Sheets("Fiche de synthèse").Range("B1") = Client.Value
     
    Call PubliPdf
     
    Next Client
     
    End Sub

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 4
    Dernier message: 18/07/2006, 07h06
  2. Exporter PDF vers XLS
    Par Jaggana dans le forum C
    Réponses: 7
    Dernier message: 11/04/2006, 16h23
  3. [displaytag]decorator dans l'export pdf
    Par seb_fou dans le forum Servlets/JSP
    Réponses: 3
    Dernier message: 24/03/2006, 12h54
  4. exportation pdf données unicode
    Par speed034 dans le forum SAP Crystal Reports
    Réponses: 9
    Dernier message: 28/06/2005, 14h25
  5. [CR][.Net] Exportation PDF avec Crystal Report
    Par SoaB dans le forum SAP Crystal Reports
    Réponses: 2
    Dernier message: 11/05/2005, 13h25

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