Générer des fichiers pdf à imprimer à partir d'une liste déroulante

Bonjour

Je fais appel à vos lumières car je suis novice dans les usages d'excel.

J'ai un fichier Excel et différentes données qui sont relatives à un individu.

Lorsque je choisis un individu j'obtiens différentes valeurs dans un onglet que je souhaiterais imprimer.

Le souci est que je ne souhaite pas effectuer pour chaque individu la manipulation et je préfèrerais avoir une automatisation du processus afin de générer pour chaque individu un fichier pdf. Ces fichiers seraient rassembler dans un dossier.

Ou sinon un seul fichier pdf de l'ensemble des individus.

Pensez vous que ce soit réalisable?

Je joins également mon fichier Excel.

La feuille "Fiche individu" me permet de rassembler différentes données et de les croiser.

La feuille "à imprimer" serait la mise en forme finale que je souhaite générer pour chaque individu.

J'espère que j'ai été suffisamment clair.

Merci pour votre aide.

34grille-test.xlsx (77.18 Ko)

bonjour,

une proposition pour l'automatisation de la génération des fichiers PDF via une macro vba. Vérifie tes formules de ta fiche individu, elles ne me semblent pas correctes.

Sub aargh()
    Dim wsi As Worksheet
    Dim wsc As Worksheet
    Dim wsf As Worksheet
    Dim i&, dlc&, chemin$
    Set wsc = Sheets("liste classe")
    Set wsf = Sheets("fiche individu")
    Set wsi = Sheets("A imprimer")
    dlc = wsc.Cells(Rows.Count, 1).End(xlUp).Row
    chemin = "d:\downloads\" 'à adapter: répertoire où mettre les fichiers PDF
    For i = 3 To dlc
        wsf.Range("B1").Value = wsc.Cells(i, 3).Value
        wsi.ExportAsFixedFormat Type:=xlTypePDF, Filename:= _
        chemin & wsf.Range("B1").Value & ".pdf", Quality:=xlQualityStandard, _
        IncludeDocProperties:=True, IgnorePrintAreas:=False, OpenAfterPublish:= _
        False
    Next i
End Sub

edit suppression d'instructions inutiles

Merci pour la réponse et la solution.

Je vais regarder tout ça.

Ça fait un moment que je n'ai pas fait de macro, va falloir que je replonge le nez dedans!

Merci beaucoup

J'ai essayé de lancer le code fourni mais j'ai eu droit à un message d'erreur.

J'ai lancé le débogueur et voilà ce qu'il m'affiche.

Est ce que j'ai fait une erreur?

Merci pour la réponse...

image 23 08 2024 a 16 32

bonjour,

vérifie ton chemin, il doit se terminer par un séparateur de fichier / ou \

J'ai modifié la fin du chemin d'accès mais rien y fait...

image 24 08 2024 a 17 32

Bonjour et

Et merci d'oublier un peu le bouton image... (Qui nécessite un espace de stockage bien inutile et couteux pour le forum)

