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

VB.NET Discussion :

[VB] - Auto-Remplissage d'un fichier PDF à partir d'un fichier CSV


Sujet :

VB.NET

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Homme Profil pro
    Technicien maintenance
    Inscrit en
    Décembre 2018
    Messages
    42
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : Technicien maintenance
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Décembre 2018
    Messages : 42
    Par défaut [VB] - Auto-Remplissage d'un fichier PDF à partir d'un fichier CSV
    Bonjour,

    J'ai rédiger ce script (à l'aide du tuto en commentaire) qui me permets de compléter un fichier PDF (en 2 pages) automatiquement depuis un fichier CSV contenant potentiellement 500 lignes.

    L'idée c'est d'ouvrir ce document PDF, de le remplir, de l'enregistrer en PDF puis de le fermer et de recommencer jusqu'à atteindre la fin du fichier CSV.

    Comment être sûr que le document ouvert se positionne directement sur la première case de mon document PDF ? De manière plus fiable que par .

    J'ai ensuite une erreur suite au remplissage de mon document. Une fois que la première page est remplie, au moment de passer à la deuxième page, le script m'efface la moitié des champs qu'il venait juste de remplir et il ne passe pas à la deuxième page de mon document, j'ai l'impression qu'il rempli de nouveau la première page.

    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
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    112
    113
    114
    115
    Option Explicit
    'Tuto https://www.youtube.com/watch?v=7pjJZNRpZc8&t
    'Action pour ouvrir le fichier PDF à remplir
    Private Sub CommandButtonStart_Click()
        Dim filePath As String
        filePath = "G:\Poubelle\Publipost.pdf"
     
        'On parcours le fichier excel à la recherche des données de chaque colonne
        Dim lastrow As Integer
        lastrow = Sheets(1).Range("b9999").End(xlUp).Row
     
        'Boucle de recherche des données de chaque ligne
        Dim line As Integer
     
        'On commence à la ligne 2 pour ne pas prendre en compte les entêtes pendant le remplissage du PDF
        For line = 2 To lastrow
            CreateObject("Shell.application").Open (filePath)
            'Délai d'attente avant de commencer à faire les TAB
            Application.Wait Now + 0.00003
     
            'Nombre de tabulations à faire avant d'arriver au premier champ remplissable du PDF lorsqu'on l'ouvre dans Google Chrome
            fieldTab 1
     
            'Pour afficher les vraies informations de la ligne du fichier excel et non pas SampleLastName ou SampleStreet comme dans l'exemple
            With Sheets(1)
    			'SET ANNÉE SCOLAIRE DÉBUT
                setInfo "2022"
                'SET ANNÉE SCOLAIRE FIN
                setInfo "2023"
                'SET PHOTO D'IDENTITÉ
                Application.SendKeys "{TAB}", True
     
    			' *** ÉLÈVE ***
                            'SET SEXE M ou F ?
                            'setInfo .Range("a" & line).Value
                            If UCase(.Range("a" & line).Value) = "M" Then
                                Application.SendKeys "x", True
                            ElseIf UCase(.Range("a" & line).Value) = "F" Then
                               Application.SendKeys "{RIGHT}", True
                               Application.SendKeys "x", True
                            End If
    			'SET NOM DE FAMILLE
    			setInfo .Range("b" & line).Value
    			'SET PRÉNOM 1
    			setInfo .Range("c" & line).Value
    			'SET PRÉNOM 2
    			setInfo .Range("d" & line).Value
    			'SET PRÉNOM 3
    			setInfo .Range("e" & line).Value
    			'SET FORMATION MEF / SPECIALITE
                Application.SendKeys "{TAB}", True
    			'SET CLASSE / DIVISION
                Application.SendKeys "{TAB}", True			
    			'SET DATE DE NAISSANCE
    			setInfo .Range("f" & line).Value
    			'SET COMMUNE DE NAISSANCE
    			setInfo .Range("g" & line).Value
    			'SET NATIONALITE
    			setInfo .Range("h" & line).Value
    			'SET CODE DEPARTEMENT DE NAISSANCE
    			setInfo .Range("i" & line).Value
    			'SET PAYS DE NAISSANCE
    			setInfo .Range("j" & line).Value
    			' *** ÉLÈVE ***
     
     
                'On définit le répertoire d'enregistrement du fichier PDF final
                savePDF .Range("c" & line).Value & "_" & .Range("b" & line).Value, "C:\Poubelle\Export\"
            End With
        Next
     
    End Sub
     
    'Pour se positionner sur le premier champ remplissable à l'ouverture du fichier
    Sub fieldTab(amount As Integer)
     
        Dim x As Integer
        For x = 1 To amount
            Application.SendKeys "{TAB}", True
        Next
    End Sub
     
    'Pour remplir automatiquement les champs du PDF
    Sub setInfo(info As String)
        Application.SendKeys info, True
        Application.SendKeys "{TAB}", True
    End Sub
     
    'Pour sauvegarder le fichier PDF rempli
    Sub savePDF(fileName, folder As String)
        'Raccourci pour ouvrir la boîte de dialogue IMPRIMER avec le raccourci ^(p)
        Application.SendKeys "^(p)", True
        'Délai d'attente pour que la fenêtre s'ouvre
        Application.Wait Now + 0.00003
        'Raccourci clavier pour valider l'imprimante (défini par défaut plutôt sur Microsoft PDF)
        Application.SendKeys "~", True
        'Délai d'attente pour que la fenêtre pour enregistrer le PDF s'ouvre
        Application.Wait Now + 0.00003
        'On place le curseur sur le champ nom de fichier avec le raccourci %(n)
        Application.SendKeys "%(n)", True
        'On inscris le nom du fichier que l'on souhaite pour enregistrer le fichier
        Application.SendKeys fileName, True
        'Délai d'attente pour que le nom du fichier soit bien renseigné
        Application.Wait Now + 0.00003
        'On valide l'enregistrement du fichier avec le raccourci %(e)
        Application.SendKeys "%(e)", True
        Application.Wait Now + 0.00003
        'Confirmation en cas de fichier déjà existant
        Application.SendKeys "%(o)"
        'On attends que la fenêtre se ferme
        Application.Wait Now + 0.00003
        'Fermeture de l'onglet sur le navigateur avec le raccourci ^(W)
        Application.SendKeys "^(W)", True
     
    End Sub
    Merci de votre aide à toutes et tous.
    Bonne journée.

  2. #2
    Membre Expert
    Profil pro
    Inscrit en
    Septembre 2010
    Messages
    1 578
    Détails du profil
    Informations personnelles :
    Âge : 46
    Localisation : France

    Informations forums :
    Inscription : Septembre 2010
    Messages : 1 578
    Par défaut
    Toutes les solutions que je trouve passent par des packages 3rd party payantes. Si le document fait 2 pages, alors ça devrait être faisable avec le package GemBox.pdf free https://www.gemboxsoftware.com/pdf/e...ctive-form/502

    A quel endroit se situe la transition entre les 2 pages ? (quel champ?)

  3. #3
    Membre averti
    Homme Profil pro
    Technicien maintenance
    Inscrit en
    Décembre 2018
    Messages
    42
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : Technicien maintenance
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Décembre 2018
    Messages : 42
    Par défaut
    Salut,

    Merci pour cette réponse je vais regarder de ce côté.

    Je n'ai pas mis tout le code dans mon exemple car il est vraiment très long, le saut se trouve environ à la moitie du code car il y a quasiment de champ à remplir sur la 1ere que sur la 2eme page.

    As-tu besoin du code en entier ?

    [EDIT]
    Je viens de tester il faut un fichier de 1mb et le mien fais 4mb, je vais tenter de le réduire sans perdre de champs à remplir.
    [EDIT]

    Bonne journée.

Discussions similaires

  1. [JDBC]ouvrir un fichier pdf à partir d'un blob
    Par souletis dans le forum JDBC
    Réponses: 5
    Dernier message: 25/01/2007, 21h03
  2. [FPDF] Export de PDF à partir d'un fichier PHP
    Par Mat5725 dans le forum Bibliothèques et frameworks
    Réponses: 4
    Dernier message: 05/04/2006, 20h57
  3. [ java.net ] récupérer un fichier PDF à partir d'une URL
    Par nico2280 dans le forum Entrée/Sortie
    Réponses: 7
    Dernier message: 10/11/2005, 11h09
  4. Réponses: 9
    Dernier message: 20/06/2005, 16h47
  5. Réponses: 11
    Dernier message: 04/08/2003, 15h30

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