conversion en pdf tous types de fichiers

armelle1303

XLDnaute Junior
bonjour le forum

voici mon problème enfin mes problèmes.
j'ai crée une macro pour sélectionner un fichier el convertir en pdf pour l'enregister au même endroit que le fichier initial.
pour trouver ce code de conversion, j'ai trouvé de nombreux exemples sur le forum qui utilisait le même exemple et qui apparemment était nickel mais moi j'ai des problèmes :
1: cela me crée bien un fichier pdf et l'enregistre à l'endroit voulu avec le nom OK mais, quand j'ouvre le pdf cela n'a rien à voir avec le fichier sélectionné et c'est toujours la même chose quelque soit le fichier sélectionné et son extension.

en plus je voudrais savoir comment faire pour une sélection de la zone à convertir. plus de détails : je veux convertir des fichiers jpg, xls, doc ou dft (dft issus d'un logiciel CAO) et j'ai vu que sur le logiciel CAO si j'utilise PDF Creator en direct je dois sélectionner la zone voulue comment puis je insérer cette demande dans mon code?

Dans l'exemple il y a :
Set fd = Nothing : à quoi cela sert-il ?

pour le code concernant la conversion , je ne l'ai pas compris (vu mon niveau de connaissance) sauf pour le autosave.
j'arrive à comprendre quelques bribes mais c'est pas génial. si quelqu'un peut m'éclairer

pour l'envoi des messages : cela m'envoie le message "type défini par l'utilisateur non défini" dès la déclaration de la var : là je sèche mais je n'ai pas encore effectué de recherches sur ce problème.


Pour finir, j'usqu'à hier soir cela fonctionnait et puis d'un seul coup
plante au test Isempty et fais exit sub . j'ai lu que c'est parce que cela renvoie True mais pourquoi je ne maitrise pas non plus.


Et voilà, cela fait beaucoup de choses mais je prends toutes explications même si elles sont pertielles cela me fera avancer.

Vous verrez dans le fichier joint que j'ai modifié un peu le code en y ajoutant un explorateur pour sélectionner le fichier initial et récupérer le nom et le chemin.
Dans le fichier original j 'ouvre un formulaire qui me permettra de définir un nouveau chemin d'enregistrement (mais j'ai supprimé cette partie dans l'exemple car le fichier devenait trop gros).
J'ai également modifié l'exemple original trouvé sur le forum en y ajoutant la macro Kill (module1) que j'ai trouvé aussi sur le net (tue le process PDF).

Merci d'avance pour votre aide
 

MuscatMimi

XLDnaute Accro
Re : conversion en pdf tous types de fichiers

Bonsoir nat54,armelle et tout le forum

Je viens de réaliser justement la convertion Excel en Pdf,Enregistrement Fichier .xls et Fichier .Pdf
Voici mon code a toi de l'adapter a tes besoins

Code:
Sub Enregistrement()
Dim Chemin1$, Chemin2$, Client$, Fichier$, Numfact$, Jour$, Chantier$, FactN°$
Chemin1 = "F:\Factures\"
'Chemin2 = "E:\Backup\Factures\"
Jour = Format(Day(Now()), "00") & "_" & Format(Month(Now()), "00") & "_" & Year(Now)
Client = Range("G4")
Numfact = Range("H12")
Chantier = Range("H13")
FactN° = Range("H14")
Fichier = Jour & "_" & Client & "_" & FactN° & "_" & Numfact & "_" & Chantier & ".xls"
If Dir(Chemin1 & Client, 16) = "" Then MkDir Chemin1 & Client
ActiveWorkbook.SaveAs Chemin1 & Client & "\" & Fichier

'--If Dir(Chemin2 & Client, 16) = "" Then MkDir Chemin2 & Client 'Backup
'--ActiveWorkbook.SaveAs Chemin2 & Client & "\" & Fichier


Dim jobPDF As Object
Dim sNomPDF As String
'Dim sCheminPDF As String
 
    Jour = Format(Now(), "dd mm yyyy")
    sNomPDF = Jour & "_" & Range("G4") & "_" & Range("H12") & "_" & Range("H13") & "_" & Range("H14")
    'sCheminPDF = "F:\Facture\"

If IsEmpty(ActiveSheet.UsedRange) Then Exit Sub
 
    Set jobPDF = CreateObject("PDFCreator.clsPDFCreator")
 
    With jobPDF
        If .cStart("/NoProcessingAtStartup") = False Then
            MsgBox "Initialisation de PDFCreator impossible", vbCritical + vbOKOnly, "PDFCreator"
            Exit Sub
        End If
        .cOption("UseAutosave") = 1
        .cOption("UseAutosaveDirectory") = 1
        .cOption("AutosaveDirectory") = (Chemin1 & Client) 'Chemin1 'sCheminPDF
        .cOption("AutosaveFilename") = sNomPDF
 
        '--0=PDF, 1=Png, 2=jpg, 3=bmp, 4=pcx, 5=tif, 6=ps, 7=eps, 8=txt
        .cOption("AutosaveFormat") = 0
        .cClearCache
    
    End With
 
    ActiveSheet.PrintOut copies:=1, ActivePrinter:="PDFCreator"
 
    '--Fichier dans la file d'attente
    Do Until jobPDF.cCountOfPrintjobs = 1
        DoEvents
    Loop
    jobPDF.cPrinterStop = False
 
    'Attendre que la file d'attente soit vide
    Do Until jobPDF.cCountOfPrintjobs = 0
        DoEvents
    Loop
    jobPDF.cClose
    Set jobPDF = Nothing
     ThisWorkbook.Close
End Sub

Bonne soirée
 

armelle1303

XLDnaute Junior
Re : conversion en pdf tous types de fichiers

bonjour nat
bien vu
Oups j'ai écris ce message avant de repartir bosser ce midi et je n'ai pas vérifié

Merci
 

Pièces jointes

  • exemple.zip
    21.1 KB · Affichages: 97
  • exemple.zip
    21.1 KB · Affichages: 74
  • exemple.zip
    21.1 KB · Affichages: 72

armelle1303

XLDnaute Junior
Re : conversion en pdf tous types de fichiers

bonsoir Vaucluse, le forum

Merci pour ton code
c'est effectivement l'exemple que j'ai utilisé avec quelques modifs au départ pour le chemin mais qui je pense ne joue pas sur le reste du code relatif au PDF.

mes questions se posent donc toujours
et je viens juste de joidre l'exemple oublié ce midi.

A+
 

armelle1303

XLDnaute Junior
Re : conversion en pdf tous types de fichiers

bonsoir
bon j'avance un peu

pour l'erreur concernnat les messages , il fallait aller cocher Microsofot CDO For Exchange 2000 Library dans outils/références.

pour Is empty (active sheet.used) qui me renvoyait true, j'ai compris : c'est parce que ma feuille excel était vide : évident non il n' y a qu'à traduire.

Seulement dans mon exemple cela ne me sert à rien car ce n'est pas la feuille du classeur contenant. je pense pour voir la supprimer tout simplement et c'est aussi pour cela que le contenu de mon pdf était toujours le même.


donc il me reste les problèmes suivant :

je sélectionne mon fichier via l'explorateur : comment faire pour que la macro prenne ce fichier? Faut il l'ouvrir? mais quelle procédure pour qu'il prenne ce fichier et pas un autre ouvert ou la feuille active d'excel?

comment faire pour une sélection de la zone à convertir. plus de détails : je veux convertir des fichiers jpg, xls, doc ou dft (dft issus d'un logiciel CAO) et j'ai vu que sur le logiciel CAO si j'utilise PDF Creator en direct je dois sélectionner la zone voulue comment puis je insérer cette demande dans mon code?

Dans l'exemple il y a :
Set fd = Nothing : à quoi cela sert-il ?

pour le code concernant la conversion , je ne l'ai pas compris (vu mon niveau de connaissance) sauf pour le autosave.
j'arrive à comprendre quelques bribes mais c'est pas génial. si quelqu'un peut m'éclairer

voilà merci pour votre aide
 

armelle1303

XLDnaute Junior
Re : conversion en pdf tous types de fichiers

bonsoir à tous

en fait là je bloque carrément et après plusieurs heures de recherche sur le forum et le net, je me pose une question (car je n'ai rien trouvé) :
Est il possible de convertir des fichiers jpg , dft ou autres que xls et doc en pdf via une macro vba?

je rappelle mon but :
pouvoir sélectionner un fichier (de n'importe quel type convertible avec pdfcreator) : ça c'est ok via un explorateur

le convertir en pdf : le but est d'éviter à l'utilisateur d'utiliser directement pdf cretaor qui va lui afficher un aperçu et lui demander un chemin d'enregistrement. ceci sera une perte de temps car j'oblige à sauvegarder sous un chemin et nom spécifique : c'est là que je bug

obliger un chemin d'enregistrement et un type de nom : ça c'est ok : j'ai crée un usf avec des listes de choix et des txt pour ne donner que certaines possibilités de dossiers et de noms


Si cela n'est pas possible, je ferai en 2 étapes : utilisation directe de pdfcreator puis enregistrement mais cela sera moins convivial

Merci de m'éclairer à ce sujet pour savoir si je dois continuer mes recherches
 

Statistiques des forums

Discussions
312 302
Messages
2 087 035
Membres
103 436
dernier inscrit
PascalH