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 :

Créer un dossier et y importer des fichiers en PDF [XL-365]


Sujet :

Macros et VBA Excel

  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 Créer un dossier et y importer des fichiers en PDF
    Bonjour,
    Nous avons l'idée de créer une application en vba excel qui nous permettra d'exporter en pdf les bulletins des élèves dans des dossiers. Pour cela nous avons une feuille intitulée BULL_34 dans laquelle sont affichées les notes selon les critères classe (cellule M2) et élève cellule(M5) de la même feuille.
    Pour chaque classe nous avons un onglet qui porte son nom mais avec le même modèle de tableau(mêmes entêtes et même nombre de colonnes).
    L'idée est de créer une boucle qui nous permettra d'exporter en PDF et stocker dans un dossier tous les bulletins de la classe sélectionnée dans la cellule M2 de la feuille BUL_34. C'est ici que réside mon problème. Sinon les autres étapes sont déjà franchies: affichage des notes selon la classe et l'élève et création de dossier. Le souci est qu'après tout cela, quand je clique sur le bouton Exporter en PDF et que j'ouvre le dossier créé je ne trouve aucun fichier.

    Je joins deux captures et le code. Cela permettra peut être d'y voir un peu plus clair.

    Merci par avance

    djibysadji

    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 CreerPDF()
    Dim ligne As Integer
    Dim derligne As Integer
    Dim ws As Worksheet
    Dim Dossier
    Dim fc As Worksheet
     
    Set fc = ActiveSheet
     
    Dossier = Application.InputBox("Création de PDF", "Exportation en PDF...", "Bulletin")
    CheminDossier = ThisWorkbook.Path & "\" & Dossier & "\"
     
    On Error Resume Next
    If Dossier = True Then
    GetAttr (CheminDossier) And vbDirectory
    Else
    MkDir (CheminDossier)
     
    End If
    'derligne = ws.Range("A150").End(xlUp).Row
    derligne = ws.Cells(Rows.Count, 1).End(xlUp)
    For Each ws In Sheets
    If ws.Name = Sheets("BULL_34").Range("M2").Value Then
     
    For ligne = 5 To derligne
    Sheets("BULL_34").Range("M5").Value = ws.Cells(ligne, 1)
    fc.ExportAsFixedFormat xlTypePDF, CheminDossier & Sheets("BULL_34").Range("M2").Value & _
    Sheets("BULL_34").Range("M5").Value, xlqualtyStandard, True, False, _
    1, 1, False
     
    Next
    End If
    Next
     
     
     
    End Sub
    Nom : Bulletin.PNG
Affichages : 244
Taille : 96,7 Ko
    Nom : base.PNG
