Sauvegarder onglets en PDf dans un ordre defini

  • Initiateur de la discussion Initiateur de la discussion DOMERGO
  • Date de début Date de début

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

DOMERGO

XLDnaute Nouveau
Bonjour , je ne sais pas si cela est possible mais j'essais de trouver une macro qui me permet de sauvegarder plusieurs onglets bien définis dans un ordre différents que celui du fichier lui même dans un seul PDF. La cellule a1 de chaque onglet possède un nombre et j'aimerai que la sauvegarde des différents onglets dans mon fichier pdf se fasse en respectant l'ordre croissant se trouvant en a1 .

Merci pour votre aide.
 

Pièces jointes

Re : Sauvegarder onglets en PDf dans un ordre defini

Domergo,

un premier bout de code pour passer un groupe d'onglet en PDF

Je crois que pour le reste , tu devras être obligé de passer par un classeur temporaire , de classer les onglets dans l'ordre d'impression ,

puisavec ce bout de code d'envoyer tout cela dans un pdf

Code:
Sub test()
 ThisWorkbook.Worksheets(Array("Sheet6", "Sheet5", "Sheet4")).Select Replace:=False
 Selection.ExportAsFixedFormat Type:=xlTypePDF, Filename:="C:\expdf4.pdf", _
Quality:=xlQualityStandard, IncludeDocProperties:=True, _
IgnorePrintAreas:=False, OpenAfterPublish:=False


End Sub
 
Re : Sauvegarder onglets en PDf dans un ordre defini

merci camarchepas , en fait j'avais pensé créer un index des onglets de mon classeur, les noms de mes fichiers dans mon onglet index pouvant être filtrer grâce à un lien avec les cellules a1 de chaque onglet. A partir de là, je récupère le listing de mes onglets dasn un ordre bien déterminé dans un array et je sauvegarde le tout en pdf. Mais voila , mon raisonnement est peut être trop compliqué....
 
Dernière édition:
Re : Sauvegarder onglets en PDf dans un ordre defini

Bon , pas trés simple, mais je crois que cela fait ce que tu veux

Code:
Sub test()
Dim Feuille As Worksheet
Dim indexe(1000, 1) As String
Dim Maxi As Long, encours As Long
Dim Changement As Boolean
 Maxi = 1
For Each Feuille In ThisWorkbook.Worksheets
 indexe(Maxi, 0) = Feuille.Name
 indexe(Maxi, 1) = Feuille.Range("A1")
 Maxi = Maxi + 1
Next
'tri

Do
encours = 1
Changement = False
Do
If CLng(indexe(encours, 1)) > CLng(indexe(encours + 1, 1)) Then
 indexe(0, 1) = indexe(encours, 1)
 indexe(0, 0) = indexe(encours, 0)
 indexe(encours, 1) = indexe(encours + 1, 1)
 indexe(encours, 0) = indexe(encours + 1, 0)
 indexe(encours + 1, 1) = indexe(0, 1)
 indexe(encours + 1, 0) = indexe(0, 0)
 Changement = True
End If
encours = encours + 1
Loop Until encours = Maxi - 1
Loop Until Not Changement
For encours = 2 To Maxi - 1
 ThisWorkbook.Worksheets(indexe(encours, 0)).Move after:=ThisWorkbook.Worksheets(indexe(encours - 1, 0))
Next encours
For Each Feuille In ThisWorkbook.Worksheets
 Feuille.Select Replace:=False
Next
Selection.ExportAsFixedFormat Type:=xlTypePDF, Filename:="C:\expdf2.pdf", _
Quality:=xlQualityStandard, IncludeDocProperties:=True, _
IgnorePrintAreas:=False, OpenAfterPublish:=False


End Sub
 
Re : Sauvegarder onglets en PDf dans un ordre defini

