Bonjour à tous,
Je suis novice en VBA, je sollicite votre aide sur une erreur que je ne parviens pas à résoudre seule.
J'ai une macro qui bug (erreur 1004, "la méthode select de la classe worksheet a échoué").
Cette macro a pour objet d'éditer en PDF seulement les onglets excel visible et de les fusionner.
ci-dessous la macro (l'erreur apparaît là où j'ai mis le texte en bleu et en gras):
Option Explicit
Private Function FeuilleVide(sNomFeuille As String) As Boolean
FeuilleVide = False
If WorksheetFunction.CountA(Worksheets(sNomFeuille).UsedRange) = 0 And _
Worksheets(sNomFeuille).Shapes.Count = 0 Then
FeuilleVide = True
End If
End Function
Sub FusionPDF()
Dim Ar() As Variant, j As Long
Dim Wsh As Worksheet, sFichier As String, sNom As String
Application.ScreenUpdating = False
For Each Wsh In ThisWorkbook.Worksheets
If Wsh.Visible And FeuilleVide(Wsh.Name) = False Then
ReDim Preserve Ar(j)
Ar(j) = Wsh.Name
j = j + 1
End If
Next Wsh
ThisWorkbook.Sheets(Ar).Select
sNom = ThisWorkbook.Path & "\" & "Fusion.pdf"
ActiveSheet.ExportAsFixedFormat Type:=xlTypePDF, Filename:=sNom, _
Quality:=xlQualityStandard, _
IncludeDocProperties:=True, _
IgnorePrintAreas:=False, _
OpenAfterPublish:=False
ThisWorkbook.Sheets(1).Select
Erase Ar
Application.ScreenUpdating = True
End Sub
Je suis novice en VBA, je sollicite votre aide sur une erreur que je ne parviens pas à résoudre seule.
J'ai une macro qui bug (erreur 1004, "la méthode select de la classe worksheet a échoué").
Cette macro a pour objet d'éditer en PDF seulement les onglets excel visible et de les fusionner.
ci-dessous la macro (l'erreur apparaît là où j'ai mis le texte en bleu et en gras):
Option Explicit
Private Function FeuilleVide(sNomFeuille As String) As Boolean
FeuilleVide = False
If WorksheetFunction.CountA(Worksheets(sNomFeuille).UsedRange) = 0 And _
Worksheets(sNomFeuille).Shapes.Count = 0 Then
FeuilleVide = True
End If
End Function
Sub FusionPDF()
Dim Ar() As Variant, j As Long
Dim Wsh As Worksheet, sFichier As String, sNom As String
Application.ScreenUpdating = False
For Each Wsh In ThisWorkbook.Worksheets
If Wsh.Visible And FeuilleVide(Wsh.Name) = False Then
ReDim Preserve Ar(j)
Ar(j) = Wsh.Name
j = j + 1
End If
Next Wsh
ThisWorkbook.Sheets(Ar).Select
sNom = ThisWorkbook.Path & "\" & "Fusion.pdf"
ActiveSheet.ExportAsFixedFormat Type:=xlTypePDF, Filename:=sNom, _
Quality:=xlQualityStandard, _
IncludeDocProperties:=True, _
IgnorePrintAreas:=False, _
OpenAfterPublish:=False
ThisWorkbook.Sheets(1).Select
Erase Ar
Application.ScreenUpdating = True
End Sub