Sauvegarder onglets en PDf dans un ordre defini

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

  • Book2.xlsx
    11.4 KB · Affichages: 38
  • Book2.xlsx
    11.4 KB · Affichages: 37
  • Book2.xlsx
    11.4 KB · Affichages: 29

camarchepas

XLDnaute Barbatruc
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
 

DOMERGO

XLDnaute Nouveau
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:

camarchepas

XLDnaute Barbatruc
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
 

camarchepas

XLDnaute Barbatruc
Re : Sauvegarder onglets en PDf dans un ordre defini

Bonjour ,

Oups , erreur de version de fichier , voici la bonne
 

Pièces jointes

  • Book2.xlsm
    27.4 KB · Affichages: 30
  • Book2.xlsm
    27.4 KB · Affichages: 41
  • Book2.xlsm
    27.4 KB · Affichages: 39
  • pdf.pdf
    89.1 KB · Affichages: 36
  • pdf.pdf
    89.1 KB · Affichages: 45
  • pdf.pdf
    89.1 KB · Affichages: 24

DOMERGO

XLDnaute Nouveau
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.
 

DOMERGO

XLDnaute Nouveau
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:

DOMERGO

XLDnaute Nouveau
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
 

camarchepas

XLDnaute Barbatruc
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
 

Discussions similaires

Statistiques des forums

Discussions
312 304
Messages
2 087 059
Membres
103 444
dernier inscrit
Aeggie78