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 :

Exporter en pdf une feuille de calcul dans un dossier existant en ciblant des colonnes et des lignes [XL-2016]


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé
    Homme Profil pro
    Enseignant
    Inscrit en
    Mai 2019
    Messages
    245
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Aube (Champagne Ardenne)

    Informations professionnelles :
    Activité : Enseignant
    Secteur : Enseignement

    Informations forums :
    Inscription : Mai 2019
    Messages : 245
    Par défaut Exporter en pdf une feuille de calcul dans un dossier existant en ciblant des colonnes et des lignes
    Bonsoir!
    J'ai une feuille de calcul à exporter en pdf dans un dossier existant. Cependant j'aimerais bien parvenir à exporter en PDF seulement les colonnes ciblées. J'aimerais aussi ne pas exporter les lignes qui ne contiennent pas la valeur "Examiné(e)". J'ai les colonnes A B C D E F G H I J et je veux seulement exporter en pdf C E F J et les lignes qui contiennent la valeur "Examiné(e)" à la colonne J.

    Pièce jointe 648311

    Merci par avance!
    Images attachées Images attachées  

  2. #2
    Membre Expert
    Inscrit en
    Décembre 2002
    Messages
    993
    Détails du profil
    Informations forums :
    Inscription : Décembre 2002
    Messages : 993
    Par défaut
    Salut, quand je clique sur le lien j'ai "pièce jointe non valide".
    En me basant sur ta capture d'écran, j'utilise un listobject.
    Je pense que c'est aussi faisable avec Power Query mais je ne maîtrise pas, voici donc une macro.

    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
    Sub ExportToPDF()
        Dim tbl As ListObject
        Dim arr() As Variant
        Dim i As Long, j As Long
        Dim newWs As Worksheet
        Dim rng As Range
     
        Set tbl = ThisWorkbook.Sheets("Feuil1").ListObjects("Tableau1") ' Remplacez "Feuil1" et "Tableau1" par le nom de votre feuille de calcul et de votre tableau
     
        ' Copie des données du tableau1 dans un tableau en mémoire
        arr = tbl.Range.Value
     
        ' Nouvelle feuille de calcul
        Set newWs = ThisWorkbook.Sheets.Add
     
        ' Copie des données du tableau en mémoire dans la nouvelle feuille de calcul
        j = 1
        For i = 1 To UBound(arr, 1)
            If i = 1 Or arr(i, 10) <> "Non examiné(e)" Then
                newWs.Cells(j, 1).Value = arr(i, 3)
                newWs.Cells(j, 2).Value = arr(i, 5)
                newWs.Cells(j, 3).Value = arr(i, 6)
                newWs.Cells(j, 4).Value = arr(i, 10)
                j = j + 1
            End If
        Next i
     
        ' Export de la nouvelle feuille de calcul en PDF
        Set rng = newWs.Range(newWs.Cells(1, 1), newWs.Cells(j - 1, 4))
        rng.ExportAsFixedFormat Type:=xlTypePDF, Filename:="C:\temp\export.pdf" ' Remplacez par le chemin de votre choix
     
        ' Supprimez la nouvelle feuille de calcul
        Application.DisplayAlerts = False
        newWs.Delete
        Application.DisplayAlerts = True
     
    End Sub

  3. #3
    Membre éclairé
    Homme Profil pro
    Enseignant
    Inscrit en
    Mai 2019
    Messages
    245
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Aube (Champagne Ardenne)

    Informations professionnelles :
    Activité : Enseignant
    Secteur : Enseignement

    Informations forums :
    Inscription : Mai 2019
    Messages : 245
    Par défaut
    Citation Envoyé par Franc Voir le message
    Salut, quand je clique sur le lien j'ai "pièce jointe non valide".
    En me basant sur ta capture d'écran, j'utilise un listobject.
    Je pense que c'est aussi faisable avec Power Query mais je ne maîtrise pas, voici donc une macro.

    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
    Sub ExportToPDF()
        Dim tbl As ListObject
        Dim arr() As Variant
        Dim i As Long, j As Long
        Dim newWs As Worksheet
        Dim rng As Range
     
        Set tbl = ThisWorkbook.Sheets("Feuil1").ListObjects("Tableau1") ' Remplacez "Feuil1" et "Tableau1" par le nom de votre feuille de calcul et de votre tableau
     
        ' Copie des données du tableau1 dans un tableau en mémoire
        arr = tbl.Range.Value
     
        ' Nouvelle feuille de calcul
        Set newWs = ThisWorkbook.Sheets.Add
     
        ' Copie des données du tableau en mémoire dans la nouvelle feuille de calcul
        j = 1
        For i = 1 To UBound(arr, 1)
            If i = 1 Or arr(i, 10) <> "Non examiné(e)" Then
                newWs.Cells(j, 1).Value = arr(i, 3)
                newWs.Cells(j, 2).Value = arr(i, 5)
                newWs.Cells(j, 3).Value = arr(i, 6)
                newWs.Cells(j, 4).Value = arr(i, 10)
                j = j + 1
            End If
        Next i
     
        ' Export de la nouvelle feuille de calcul en PDF
        Set rng = newWs.Range(newWs.Cells(1, 1), newWs.Cells(j - 1, 4))
        rng.ExportAsFixedFormat Type:=xlTypePDF, Filename:="C:\temp\export.pdf" ' Remplacez par le chemin de votre choix
     
        ' Supprimez la nouvelle feuille de calcul
        Application.DisplayAlerts = False
        newWs.Delete
        Application.DisplayAlerts = True
     
    End Sub
    Bonsoir
    Une réussite. Merci
    Au premier essai, les lignes avec la valeur "Non examiné(e )" n'étaient pas éliminées. Mais c'était du seulement à l'absence d'espace entre la deuxième parenthèse et le dernier "e" de "Non Examiné(e )". C'est "Non Examiné(e )" .

    Maintenant j'aimerais bien rendre ce tableau pdf plus présentable en agissant sur les colonnes et surtout l'entête. J'aimerais bien avoir un tableau quadrillé avec une entête en couleur.

  4. #4
    Membre Expert
    Inscrit en
    Décembre 2002
    Messages
    993
    Détails du profil
    Informations forums :
    Inscription : Décembre 2002
    Messages : 993
    Par défaut
    Voilà, adapte en fonction de tes besoins.

    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
    49
    50
    51
    52
    53
    54
    55
    Sub ExportToPDF()
        Dim tbl As ListObject
        Dim arr() As Variant
        Dim i As Long, j As Long
        Dim newWs As Worksheet
        Dim rng As Range
     
        Set tbl = ThisWorkbook.Sheets("Feuil1").ListObjects("Tableau1") ' Remplacez "Feuil1" et "Tableau1" par le nom de votre feuille de calcul et de votre tableau
     
        ' Copie des données du tableau dans un tableau en mémoire
        arr = tbl.Range.Value
     
        ' Nouvelle feuille de calcul
        Set newWs = ThisWorkbook.Sheets.Add
     
        ' Copie des données du tableau en mémoire dans la nouvelle feuille de calcul
        j = 1
        For i = 1 To UBound(arr, 1)
            If i = 1 Or arr(i, 10) <> "Non examiné(e)" Then
                newWs.Cells(j, 1).Value = arr(i, 3)
                newWs.Cells(j, 2).Value = arr(i, 5)
                newWs.Cells(j, 3).Value = arr(i, 6)
                newWs.Cells(j, 4).Value = arr(i, 10)
                j = j + 1
            End If
        Next i
        With newWs
            ' Définissez la largeur des colonnes
            .Columns(1).ColumnWidth = 15
            .Columns(2).ColumnWidth = 12
            .Columns(3).ColumnWidth = 4
            .Columns(4).ColumnWidth = 10
     
            ' Alignez le texte des colonnes à gauche
            .Columns("A:D").HorizontalAlignment = xlLeft
     
            ' Ajoutez un quadrillage
            .Range(newWs.Cells(1, 1), newWs.Cells(j - 1, 4)).Borders.LineStyle = xlContinuous
     
            ' Coloriez la ligne d'en-têtes
            .Range(newWs.Cells(1, 1), newWs.Cells(1, 4)).Interior.Color = RGB(173, 216, 230) ' Remplacez les valeurs RGB par celles de votre choix
        End With
     
        ' Exportez la nouvelle feuille de calcul en PDF
        Set rng = newWs.Range(newWs.Cells(1, 1), newWs.Cells(j - 1, 4))
        rng.ExportAsFixedFormat Type:=xlTypePDF, Filename:="C:\temp\export.pdf" ' Remplacez "C:\temp\export.pdf" par le chemin de votre choix
     
        ' Supprimez la nouvelle feuille de calcul
        Application.DisplayAlerts = False
        newWs.Delete
        Application.DisplayAlerts = True
     
        MsgBox "Traitement terminé!", vbInformation
     
    End Sub

  5. #5
    Membre éclairé
    Homme Profil pro
    Enseignant
    Inscrit en
    Mai 2019
    Messages
    245
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Aube (Champagne Ardenne)

    Informations professionnelles :
    Activité : Enseignant
    Secteur : Enseignement

    Informations forums :
    Inscription : Mai 2019
    Messages : 245
    Par défaut
    Citation Envoyé par Franc Voir le message
    Voilà, adapte en fonction de tes besoins.

    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
    49
    50
    51
    52
    53
    54
    55
    Sub ExportToPDF()
        Dim tbl As ListObject
        Dim arr() As Variant
        Dim i As Long, j As Long
        Dim newWs As Worksheet
        Dim rng As Range
     
        Set tbl = ThisWorkbook.Sheets("Feuil1").ListObjects("Tableau1") ' Remplacez "Feuil1" et "Tableau1" par le nom de votre feuille de calcul et de votre tableau
     
        ' Copie des données du tableau dans un tableau en mémoire
        arr = tbl.Range.Value
     
        ' Nouvelle feuille de calcul
        Set newWs = ThisWorkbook.Sheets.Add
     
        ' Copie des données du tableau en mémoire dans la nouvelle feuille de calcul
        j = 1
        For i = 1 To UBound(arr, 1)
            If i = 1 Or arr(i, 10) <> "Non examiné(e)" Then
                newWs.Cells(j, 1).Value = arr(i, 3)
                newWs.Cells(j, 2).Value = arr(i, 5)
                newWs.Cells(j, 3).Value = arr(i, 6)
                newWs.Cells(j, 4).Value = arr(i, 10)
                j = j + 1
            End If
        Next i
        With newWs
            ' Définissez la largeur des colonnes
            .Columns(1).ColumnWidth = 15
            .Columns(2).ColumnWidth = 12
            .Columns(3).ColumnWidth = 4
            .Columns(4).ColumnWidth = 10
     
            ' Alignez le texte des colonnes à gauche
            .Columns("A:D").HorizontalAlignment = xlLeft
     
            ' Ajoutez un quadrillage
            .Range(newWs.Cells(1, 1), newWs.Cells(j - 1, 4)).Borders.LineStyle = xlContinuous
     
            ' Coloriez la ligne d'en-têtes
            .Range(newWs.Cells(1, 1), newWs.Cells(1, 4)).Interior.Color = RGB(173, 216, 230) ' Remplacez les valeurs RGB par celles de votre choix
        End With
     
        ' Exportez la nouvelle feuille de calcul en PDF
        Set rng = newWs.Range(newWs.Cells(1, 1), newWs.Cells(j - 1, 4))
        rng.ExportAsFixedFormat Type:=xlTypePDF, Filename:="C:\temp\export.pdf" ' Remplacez "C:\temp\export.pdf" par le chemin de votre choix
     
        ' Supprimez la nouvelle feuille de calcul
        Application.DisplayAlerts = False
        newWs.Delete
        Application.DisplayAlerts = True
     
        MsgBox "Traitement terminé!", vbInformation
     
    End Sub
    Le code fonctionne à merveille. Merci.
    Une dernière chose: Comment s'y prendre pour avoir un titre du genre "Liste des examinés" au dessus du tableau PDF?

  6. #6
    Membre Expert
    Inscrit en
    Décembre 2002
    Messages
    993
    Détails du profil
    Informations forums :
    Inscription : Décembre 2002
    Messages : 993
    Par défaut
    Modifie cette portion de code:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
        ' Créez une nouvelle feuille de calcul
        Set newWs = ThisWorkbook.Sheets.Add
     
        ' Ajoutez un titre
        With newWs
           .Cells(1, 1).Value = "Liste des examinés"
           .Cells(1, 1).Font.Bold = True
           .Cells(1, 1).Font.Size = 14
        End With
     
        ' Copiez les données du tableau en mémoire dans la nouvelle feuille de calcul
        j = 3 ' Commencez à la ligne 3 pour laisser de la place pour le titre

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

Discussions similaires

  1. [XL-2013] Afficher la selection d'une feuille de calcul dans un userform
    Par zoneech dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 27/11/2014, 15h27
  2. Résultat d'une feuille de calcule dans un popup
    Par DJjoemax dans le forum Général JavaScript
    Réponses: 0
    Dernier message: 06/04/2014, 20h41
  3. [XL-2003] Certaines colonnes d'une feuille de calcul dans un userform
    Par Rogeure dans le forum Macros et VBA Excel
    Réponses: 3
    Dernier message: 22/08/2013, 18h36
  4. Réponses: 4
    Dernier message: 15/02/2013, 04h31
  5. Une feuille de calcul dans une page web?
    Par skandhal dans le forum Général JavaScript
    Réponses: 2
    Dernier message: 21/01/2011, 11h56

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