IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Macros et VBA Excel Discussion :

Macro sélection feuille si cellule non vide puis exportation en pdf [XL-2013]


Sujet :

Macros et VBA Excel

  1. #1
    Membre à l'essai
    Femme Profil pro
    Responsable sécurité
    Inscrit en
    Mai 2017
    Messages
    25
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 45
    Localisation : France, Pas de Calais (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Responsable sécurité
    Secteur : Conseil

    Informations forums :
    Inscription : Mai 2017
    Messages : 25
    Points : 20
    Points
    20
    Par défaut Macro sélection feuille si cellule non vide puis exportation en pdf
    Bonjour,

    J'arrive à exporter des feuilles sélectionnées en pdf. Cependant, lorsque certaines feuilles n'ont pas de nécessité à être exporter elles le sont tout de même (normal vu que je les sélectionne).

    Je souhaiterai donc que la sélection des feuilles à exporter en pdf se réalise en fonction du contenu de la cellule A1 de chaque feuille "Entête PV", "Pesées RI", "Pesées RI", "Pesées FI", "Filtres", "Absorption 1", "Absorption 2", "Rinçages" (si A1 est vide alors je ne sélectionne pas cette feuille).

    Voici le bout de code :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    Sub CreerPDF()
        Dim sRep As String
        Dim sFilename As String
     
        Sheets(Array("Entête PV", "Pesées RI", "Pesées RI", "Pesées FI", "Filtres", "Absorption 1", "Absorption 2", "Rinçages")).Select
        sRep = ThisWorkbook.Path
        sFilename = ThisWorkbook.Name
        sFilename = Left(sFilename, InStr(1, sFilename, ".")) & "pdf"
     
        ActiveSheet.ExportAsFixedFormat _
                Type:=xlTypePDF, _
                Filename:=sRep & sFilename, _
                Quality:=xlQualityStandard, _
                IncludeDocProperties:=True, _
                IgnorePrintAreas:=False, _
                OpenAfterPublish:=True
    End Sub
    Pouvez-vous m'aider ou me mettre sur la voie ?

    bien à vous,

    Paolino

  2. #2
    Expert éminent sénior
    Avatar de kiki29
    Homme Profil pro
    ex Observeur CGG / Analyste prog.
    Inscrit en
    Juin 2006
    Messages
    6 132
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Finistère (Bretagne)

    Informations professionnelles :
    Activité : ex Observeur CGG / Analyste prog.

    Informations forums :
    Inscription : Juin 2006
    Messages : 6 132
    Points : 11 274
    Points
    11 274
    Par défaut
    Salut, voir en bas de ce post 1 Impression de certaines Feuilles d'un classeur via un tableau dans un seul Pdf résultant en l'adaptant à ton contexte.

  3. #3
    Membre à l'essai
    Femme Profil pro
    Responsable sécurité
    Inscrit en
    Mai 2017
    Messages
    25
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 45
    Localisation : France, Pas de Calais (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Responsable sécurité
    Secteur : Conseil

    Informations forums :
    Inscription : Mai 2017
    Messages : 25
    Points : 20
    Points
    20
    Par défaut
    merci kiki29 mais cela fait plus d'1h que je regarde la proposition sur ton lien et que je fais des essais. je ne vois vraiment pas comment l'adapter à ma problématique.

    tu peux ou quelqu'un d'autres peut essayer de m'aider ?

    merci d'avance,

    paolino

  4. #4
    Expert éminent sénior
    Avatar de kiki29
    Homme Profil pro
    ex Observeur CGG / Analyste prog.
    Inscrit en
    Juin 2006
    Messages
    6 132
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Finistère (Bretagne)

    Informations professionnelles :
    Activité : ex Observeur CGG / Analyste prog.

    Informations forums :
    Inscription : Juin 2006
    Messages : 6 132
    Points : 11 274
    Points
    11 274
    Par défaut
    Salut, comme tu peux le constater cela n'a rien de complexe

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    Option Explicit
     
    Sub Tst()
    Dim sNomFichierPDF As String
    Dim i As Long, Cpt As Long
    Dim Ar() As String
    Dim FSO As Object, sNom As String
     
        Set FSO = CreateObject("Scripting.FileSystemObject")
        sNom = FSO.GetBaseName(ThisWorkbook.Name)
        Set FSO = Nothing
     
        sNomFichierPDF = ThisWorkbook.Path & "\" & sNom & ".pdf"
        Cpt = 0
        Erase Ar
        For i = 1 To ThisWorkbook.Sheets.Count
            If Sheets(i).Cells(1, 1) <> "" Then
                ReDim Preserve Ar(Cpt)
                Ar(Cpt) = Sheets(i).Name
                Cpt = Cpt + 1
            End If
        Next i
        If Cpt = 0 Then
            MsgBox "Aucune feuille de sélectionnée !"
            Exit Sub
        End If
     
        Application.ScreenUpdating = False
        Sheets(Ar).Select
     
        ActiveSheet.ExportAsFixedFormat Type:=xlTypePDF, _
                                        Filename:=sNomFichierPDF, _
                                        Quality:=xlQualityStandard, _
                                        IncludeDocProperties:=True, _
                                        IgnorePrintAreas:=False, _
                                        OpenAfterPublish:=False
     
        Feuil1.Select
        Application.ScreenUpdating = True
    End Sub

  5. #5
    Membre à l'essai
    Femme Profil pro
    Responsable sécurité
    Inscrit en
    Mai 2017
    Messages
    25
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 45
    Localisation : France, Pas de Calais (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Responsable sécurité
    Secteur : Conseil

    Informations forums :
    Inscription : Mai 2017
    Messages : 25
    Points : 20
    Points
    20
    Par défaut
    merci kiki29 mais dans mon fichier j'ai 55 feuilles (nombre qui varie avec une autre macro qui les masque) et seul les feuilles nommées ainsi "Entête PV", "Pesées RI", "Pesées RI", "Pesées FI", "Filtres", "Absorption 1", "Absorption 2", "Rinçages" doivent être utilisées par la macro que tu as complété (qui ne fonctionne pas : Sheets(Ar).Select : la méthode sélecte de la classe sheet a échoué : mes feuilles ont toutes un nom différent c'est pour cela que cela ne fonctionne pas??).

    Tu peux modifier ta proposition en sélectionnant uniquement les feuilles : "Entête PV", "Pesées RI", "Pesées RI", "Pesées FI", "Filtres", "Absorption 1", "Absorption 2", "Rinçages" ??

    je t'en serai extrêmement remerciant.

    Merci vraiment beaucoup pour ton aide.

    paolino

  6. #6
    Expert éminent sénior
    Avatar de kiki29
    Homme Profil pro
    ex Observeur CGG / Analyste prog.
    Inscrit en
    Juin 2006
    Messages
    6 132
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Finistère (Bretagne)

    Informations professionnelles :
    Activité : ex Observeur CGG / Analyste prog.

    Informations forums :
    Inscription : Juin 2006
    Messages : 6 132
    Points : 11 274
    Points
    11 274
    Par défaut
    Re, quand tu sauras ce que tu veux, n'étant pas partisan du tout cuit et de l'attentisme, Je verrai plus tard.

  7. #7
    Membre à l'essai
    Femme Profil pro
    Responsable sécurité
    Inscrit en
    Mai 2017
    Messages
    25
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 45
    Localisation : France, Pas de Calais (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Responsable sécurité
    Secteur : Conseil

    Informations forums :
    Inscription : Mai 2017
    Messages : 25
    Points : 20
    Points
    20
    Par défaut
    re kiki29, ma demande dès le départ ne concernait que les feuilles : "Entête PV", "Pesées RI", "Pesées RI", "Pesées FI", "Filtres", "Absorption 1", "Absorption 2", "Rinçages".

    Concernant l"attentisme" (que je peux comprendre que cela énerve...) : j'ai essayé pas mal de chose avant de poster sur ce forum (depuis plusieurs jours et c'est mon premier poste) et je cherche encore de mon coté à partir de ta proposition. Maintenant, je suis très limité VBA.

    En tout cas, merci pour ton aide.

    paolino.

  8. #8
    Expert éminent sénior
    Avatar de kiki29
    Homme Profil pro
    ex Observeur CGG / Analyste prog.
    Inscrit en
    Juin 2006
    Messages
    6 132
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Finistère (Bretagne)

    Informations professionnelles :
    Activité : ex Observeur CGG / Analyste prog.

    Informations forums :
    Inscription : Juin 2006
    Messages : 6 132
    Points : 11 274
    Points
    11 274
    Par défaut
    Re,
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    Option Explicit
     
    Sub Tst()
    Dim sNomFichierPDF As String
    Dim i As Long, j As Long, Cpt As Long
    Dim Ar() As String, Tablo() As Variant
    Dim FSO As Object, sNom As String
     
        Tablo = Array("Entête PV", "Pesées RI", "Pesées RI", "Pesées FI", "Filtres", "Absorption 1", "Absorption 2", "Rinçages")
     
        Set FSO = CreateObject("Scripting.FileSystemObject")
        sNom = FSO.GetBaseName(ThisWorkbook.Name)
        Set FSO = Nothing
     
        sNomFichierPDF = ThisWorkbook.Path & "\" & sNom & ".pdf"
        Cpt = 0
        Erase Ar
        For i = 1 To ThisWorkbook.Sheets.Count
            If Sheets(i).Cells(1, 1) <> "" Then
                For j = LBound(Tablo) To UBound(Tablo)
                    If Sheets(i).Name = Tablo(j) Then
                        ReDim Preserve Ar(Cpt)
                        Ar(Cpt) = Sheets(i).Name
                        Cpt = Cpt + 1
                        Exit For
                    End If
                Next j
            End If
        Next i
     
        If Cpt = 0 Then
            MsgBox "Aucune feuille n'a été sélectionnée !"
            Exit Sub
        End If
     
        Application.ScreenUpdating = False
        Sheets(Ar).Select
     
        ActiveSheet.ExportAsFixedFormat Type:=xlTypePDF, _
                                        Filename:=sNomFichierPDF, _
                                        Quality:=xlQualityStandard, _
                                        IncludeDocProperties:=True, _
                                        IgnorePrintAreas:=False, _
                                        OpenAfterPublish:=False
     
        Feuil1.Select
        Application.ScreenUpdating = True
    End Sub

  9. #9
    Membre à l'essai
    Femme Profil pro
    Responsable sécurité
    Inscrit en
    Mai 2017
    Messages
    25
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 45
    Localisation : France, Pas de Calais (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Responsable sécurité
    Secteur : Conseil

    Informations forums :
    Inscription : Mai 2017
    Messages : 25
    Points : 20
    Points
    20
    Par défaut
    merci beaucoup kiki29.

    je vais étudier ton code pour le comprendre au mieux.

    il fonctionne parfaitement et cela répond complètement à ma demande.

    Bonne fin de journée,

    paolino

+ Répondre à la discussion
Cette discussion est résolue.

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo