Conversion de certaines feuilles du classeur en PDF [Résolu]

Signaler
Messages postés
166
Date d'inscription
dimanche 22 janvier 2012
Statut
Membre
Dernière intervention
30 juillet 2015
-
Messages postés
166
Date d'inscription
dimanche 22 janvier 2012
Statut
Membre
Dernière intervention
30 juillet 2015
-
Bonjour à tous,

J'ai fais plusieurs recherche sur différents sites afin de pouvoir trouver une macro qui me permette de convertir certaines feuille de mon classeur excel en PDF.

Voici ce que je voudrais :

Je souhaiterais créer un bouton qui soit capable de convertir les feuilles nommé sauf celles nommée "vierge". Par-contre, s'il serait possible d'avoir le choix de l'imprimante ?

Je possède déjà une macro mais celle ci convertie le classeur complet.

Je vous remercie pour votre aide,

Bonne journée à tous.

Christian




--
A voir également:

39 réponses

Messages postés
166
Date d'inscription
dimanche 22 janvier 2012
Statut
Membre
Dernière intervention
30 juillet 2015
2
je t'enverrais bien mon fichier mais je sais pas comment... lol

--
Messages postés
18038
Date d'inscription
lundi 7 décembre 2009
Statut
Modérateur
Dernière intervention
11 avril 2018
233
s'il te souligne vraiment cette ligne-là, c'est qu'il dénonce un conflit et que tu as déclaré autrement semaine quelque-part ailleurs.
Messages postés
7223
Date d'inscription
jeudi 13 septembre 2007
Statut
Contributeur
Dernière intervention
21 janvier 2021
118
Bonjour ucfoutu,

j'ai déclaré la variable en String. Mais si dans la cellule elle est dans un autre format cela a t'il une influence?

cco86260 essaie de mettre un nombre dans la cellule A1 et sers-toi de mon code pour voir si cela fonctionne
Messages postés
18038
Date d'inscription
lundi 7 décembre 2009
Statut
Modérateur
Dernière intervention
11 avril 2018
233
Bonjour, cs_Le Pivert,
cela pourrait avoir peut-être ailleurs (dans le reste du code, puisque pouvant contenir des caractères non acceptable dans un chemin) une importance.
Mais cette ligne-là (celle qu'il dit dénoncée !) ne serait pas dénoncée !
Serait par contre dénoncée une autre ligne que celle dont il parle : la ligne où il initialise la variable ... chemsave
(Clin d'oeil) ...
Messages postés
166
Date d'inscription
dimanche 22 janvier 2012
Statut
Membre
Dernière intervention
30 juillet 2015
2
Re,

Comment faire pour vous envoyer le fichier ?

merci


--
Messages postés
18038
Date d'inscription
lundi 7 décembre 2009
Statut
Modérateur
Dernière intervention
11 avril 2018
233
Ici, on n' "envoie" pas un fichier.
On y est entre développeurs et on sait s'expliquer en développeur !
Un classeur, enfin, est toujours un danger potentiel pour qui l'ouvrirait (dit mille et une fois).
Si tu as les idées claires, tu sais isoler et montrer le code incriminé, hein ...
voilà voilà ...

PS : et cela n'explique toujours pas ce que tu dis avoir comme ligne "dénoncée", hein ...
Alors : quelle est-elle finalement ?...


________________________
Réponse exacte ? => "REPONSE ACCEPTEE" facilitera les recherches.
Pas d'aide en ligne installée ? => ne comptez pas sur moi pour simplement répéter son contenu. Je n'interviend
Messages postés
166
Date d'inscription
dimanche 22 janvier 2012
Statut
Membre
Dernière intervention
30 juillet 2015
2
Salut ucfoutu

C'est pas faut !! résultat d'une question posée sans réfléchir!! mais quand on y pense c'est d'une logique imparable.

Bref...

vous m'avez un peu perdu là ;)

Alors pour essayer d'être clair,

Dim semaine As String


Quel est sont rôle ?

Il n'est référencé nul par ailleur il est seulement dans CE code.

mais dans mon classeur il y a un cellule marqué "N°SEM" et la cellule d'à coté on y met la valeur.

Y aurait il une incidence ?

Mais j'y pense tu m'as déjà aidé pour ce projet ? ;)

Christian

--
Messages postés
7223
Date d'inscription
jeudi 13 septembre 2007
Statut
Contributeur
Dernière intervention
21 janvier 2021
118
Dim semaine As String

Quel est son rôle ?

Quelle question!!!!!

Elle fait référence au numero de semaine qui est inscrit dans ta cellule. Mais tu peux changer le nom de ta variable par toto si cela fonctionne.

Chez moi cela fonctionne. Si j'ai répondu à ton post de manière très détaillée, c'est que javais fait ce classeur il y a quelques année pour un membre de ce site( CSCodeSource). Donc il m'a été facile de t'en faire profiter en ajoutant les modifications que tu voulais. Mais j'admet qu'il faut avoir quelques notions de vba pour en comprendre toute la mécanique.

cdtl
Messages postés
166
Date d'inscription
dimanche 22 janvier 2012
Statut
Membre
Dernière intervention
30 juillet 2015
2
Alors j'ai chercher l'erreur et devine quoi ? ba ça venait de moi ! quelle honte !

en mettant le Dim au bonne endroit (declaration) ça fonctionne mieux du coup mais j'ai encore un bug pour la création du dossier... donc je change de méthode, je cherche, et si vraiment je ne trouve pas Là je reviens vers toi.

Je commence à comprendre certaine chose, mais là le travaille m'appel... :(

Merci pour votre aide à tous

--
Messages postés
166
Date d'inscription
dimanche 22 janvier 2012
Statut
Membre
Dernière intervention
30 juillet 2015
2
Re-bonjour, :)

