Sélectionner toute les feuil dans un Array
Bonjour, j'ai une macro qui produit un fichier pdf et qui fonctionne très bien. Mon petit soucis est que je voudrait sélectionner toutes les feuilles du workbook puisque j'en ai certaine qui sont crée par des macros avec des dates exemple "Riverview lundi 09h11". J'ai essayé avec sheets.select et plusieurs autre méthode mais sans succès. voici mon bout de code trouvé sur internet et manipuler pour convenir à mes besoins.
Sub createPDFfiles()
Dim ws As Worksheet
Dim Fname As String
Dim newdate As String
' crée un groupe de travail pour la création d'un SEUL fichier PDF
ThisWorkbook.Sheets(Array("Acceuil", "Temp", "Dimanche", "Lundi", "Mardi", "Mercredi", "Jeudi", "Vendredi", "Samedi", _
"Calcul", "Pains", "Fromage", "Legumes", "Carousel", "Sherby", "Breuvages", "Riverview", "Paperasse", "Divers", "Annuaire")).Select
newdate = Sheets("Dimanche").Range("a4") + 6
On Error Resume Next 'Continue s'il y a erreur
' crée le nom du fichier PDF ainsi que son PATH
Fname = "C:\Users\Luc\Desktop\Rapport Hebdomadaire\Rapport Hebdomadaire Boucherville " & Format(newdate, "yyyy-mm-dd")
' crée le PDF
ActiveSheet.ExportAsFixedFormat _
Type:=xlTypePDF, _
Filename:=Fname, _
Quality:=xlQualityStandard, _
IncludeDocProperties:=True, _
IgnorePrintAreas:=False
Application.ScreenUpdating = False
' ce code sert à sortir du mode: groupe de travail
With Sheets("Impression")
.activate
.Range("A1") = "1"
.Range("A1") = ""
End With
With Sheets("Acceuil")
.Select
End With
' ce code sert à retirer les lignes blanches des sauts de page que crée le pdf
Dim wks As Worksheet
For Each wks In ActiveWorkbook.Worksheets
wks.DisplayPageBreaks = False
Next
Application.ScreenUpdating = True
End SubBonjour et bienvenu(e)
A tester
Option Explicit
Sub createPDFfiles()
Dim Fname As String, Chemin As String
Dim newdate As String
'Chemin = ThisWorkbook.Path & "\"
Chemin = "C:\Users\Luc\Desktop\Rapport Hebdomadaire\"
Fname = "Rapport Hebdomadaire Boucherville " & Format(newdate, "yyyy-mm-dd") & ".pdf"
newdate = Sheets("Dimanche").Range("a4") + 6
'Fichier déjà présent ?
If Dir(Chemin & Fname) <> "" Then
If MsgBox("Le document suivant existe déjà :" & vbLf & vbLf & Fname & _
vbLf & vbLf & "Voulez-vous le remplacer ?", vbYesNo + vbQuestion, "Doublon") <> vbYes Then Exit Sub
End If
Application.ScreenUpdating = False
'Sheets(Array("Feuil1", "Feuil2", "Feuil3", "Dimanche")).Copy
Sheets(Array("Acceuil", "Temp", "Dimanche", "Lundi", "Mardi", "Mercredi", "Jeudi", "Vendredi", "Samedi", _
"Calcul", "Pains", "Fromage", "Legumes", "Carousel", "Sherby", "Breuvages", "Riverview", "Paperasse", "Divers", "Annuaire")).Copy
' crée le PDF
With ActiveWorkbook
Application.DisplayAlerts = False
.ExportAsFixedFormat Type:=xlTypePDF, Filename:=Chemin & Fname, Quality:=xlQualityStandard, IncludeDocProperties:=True, IgnorePrintAreas:=False
.Close savechanges:=False
End With
End SubSi cela fonctionne tu pourras enlever les lignes en remarque
Merci Banzai64 de ta réponse. ton code fonctionne mais malheureusement il sélectionne seulement les sheets inscrite dans l'array et non toute les sheets du workbook. L'array = toutes les sheets du classeur + créer le pdf pour avoir un seul fichier. Exemple: une fois la sheet RIVERVIEW complété ma macro crée une deuxième sheet et la renomme RIVERVIEW LUNDI 09H00 et vide l'original. RIVERVIEW LUNDI 09H00 doit être dans le pdf, mais je ne sais comment l'insérer dans l'array.
Bonjour
A tester
Option Explicit
Sub createPDFfiles()
Dim Fname As String, Chemin As String
Dim newdate As String, Ws As Worksheet
newdate = Sheets("Dimanche").Range("a4") + 6
'Chemin = ThisWorkbook.Path & "\"
Chemin = "C:\Users\Luc\Desktop\Rapport Hebdomadaire\"
Fname = "Rapport Hebdomadaire Boucherville " & Format(newdate, "yyyy-mm-dd") & ".pdf"
'Fichier déjà présent ?
If Dir(Chemin & Fname) <> "" Then
If MsgBox("Le document suivant existe déjà :" & vbLf & vbLf & Fname & _
vbLf & vbLf & "Voulez-vous le remplacer ?", vbYesNo + vbQuestion, "Doublon") <> vbYes Then Exit Sub
End If
Application.ScreenUpdating = False
' crée le PDF
Application.DisplayAlerts = False
ActiveWorkbook.ExportAsFixedFormat Type:=xlTypePDF, Filename:=Chemin & Fname, Quality:=xlQualityStandard, IncludeDocProperties:=True, IgnorePrintAreas:=False
For Each Ws In Sheets
Ws.DisplayPageBreaks = False
Next Ws
End SubMerci de ta réponse matinale. Je vais tester cela ce soir!
Bonsoir à toi Banzai64, ton code fonctionne à merveille.