Affichages : 237
Taille : 40,4 Ko

  2. #2
    Membre chevronné
    Homme Profil pro
    Formateur bureautique
    Inscrit en
    Janvier 2021
    Messages
    297
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Formateur bureautique
    Secteur : Enseignement

    Informations forums :
    Inscription : Janvier 2021
    Messages : 297
    Par défaut Aide
    Bonjour

    je propose le code suivant

    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
    Sub PDF_Classe()
     
        'je prépare mes éléments
     
        Dim Mon_Dossier_Export As String
        Mon_Dossier_Export = Range("Dossier_Enreg").Value & "\"
     
        Dim Mon_Dossier_Année As String
        Mon_Dossier_Année = Range("Année_Bulletin").Value & "\"
     
        Dim Mon_Dossier_Classe As String
        Mon_Dossier_Classe = Range("Classe_Bulletin").Value & "\"
     
        Dim Mon_Chemin_Complet As String
        Mon_Chemin_Complet = Mon_Dossier_Export & Mon_Dossier_Année & Mon_Dossier_Classe
     
        '_______
        
        Dim Mon_Semestre As String
        Mon_Semestre = Range("Semestre_Bulletin").Value
     
     
        '_______Boucle pour sortir tous les élèves de la classe sur le semestre de l'année
     
            For Each cell In Range("TBL_Eleves[N°]")
     
                If Application.VLookup(cell, Range("TBL_Eleves"), 2, False) = Range("Classe_Bulletin").Value Then 'le 2 est à régler selon la colonne de la base de données où il y a la classe
                    Range("Code_Eleve").Value = cell.Value
     
                    'Export PDF
                        Dim Nom_PDF As String 'le nom du fichier exporté en PDF sera, ici, du type nom eleve, classe, annee, semestre
                        Nom_PDF = Range("NOM_ELEVE").Value & " - " & Range("Classe_Bulletin").Value & " (" & Range("Année_Bulletin").Value & " - semestre " & Mon_Semestre & ")"
     
                        ActiveSheet.ExportAsFixedFormat Type:=xlTypePDF, Filename:=Mon_Chemin_Complet & Nom_PDF & ".pdf", _
                        Quality:=xlQualityStandard, IncludeDocProperties:=True, IgnorePrintAreas:=False, OpenAfterPublish:=False
                End If
     
            Next cell
     
    MsgBox "terminé"
     
    End Sub
    Je n'ai pas fait le code pour la création/vérification de dossier + gestion erreur

    Je vous joins le fichier
    Du coup il vous faudrait créer un dossier avec le fichier + sous dossier année 2024 + sous dossier pour les classes (ici 1A, 1B + 2A à 2C)

    Normalement avec ca vous devriez pouvoir vous en sortir
    Fichiers attachés Fichiers attachés

  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 Fab_de_chez_PERFORM Voir le message
    Bonjour

    je propose le code suivant

    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
    Sub PDF_Classe()
     
        'je prépare mes éléments
     
        Dim Mon_Dossier_Export As String
        Mon_Dossier_Export = Range("Dossier_Enreg").Value & "\"
     
        Dim Mon_Dossier_Année As String
        Mon_Dossier_Année = Range("Année_Bulletin").Value & "\"
     
        Dim Mon_Dossier_Classe As String
        Mon_Dossier_Classe = Range("Classe_Bulletin").Value & "\"
     
        Dim Mon_Chemin_Complet As String
        Mon_Chemin_Complet = Mon_Dossier_Export & Mon_Dossier_Année & Mon_Dossier_Classe
     
        '_______
        
        Dim Mon_Semestre As String
        Mon_Semestre = Range("Semestre_Bulletin").Value
     
     
        '_______Boucle pour sortir tous les élèves de la classe sur le semestre de l'année
     
            For Each cell In Range("TBL_Eleves[N°]")
     
                If Application.VLookup(cell, Range("TBL_Eleves"), 2, False) = Range("Classe_Bulletin").Value Then 'le 2 est à régler selon la colonne de la base de données où il y a la classe
                    Range("Code_Eleve").Value = cell.Value
     
                    'Export PDF
                        Dim Nom_PDF As String 'le nom du fichier exporté en PDF sera, ici, du type nom eleve, classe, annee, semestre
                        Nom_PDF = Range("NOM_ELEVE").Value & " - " & Range("Classe_Bulletin").Value & " (" & Range("Année_Bulletin").Value & " - semestre " & Mon_Semestre & ")"
     
                        ActiveSheet.ExportAsFixedFormat Type:=xlTypePDF, Filename:=Mon_Chemin_Complet & Nom_PDF & ".pdf", _
                        Quality:=xlQualityStandard, IncludeDocProperties:=True, IgnorePrintAreas:=False, OpenAfterPublish:=False
                End If
     
            Next cell
     
    MsgBox "terminé"
     
    End Sub
    Je n'ai pas fait le code pour la création/vérification de dossier + gestion erreur

    Je vous joins le fichier
    Du coup il vous faudrait créer un dossier avec le fichier + sous dossier année 2024 + sous dossier pour les classes (ici 1A, 1B + 2A à 2C)

    Normalement avec ca vous devriez pouvoir vous en sortir

    Merci pour cette solution même si elle est différente de ce que je propose: pour les classes, j'ai des onglets séparés alors que vous proposez toutes les classes dans un même onglet. Je vais l'essayer quand même, cela peut être une voie de sortie.

  4. #4
    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 RE
    Citation Envoyé par Fab_de_chez_PERFORM Voir le message
    Bonjour

    je propose le code suivant

    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
    Sub PDF_Classe()
     
        'je prépare mes éléments
     
        Dim Mon_Dossier_Export As String
        Mon_Dossier_Export = Range("Dossier_Enreg").Value & "\"
     
        Dim Mon_Dossier_Année As String
        Mon_Dossier_Année = Range("Année_Bulletin").Value & "\"
     
        Dim Mon_Dossier_Classe As String
        Mon_Dossier_Classe = Range("Classe_Bulletin").Value & "\"
     
        Dim Mon_Chemin_Complet As String
        Mon_Chemin_Complet = Mon_Dossier_Export & Mon_Dossier_Année & Mon_Dossier_Classe
     
        '_______
        
        Dim Mon_Semestre As String
        Mon_Semestre = Range("Semestre_Bulletin").Value
     
     
        '_______Boucle pour sortir tous les élèves de la classe sur le semestre de l'année
     
            For Each cell In Range("TBL_Eleves[N°]")
     
                If Application.VLookup(cell, Range("TBL_Eleves"), 2, False) = Range("Classe_Bulletin").Value Then 'le 2 est à régler selon la colonne de la base de données où il y a la classe
                    Range("Code_Eleve").Value = cell.Value
     
                    'Export PDF
                        Dim Nom_PDF As String 'le nom du fichier exporté en PDF sera, ici, du type nom eleve, classe, annee, semestre
                        Nom_PDF = Range("NOM_ELEVE").Value & " - " & Range("Classe_Bulletin").Value & " (" & Range("Année_Bulletin").Value & " - semestre " & Mon_Semestre & ")"
     
                        ActiveSheet.ExportAsFixedFormat Type:=xlTypePDF, Filename:=Mon_Chemin_Complet & Nom_PDF & ".pdf", _
                        Quality:=xlQualityStandard, IncludeDocProperties:=True, IgnorePrintAreas:=False, OpenAfterPublish:=False
                End If
     
            Next cell
     
    MsgBox "terminé"
     
    End Sub
    Je n'ai pas fait le code pour la création/vérification de dossier + gestion erreur

    Je vous joins le fichier
    Du coup il vous faudrait créer un dossier avec le fichier + sous dossier année 2024 + sous dossier pour les classes (ici 1A, 1B + 2A à 2C)

    Normalement avec ca vous devriez pouvoir vous en sortir
    Bonsor
    Nous avons essayé votre code mais nous rencontrons l'erreur 1004. Voir capture
    Nom : Erreur1004.PNG