Bon pour les dossiers c'est réglé sauf que :

Je voudrais en faite qu'il se créer sur le bureau de Windows

Le chemin que j'ai mis pour la vérification est :

'C:\Users\Christian\Desktop\RapHebdo\POINTAGES

Mais tout le monde ne s'appel pas christian (lol)

Y a t-il un chemin spécifique pour que le dossier se créé directement dans \Desktop\RapHebdo\POINTAGES ?

j'ai essayer avec ça :

C:\~\Desktop\RapHebdo\POINTAGES

Mais ça ne marche pas...

Merci

--
Messages postés
7223
Date d'inscription
jeudi 13 septembre 2007
Statut
Contributeur
Dernière intervention
21 janvier 2021
118
Voici un code qui fonctionne.

Option Explicit
Dim semaine As String
Dim path As String

Private Sub CommandButton2_Click()
semaine = Range("A1") 'a adapter
dossier 'création dossier
chemsave = path & semaine & "\"
End Sub

Sub dossier()
path = CreateObject("WScript.Shell").SpecialFolders("Desktop") & "\"
If Len(Dir(path & semaine, vbDirectory)) = 0 Then 'chemin a adapter
MkDir path & semaine
End If
End Sub

Messages postés
166
Date d'inscription
dimanche 22 janvier 2012
Statut
Membre
Dernière intervention
30 juillet 2015
2
Salut cs_Le Pivert

Je viens de mettre ton code en place par-contre je n'ai pas compris ou je dois mettre le chemin a adapter ?

--
Messages postés
7223
Date d'inscription
jeudi 13 septembre 2007
Statut
Contributeur
Dernière intervention
21 janvier 2021
118
Il n'y a pas de chemin à adapter. J'ai oublié d'effacer le commentaire du code précédent. Cela doit fonctionner maintenant?
Messages postés
166
Date d'inscription
dimanche 22 janvier 2012
Statut
Membre
Dernière intervention
30 juillet 2015
2
ba quand je clique sur creer dossier il ne se passe rien...

de plus, je ne sais pas si ça viens de Win 8.1 mais pdfcreator ne fonctionne plus sous VBA.



--
Messages postés
166
Date d'inscription
dimanche 22 janvier 2012
Statut
Membre
Dernière intervention
30 juillet 2015
2
Re,

Donc voilà, en faite je pense que le soucis viens de là :

Sub ToPdf()
Dim chemsave As String
chemsave = "C:\chemin dossier destination\" 'chemin destination
Set pdfjob = CreateObject("PDFCreator.clsPDFCreator")
'NomExcel = ThisWorkbook.Name
'NomPdf = Left(NomExcel, Len(NomExcel) - 4) & ".pdf"
With pdfjob
If .cstart("/NoProcessingAtStartup") = False Then
MsgBox "Can't initialize PDFCreator.", vbCritical + vbOKOnly, "PrtPDFCreator"
Exit Sub
End If
.cOption("UseAutosave") = 1
.cOption("UseAutisaveDirectory") = 1
.cOption("AutosaveDirectory") = chemsave 'chemin destination
.cOption("AutosaveFilename") = UserForm1.ComboBox1.Value & ".pdf" 'nom de la feuille
.cOption("AutosaveFormat") = 0
.cClearCache
End With
ActiveWindow.SelectedSheets.PrintOut From:=1, To:=32766, Copies:=1, ActivePrinter:="PDFCreator" 'on imprime la feuille active
'ThisWorkbook.PrintOut Copies:=1, ActivePrinter:="PDFCreator"
Do Until pdfjob.cCountOfPrintjobs = 1
DoEvents
Loop
pdfjob.cPrinterStop = False
Do Until pdfjob.cCountOfPrintjobs = 0
DoEvents
Loop
With pdfjob
.cDefaultprinter = DefaultPrinter
.cClearCache
.cClose
End With
Set pdfjob = Nothing
MsgBox "Votre PDF se trouve à cet emplacement: " & chemsave, vbInformation, "Convertir en PDF"
End Sub


