Ceci est une page optimisée pour les mobiles. Cliquez sur ce texte pour afficher la vraie page.

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.
 
C

Compte Supprimé 979

Guest
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

Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…