Affichages : 182
Taille : 41,8 Ko
    Nom : ZoneCIBLE.PNG
Affichages : 183
Taille : 45,7 Ko

  5. #5
    Membre Expert
    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    1 438
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Juillet 2006
    Messages : 1 438
    Par défaut
    Salut,

    Normal que ca plante,

    Le code de création de dossier n'a pas été livré.
    et sur ce sujet, il suffit de faire une recherche sur le forum, il a déjà été abordé maintes fois:
    https://www.developpez.net/forums/d1.../#post12019525

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

Discussions similaires

  1. Dossier vide avec des fichiers
    Par CliffeCSTL dans le forum Windows 7
    Réponses: 8
    Dernier message: 20/05/2013, 10h04
  2. Créer un dossier où stocker des fichiers XML
    Par bensaidolfa dans le forum Format d'échange (XML, JSON...)
    Réponses: 2
    Dernier message: 16/10/2009, 15h12
  3. Accéder à des fichiers externes (PDF, doc) dans une application J2EE
    Par JCF81 dans le forum Développement Web en Java
    Réponses: 2
    Dernier message: 11/03/2009, 17h09
  4. Selection dossier avec visu des fichiers
    Par tAKAmAkA dans le forum IHM
    Réponses: 1
    Dernier message: 30/11/2008, 18h00
  5. [QuickReport 3.5] Sauvegarder des fichiers en PDF
    Par krilas dans le forum QuickReport
    Réponses: 3
    Dernier message: 14/09/2008, 14h57

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