c'est a la ligne 3 que ça se passe, de plus quand il me créé le dossier il me met juste "Pointages" alors que je voudrais "pointage-S45", il prend le 45 dans la cellule ("AZ10").

Alors je cherche encore mais le bout est proche ;)

--
Messages postés
7223
Date d'inscription
jeudi 13 septembre 2007
Statut
Contributeur
Dernière intervention
21 janvier 2021
118
Je t'avais dit de supprimer les chemins que tu avais mis pour tes essais. Comme ceci:

Sub ToPdf()
If chemsave = "" Then Exit Sub
Set pdfjob = CreateObject("PDFCreator.clsPDFCreator")
'NomExcel = ThisWorkbook.Name
'NomPdf = Left(NomExcel, Len(NomExcel) - 4) & ".pdf"
With pdfjob
If .cstart("/NoProcessingAtStartup") = False Then
MsgBox "Can't initialize PDFCreator.", vbCritical + vbOKOnly, "PrtPDFCreator"
Exit Sub
End If
.cOption("UseAutosave") = 1
.cOption("UseAutisaveDirectory") = 1
.cOption("AutosaveDirectory") = chemsave 'chemin destination
.cOption("AutosaveFilename") = UserForm1.ComboBox1.Value & ".pdf" 'nom de la feuille
.cOption("AutosaveFormat") = 0
.cClearCache
End With
ActiveWindow.SelectedSheets.PrintOut From:=1, To:=32766, Copies:=1, ActivePrinter:="PDFCreator" 'on imprime la feuille active
'ThisWorkbook.PrintOut Copies:=1, ActivePrinter:="PDFCreator"
Do Until pdfjob.cCountOfPrintjobs = 1
DoEvents
Loop
pdfjob.cPrinterStop = False
Do Until pdfjob.cCountOfPrintjobs = 0
DoEvents
Loop
With pdfjob
.cDefaultprinter = DefaultPrinter
.cClearCache
.cClose
End With
Set pdfjob = Nothing
MsgBox "Votre PDF se trouve à cet emplacement: " & chemsave, vbInformation, "Convertir en PDF"
End Su


Et pour le chemin du dossier:

Private Sub CommandButton2_Click()
semaine = Range("AZ10")
dossier 'création dossier
chemsave = path & "pointage-S" & semaine & "\"
End Sub

Sub dossier()
path = CreateObject("WScript.Shell").SpecialFolders("Desktop") & "\"
If Len(Dir(path & "pointage-S" & semaine, vbDirectory)) = 0 Then
MkDir path & "pointage-S" & semaine
End If


Il faut bien suivre ce que tu fais.Il faut beaucoup de rigueur dans la programmation. Un espace en plus et cela bug!!!!!!!!!!

Bon courage
Messages postés
166
Date d'inscription
dimanche 22 janvier 2012
Statut
Membre
Dernière intervention
30 juillet 2015
2
Bonjour cs_Le Pivert,


donc premièrement merci pour ton travail et tes conseils ainsi qu'à tout le forum d'ailleurs (au moins ça).

Donc, pour le nom de dossier ça fonctionne SAUF... la cellule ("AZ10") est une cellule a validation de donnée (liste déroulante), si je la laisse tel quel je n'ai pas de numéro de semaine a mon dossier par contre si je la met en manuel ça fonctionne. si tu as juste une piste ?

Merci
Christian

--
Messages postés
7223
Date d'inscription
jeudi 13 septembre 2007
Statut
Contributeur
Dernière intervention
21 janvier 2021
118
Je suis content que tout fonctionne. J'espère que tu as compris tout ce qui a été fait, c'est le but de ce forum. Pour la liste déroulante c'est un autre sujet, poste une nouvelle question.
Bonne continuation
Cordialement
Messages postés
166
Date d'inscription
dimanche 22 janvier 2012
Statut
Membre
Dernière intervention
30 juillet 2015
2
Salut cs_Le Pivert,

La liste déroulante est autre sujet ? Je pensais que se serait pareil vu qu'elle est existante depuis le début du projet, je ne savais pas que ça ferais une différence pour la macro mais à priori si... bon je cherche et je poste si je ne trouve pas.

En tous les cas un grand merci à toi pour tes conseils et ton travail.

Et merci à l'efficacité du forum, on a besoin de ça nous les newbies ;)

Christian

Crois-tu qu'un tuto à adapter serais faisable ? ou c'est trop spécifique ?

--