Bonjour camarchepas , merci de t’être penché sur le problème. La macro a fonctionné une fois en me donnant un fichier pdf avec le contenu effectif des onglets . Depuis je n'y arrive plus , il me donne un fichier pdf vide.
Je pense qu'il ne manque pas beaucoup pour y arriver, de plus je voulais mettre un exception d'application sur certain onglets , mais ca ne marche pas plus.
 
Re : Sauvegarder onglets en PDf dans un ordre defini

J'ai trouver pourquoi mon fichier pdf était vierge super, reste à trouver comment je peux exclure certains onglets
Merci
Code:
Option Explicit

Sub test()
Dim Feuille As Worksheet
Dim indexe(1000, 1) As String
Dim Maxi As Long, encours As Long
Dim Changement As Boolean
 Maxi = 1
For Each Feuille In ThisWorkbook.Worksheets

If ws.Name <> "Sheet4" Then

 indexe(Maxi, 0) = Feuille.Name
 indexe(Maxi, 1) = Feuille.Range("A1")
 Maxi = Maxi + 1
Next
'tri

Do
encours = 1
Changement = False
Do
If CLng(indexe(encours, 1)) > CLng(indexe(encours + 1, 1)) Then
 indexe(0, 1) = indexe(encours, 1)
 indexe(0, 0) = indexe(encours, 0)
 indexe(encours, 1) = indexe(encours + 1, 1)
 indexe(encours, 0) = indexe(encours + 1, 0)
 indexe(encours + 1, 1) = indexe(0, 1)
 indexe(encours + 1, 0) = indexe(0, 0)
 Changement = True
End If
encours = encours + 1
Loop Until encours = Maxi - 1
Loop Until Not Changement
For encours = 2 To Maxi - 1
 ThisWorkbook.Worksheets(indexe(encours, 0)).Move after:=ThisWorkbook.Worksheets(indexe(encours - 1, 0))
Next encours
For Each Feuille In ThisWorkbook.Worksheets
 Feuille.Select Replace:=False
Next
  
    ActiveSheet.ExportAsFixedFormat Type:=xlTypePDF, Filename:= _
        "C:\Users\domergo\Downloads\Book2 (3).pdf", Quality:=xlQualityMinimum, _
        IncludeDocProperties:=True, IgnorePrintAreas:=False, OpenAfterPublish:= _
        True


End Sub
 
Dernière édition:
Re : Sauvegarder onglets en PDf dans un ordre defini

C'est exactement ce que je voulais, je te remercie infiniment "camarchepas ".
Une dernière requête (sans vouloir abuser de tes connaissances), j'ai recherché dans le forum pour des réponses sans en trouver une qui me convienne mais dans ma sauvegarde en PDF excel écrase systématiquement le dernier fichier sauvegarder. Est il possible de modifier le code afin que celui ci me demande confirmation sur le nom du fichier pdf afin que j'y rajoute au moins le numéro de semaine (pour le différencié de la precedente sauvegarde.
Encore merci, je suis super content du résultat.

Code:
ActiveSheet.ExportAsFixedFormat Type:=xlTypePDF, Filename:= _
        "C:\Users\domergo\Downloads\Book2 (3).pdf", Quality:=xlQualityMinimum, _
        IncludeDocProperties:=True, IgnorePrintAreas:=False, OpenAfterPublish:= _
        True
 
Re : Sauvegarder onglets en PDf dans un ordre defini

Comme cela ça peut marcher,

Une boite de dialogue propose la racine du nom de fichier,

Ensuite l'on ajoute d'une part le chemin et d'autre part l'extension du fichier


Ne pas oublier de déclarer Nomfichier en string
Dim NomFichier as string

Code:
NomFichier = InputBox("Entrez le nom du fichier ", "Attente saisie utilisateur", "Pdf_S")
NomFichier = "c:\" & NomFichier & ".pdf"
  ActiveSheet.ExportAsFixedFormat Type:=xlTypePDF, Filename:=NomFichier
 
- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD

Discussions similaires

Retour