Microsoft 365 Macro Impression PDF

gillmo

XLDnaute Occasionnel
Bonjour,

j'ai un souci sur l'impression PDF d'un fichier Excel. Dans la macro ci dessous, mon souci intervient sur la ligne Sheets(Array("conso cpte résultat", Ar)).Select. Si j'écris Sheets(Ar).Select , le PDF, avec l'ensemble des feuilles sélectionnées dans Ar, se forme. Si à contrario, j'écris Sheets(Array("conso cpte résultat", "BL produit)).Select , cela fonctionne aussi, la macro sélectionne bien les deux feuilles nommées
Par contre, cela ne fonctionne pas tel qu'écrit dans le code ci dessous. Ou plutôt le PDF se crée, mais seulement avec la feuille conso cpte résultat.

Je n'arrive pas à comprendre pourquoi ça ne fonctionne pas


VB:
Sub pdf()

Dim chemin As String
Dim sNomFichierPDF As String
Dim nom As String
Dim Cpt As Integer
Dim Ws As Worksheet
Dim J As Long
Dim Ar() As String

nom = ActiveWorkbook.Name
sNomFichierPDF = ThisWorkbook.Path & "\" & nom

Cpt = 0

For J = 3 To Sheets("Paramétrage").Range("A" & Rows.Count).End(xlUp).Row

' Boucle sur les feuilles du classeur
For Each Ws In Worksheets
'Elimination de la feuille une considérée comme interface ici
If Ws.Name = Sheets("Paramétrage").Range("A" & J) Then
Ws.Select
If Ws.Cells(529, 12) <> 0 Then
ReDim Preserve Ar(Cpt)
Ar(Cpt) = Sheets("Paramétrage").Range("A" & J).Value
Cpt = Cpt + 1
End If
End If
Next Ws
Next J

Sheets(Array("conso cpte résultat", Ar)).Select
                                                                                                                               
ActiveSheet.ExportAsFixedFormat Type:=xlTypePDF, Filename:= _
    sNomFichierPDF & ".pdf", Quality:= _
    xlQualityStandard, IncludeDocProperties:=True, IgnorePrintAreas:=False, _
    OpenAfterPublish:=False
   
End Sub


Merci pour votre aide :)
 

gillmo

XLDnaute Occasionnel
Bonjour Bruno,

En effet, ce serait peut être plus simple, mais la feuille ne fait pas partie de la liste des feuilles présentes dans l'onglet paramétrage, il faudrait que je l'ajoute au tableau d'une autre façon.
J'aimerai comprendre surtout pourquoi via le array de ma macro, il n'arrive pas à ajouter la feuille.
 

BrunoM45

XLDnaute Barbatruc
Re,

Tout simplement parce que
Array(arglist)
L’argument arglist requis est une liste de valeurs séparées par des virgules qui sont attribuées aux éléments du tableau contenu dans la variable Variant. Si aucun argument n’est spécifié, un tableau vide est créé.

Et même ça
VB:
Sheets(Array(Ar)).Select

Ne fonctionnera pas ;)

En revanche en ajoutant à la fin
Code:
ReDim Preserve Ar(Cpt)
Ar(Cpt) = "conso cpte résultat"
Sheets(Ar).Select

Là, ok
 

fanch55

XLDnaute Barbatruc
Bonjour à tous,
Perso, je me serai servi de la puissance du Split :

VB:
Dim Feuilles As Variant
Feuilles = "conso cpte résultat"
For J = 3 To Sheets("Paramétrage").Range("A" & Rows.Count).End(xlUp).Row
    ' Boucle sur les feuilles du classeur
    For Each Ws In Worksheets
        'Elimination de la feuille une considérée comme interface ici
        If Ws.Name = Sheets("Paramétrage").Range("A" & J) Then
            If Ws.Cells(529, 12) <> 0 Then Feuilles = Feuilles & "|" & Ws.Name
        End If
    Next Ws
Next J
Sheets(Split(Feuilles, "|")).Select
Mais c'est au goût de chacun ... 🤗
 

Discussions similaires

Membres actuellement en ligne

Statistiques des forums

Discussions
298 812
Messages
1 971 980
Membres
203 575
dernier inscrit
Melvin Thouvenel