Impression multiple fichier PDF via Excel

Bonjour,

Je souhaiterais un fichier Excel qui permet d'imprimer plusieurs fichiers PDF situé dans un dossier (dans lequel se trouve le fichier excel) avec un nombre d'impression différent pour chaque fichier.

Est-ce possible selon vous ? si oui, quel pourrait être le code derrière le bouton impression svp?

Bonne journée et vous remerciant d'avance pour votre aide!

image image

Bonjour fxfx et

Une petite présentation ICI serait la bienvenue

Si vous ne l'avez pas encore fait, je vous invite à lire la charte du forum [A LIRE AVANT DE POSTER]
qui vous aidera dans vos demandes et réponses sur ce forum

Pour ce que vous demander, pourquoi vouloir utiliser Excel pour ça
Alors qu'il suffit de les sélectionner tous, clic droit - > Imprimer

A+

Bonjour,

@Bruno, pour le coup, je vois ce que fxfx veut dire.

Quand tu as plus de 10 fichiers et que pour chacun, il faut aller cliquer, définir le nombre d'impressions, etc ... c'est vite chronophage et pas très intéressant.

Je serais bien intéressé par une solution également.

Pour info, dans un petit fichier que j'ai développé, j'ai dû utiliser une solution de contournement. Les pdf étaient générés automatiquement par mon fichier Excel. Quand je voulais lancer des impressions des pdf, comme fxfx ici, je générais à nouveau le fichier depuis Word sans l'enregistrer, et une macro dans le fichier word lançait le nombre d'impressions nécessaires.

Pas très propre comme solution, mais je n'avais pas trouvé mieux.

Bonjour,

@bruno : ça y est la présentation est faite.

je cherche à imprimer plusieurs fichiers mais avec des nombres d’impression différent à chaque fois.
la fonction clique droit sur l’ensemble des fichiers n’imprime qu’un fichier de chaque.

Re,

Oui désolé, je nais pas lu correctement la demande

Voici une possibilité, légèrement amélioré mais adaptable

A+

Bon,

Ça me rassure. Si on veut imprimer 2 documents 3 fois, on voit 6 fenêtres Adobe Reader (chez moi) s'ouvrir, et Adobe Reader reste ouvert à la fin.
Il n'y a donc à priori pas de solution évidente qui existe depuis longtemps et à côté de laquelle je serais complètement passé.

Je ne sais pas jusque dans quelles limites on peut améliorer ton code, Bruno.

Dans mon cas, il fallait lancer les impressions de PDF en triple exemplaire, en noir et blanc et en recto-verso.
J'étais parti sur ma solution bancale après avoir trop longtemps tourné en rond :)

Merci pour ton partage en tout cas.

Bonjour fxfxx, le forum,

Bonjour BrunoM45 , JoyeuxNoel ,

Après plusieurs essais et en adaptant un code trouvé sur le net (désolé, je ne retrouve plus ma source,),

Un essai....semble fonctionnel chez moi bien que ça mouline un peu à l'impression....

A tester...

Option Explicit

#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

 Sub test()
    Dim Dossier As String, sPdf As String, i%, nbcopie%, x%
     Dossier = "C:\Users\maison\Desktop\pdf\" '..............................chemin à adapter !

     Application.ScreenUpdating = False

    With Sheets("Feuil1") '..................................................nom de la feuille à adapter !
     For i = 2 To .Range("A" & Rows.Count).End(xlUp).Row '...................boucle de la ligne 2 à la dernière en colonne A
      If .Range("A" & i) <> "" Then '........................................si A est rempli
       sPdf = Dossier & .Range("A" & i) & ".pdf" '...........................définit le fichier.pdf
        If Dir(sPdf) <> "" Then '............................................si le fichier existe
         nbcopie = .Range("B" & i).Value '...................................définit nombre de copie en colonne B
          If nbcopie > 0 Then '..............................................si nombre >0
           For x = 1 To nbcopie '............................................on boucle de 1 à nombre de copies
            Call ShellExecute(Application.hwnd, "print", sPdf, "", "", 1) '..impression
           Next x '..........................................................fin de la boucle dès que nbcopie est atteint
         End If
        End If
      End If
     Next i
    End With
End Sub

Cordialement,

Bonjour à tous,

Je te remercie pour cette autre version xorsankukai. Je n'avais pas eu l'occasion de venir ici depuis un PC avant, je n'avais pas pu lancer ça.

Par ailleurs, savez-vous pour quels genre de trucs exactement il faut le petit package if VBA7 ? Le mettez-vous désormais dans chaque programme ou juste quand il faut ?

Bonjour le fil

@JoyeuxNoel c'est pour ne pas être embêté avec les déclarations de DLL et les versions d'Office 32 ou 64 bits

A+

Re,

Je suis bien d'accord avec ça. Ce que je ne sais pas, c'est à quel moment exactement c'est nécessaire ou non.

Tu pourrais me dire que c'est nécessaire quand il y a des DLL à déclarer .

De ce que je sais, le code "normal" ne pose aucun souci que ce soit en 32 ou en 64 bits dans une immense majorité des cas.

Mon problème est justement d'analyser les fois où c'est nécessaire.

Re,

Désolé, mais tu sais mal

A partir du moment ou tu déclares une DLL 32 bits et que ta version Office est elle en 64 bits,
tu es obligé de mettre un PtrSafe, donc mieux vaut gérer les 2 possibilités pour que çà fonctionne sur toutes les versions

C'est ce que j'appelle du bon développement, bravo et merci à xorsankukai d'y penser

image

J'espère que ce sera plus clair pour toi

Re,

Merci pour ta réponse. Ce que j'appelais code normal, c'est un code dans lequel on ne déclare pas de dll. Ce qui est quand même souvent le cas.

Et justement, n'ayant aucune formation informatique, n'étant pas développeur, j'ai des lacunes. En l'occurrence, je ne sais pas ce qui impose de devoir déclarer une dll, ni tout ce que ça apporte exactement. Je ne fais que reproduire bêtement pour le moment. J'ai essayé de regarder à un moment mais ce n'était pas vulgarisé et j'ai été vite perdu.

Re,

Dans la demande de fxfx, il veut pouvoir imprimer plusieurs PDF depuis Excel,
cela ne peut se faire qu'à partir du Shell Windows et donc de sa bibliothèque "shell32.dll"

Pour pouvoir l'utiliser, il faut la déclarer

A+

Rechercher des sujets similaires à "impression multiple fichier pdf via"