Il y a un autre bouton </> qui permet de coller du code VBA de manière pratique (voir la réponse de H2SO4

A+

Bonjour le forum et vous tous ,

Essaie comme ci-dessous
\Users\renaud\Desktop\

Bonne soirée

bonjour,

peux-tu indiquer ta version (je pense que tu es sur Mac et non Windows) ?

vérifie que le chemin que tu as indiqué existe bien et qu'il est bien valide sur Mac.

Voici ma version Excel 16.16.27 (201012) effectivement pour Mac .

J'ai modifié le chemin d'accès. J'en ai même mis un autre et j'ai toujours le même message d'erreur qui apparait.

Bonjour,

désolé, je pense que le problème vient bien d'un nom de fichier/répertoire incorrect sur Mac. Peut-être un membre du Forum ayant une expertise Mac pourra-t-il t'aider ?

Bonjour

H2So4 m'a contacté en me demandant de regarder votre demande.
Il est normal que cela ne fonctionne pas sur MAC de cette manière. Il faut s'y prendre autrement.

Pouvez-vous me donner le code en cliquant sur l'icone </> dans la barre de menu et en collant le code dans la fenêtre car une image n'aide pas trop ....

Aussi corrigez votre profil de compte en précisant que vous être sur MAC. Là on voit 2019... Si vous êtes aussi sur Excel 2016, mentionnez ceci en plus --> MAC 2016

Bonjour

Voici le code que j'ai utilisé.

J'ai changé le chemin d'accès en mettant celui de ma clé USB: l'erreur est identique.

merci pour votre aide

Sub aargh()
    Dim wsi As Worksheet
    Dim wsc As Worksheet
    Dim wsf As Worksheet
    Dim i&, dlc&, chemin$
    Set wsc = Sheets("liste classe")
    Set wsf = Sheets("fiche individu")
    Set wsi = Sheets("A imprimer")
    dlc = wsc.Cells(Rows.Count, 1).End(xlUp).Row
    chemin = "/Volumes/CLE RENAUD/Enseignement/2023-2024/Partage/Test/" 'à adapter: répertoire où mettre les fichiers PDF
    For i = 3 To dlc
        wsf.Range("B1").Value = wsc.Cells(i, 3).Value
        On Error Resume Next
        Kill chemin & wsi.Range("B1").Value & ".pdf" 'supprimer le fichier pdf si il existe déjà
        On Error GoTo 0
        wsi.ExportAsFixedFormat Type:=xlTypePDF, FileName:= _
        chemin & wsf.Range("B1").Value & ".pdf", Quality:=xlQualityStandard, _
        IncludeDocProperties:=True, IgnorePrintAreas:=False, OpenAfterPublish:= _
        True
    Next i
End Sub

Bonjour,

Si je comprends vous travaillez depuis une clé USB ou le fichier se trouve sur votre MAC ?

1. Il me faudrait connaitre votre nom d'utilisateur

2. Ensuite vérifiez aussi ceci :

Lorsque vous êtes sur le Finder,
- Allez dans le menu ALLER (ou GO)
- Appuyez sur la touche ALT
- Cliquez sur "Bibliothèque"
- Vérifiez que vous avez bien un dossier appelé "Group Containers" puis le dossier "UBF8T346G9.Office"

Vous devriez en principe voir aussi ce lien -> /Users/votre nom/Library/Group Containers/UBF8T346G9.Office

J'ai modifié l'emplacement du fichier. Je l'ai mis sur le bureau.

Idem pour le chemin d'accès.

Mon nom d'utilisateur est: Renaud

Concernant le dossier, il est bien présent avec le chemin indiqué dans le message

Sub aargh()
    Dim wsi As Worksheet
    Dim wsc As Worksheet
    Dim wsf As Worksheet
    Dim i&, dlc&, chemin$
    Set wsc = Sheets("liste classe")
    Set wsf = Sheets("fiche individu")
    Set wsi = Sheets("A imprimer")
    dlc = wsc.Cells(Rows.Count, 1).End(xlUp).Row
    chemin = "/Users/renaud/Desktop/" 'à adapter: répertoire où mettre les fichiers PDF
    For i = 3 To dlc
        wsf.Range("B1").Value = wsc.Cells(i, 3).Value
        On Error Resume Next
        Kill chemin & wsi.Range("B1").Value & ".pdf" 'supprimer le fichier pdf si il existe déjà
        On Error GoTo 0
        wsi.ExportAsFixedFormat Type:=xlTypePDF, FileName:= _
        chemin & wsf.Range("B1").Value & ".pdf", Quality:=xlQualityStandard, _
        IncludeDocProperties:=True, IgnorePrintAreas:=False, OpenAfterPublish:= _
        True
    Next i
End Sub

Re

Merci pour votre nom utilisateur
Par contre quid du point 2 ?

J'ai effectivement le dossier précisé avec le chemin

/Users/votre nom/Library/Group Containers/UBF8T346G9.Office

Merci des infos

Essayez votre code comme ceci

Sub aargh()
Dim wsi As Worksheet, wsc As Worksheet, wsf As Worksheet
Dim i As Integer, dlc As Integer
Dim chemin As String
Dim fichiertemp As String, fichierFinal As String

Set wsc = Sheets("liste classe")
Set wsf = Sheets("fiche individu")
Set wsi = Sheets("A imprimer")

dlc = wsc.Cells(Rows.Count, 1).End(xlUp).Row
    chemin = "/Users/renaud/Desktop/" 'à adapter: répertoire où mettre les fichiers PDF
    For i = 3 To dlc
        wsf.Range("B1").Value = wsc.Cells(i, 3).Value
        On Error Resume Next
        Kill chemin & wsi.Range("B1").Value & ".pdf" 'supprimer le fichier pdf si il existe déjà
        On Error GoTo 0

        'créer un fichier PDF temporaire
        fichiertemp = "/Users/renaud/Library/Group Containers/UBF8T346G9.Office/" & wsf.Range("B1").Value & ".pdf"
        wsi.ExportAsFixedFormat Type:=xlTypePDF, Filename:=fichiertemp, _
            Quality:=xlQualityStandard, IncludeDocProperties:=True, IgnorePrintAreas:=False', OpenAfterPublish:= True

        'Copie fichier sur le bureau
        fichierFinal = chemin & wsf.Range("B1").Value & ".pdf"
        FileCopy fichiertemp, fichierFinal

        'Supprimer fichier temporaire
        Kill fichiertemp

    Next i
End Sub

Si ok et terminé pensez à cloturer le fil

Cordialement

Super ça marche!!

J'aurai également 2 autres petits soucis.

1er souci:

J'ai mes formules qui ne fonctionnent pas, je ne suis pas sûr de m'y prendre correctement.

Dans la feuille fiche individu selon l'activité choisie en C7, je souhaiterais voir s'afficher en F4 le positionnement qui se trouve en face de chaque élève dans la colonne AU de chaque activité.

2ème souci:

Afin de générer les fichiers PDF je souhaiterais avoir simplement un bouton pour exécuter la macro sur la fiche à imprimer

Merci pour votre aide

Parfait !


Voici déjà pour le point 2
- Allez dans l'outil developpeur
- cliquez sur l"icone "Insérer"
- Dans "Formulaire", choisissez "Bouton" puis dessinez le sur votre feuille

Une fois fait Excel vous ouvrira une fenêtre dans laquelle vous n'avez qu'à cliquer sur le code pour l'impression

Dites-moi si ok

Je reviens pour le point 1 mais pour vous éviter des longueurs je vous propose de créer deux noms que l'on mettre dans la formule.

Crdlt

Edit : voici pour le point 1

1. va dans le gestionnaire de noms et clique sur Nouveau
2. Dans la rubrique Nom , mettez --> Plage
3. Dans la rubrique "Fait référence à", mettez cette formule --> =INDIRECT("'"&'Fiche individu'!$C$7&"'!$A$6:$AU$34")
4. Dans la rubrique Nom , mettez --> Nomprenom
5. Dans la rubrique "Fait référence à", mettez cette formule --> =INDIRECT("'"&'Fiche individu'!$C$7&"'!$D$6:$D$34")
6. Dans la feuille Fiche Individu, en F4 mettez cette formule --> =INDEX(Plage;EQUIV(B1;Nomprenom;0);47)

Si vous voyez que cela ne fonctionne pas, retourne dans le gestionnaire de noms et vérifie pour les deux noms Plage et nomprenom, que vous n'avez pas des guillemets en trop dans la rubrique "Fait référence à". On a souvent ce souci quand on crée des formules.

Exemple: j'avais eu ceci --> "=INDIRECT("""'"&'Fiche individu'!$C$7&"'"!$D$6:$D$34")", ce qui est faux évidemment et que excel met tout seul comme un grand
Vous devez absolument vérifier. Donc deux guillemets avant le & et 1 guillemet +1 apostrophe avant le ! et pas de guillemets après le signe = et en fait de formule

Rechercher des sujets similaires à "generer fichiers pdf imprimer partir liste deroulante"