Script de génération automatisée de PDF avec Numbers

ReNKaNaaN

Membre confirmé
29 Janvier 2023
13
0
49
Bonjour à toutes et à tous,
nouveau sur ce forum, je recherche une méthode pour automatiser un export de pdf.
Je m’explique : j’ai créé un fichier Numbers avec deux onglets : le premier onglet recueille les informations de facturation sous forme de tableau, le second génère la mise en page d’une facture (pour impression ou export pdf). Le second onglet génère la facture à partir des infos du premier onglet.
Le premier onglet contient autant de lignes que de clients (Exemple : 25 clients = 25 lignes = 25 numéros de client uniques)
Dans l’onglet facture, chaque fois que je change le numéro client, il reformate la facture à la volée en fonction de ce fameux numéro client indiqué dans l’onglet 1 (informations) et ainsi il affiche toutes les données contenues dans les différentes colonnes de ce client (de l’onglet 1).
Ce que j’aimerais faire : Générer un script qui, en un seul clique, balaye un par un l’intégralité des numéros clients contenus dans l’onglet, génère pour chacun de ces clients la facture à la volée et l’exporte en pdf à la volée puis sauvegarde ce pdf dans un dossier.
Ceci afin d’éviter de le faire facturé par facture manuellement.
Est-ce possible ? Quelqu’un a t’il un exemple similaire ?
merci par avance
Renkanaan
 
Bonjour,

Exporter le document à l'écran (ton onglet facture) me paraît assez simple, par contre pour pouvoir écrire le script qui balaye l'onglet 1 (client) et génère la facture il faut avoir les noms des colonnes, des documents, des onglets etc...
avec ces éléments il devrait être possible d'écrire un script.
 
Bonjour,
Je n’ai pas vraiment compris : une facture comporte aussi au moins aussi une prestation et un montant ; où se trouvent ces éléments dans ton cas ? 25 lignes 25 clients 25 factures ? Les clients ne reviennent plus ? Les prestations sont dans le premier onglet avec une colonne périodique ? Y a t il des périodes où un client n’est pas facturé…?
 
Dernière édition:
Bonjour,
Je n’ai pas vraiment compris : une facture comporte aussi au moins aussi une prestation et un montant ; où se trouvent ces éléments dans ton cas ? 25 lignes 25 clients 25 factures ? Les clients ne reviennent plus ? Les prestations sont dans le premier onglet avec une colonne périodique ? Y a t il des périodes où un client n’est pas facturé…?
Dans le tableau du premier onglet comportant les 25 clients (pour l’exemple), chaque colonne comporte une info (Numéro, mois, nom, prénom, adresse, heures, montant heure, etc…)
En fait, chaque mois, on duplique un nouvel onglet et on change le mois (la facturation se fait au mois, une seule facture par mois -> pour une crèche). Le numéro de client + mois + année = numéro de facture unique.
Le mois d’après, les clients ayant retiré leur enfant de la crèche sont supprimés du tableau, et les nouveaux ajoutés.
Et le deuxième onglet va rechercher toutes les infos dans les colonnes et les met en page pour créer une facture format A4.
Pour changer de facture, il suffit juste de changer l’identifiant.
 
Bonjour,

Exporter le document à l'écran (ton onglet facture) me paraît assez simple, par contre pour pouvoir écrire le script qui balaye l'onglet 1 (client) et génère la facture il faut avoir les noms des colonnes, des documents, des onglets etc...
avec ces éléments il devrait être possible d'écrire un script.
Ok super ! As tu un exemple de script dans ce genre ?
En gros, comment je fais pour formater une facture :
Dans l’onglet facture je remplace l’identifiant du client (numéro client + mois + année). En effet, une seule facture est éditée par mois pour un même client ➡️ crèche.
Puis ensuite je clique sur partager, format pdf, enregistrer.
C’est cette routine que je voudrais faire en automatique :
Le script crée un dossier nommé « Factures + Mois + Année »
Le script va rechercher l’identifiant dans l’onglet 1, colonne 1, ligne 1 (premier client)
Puis le positionne dans le champs de l’onglet 2 (pour formater la facture)
Puis ensuite réalise un partage pdf, nomme le fichier (Facture + Nom client + mois + année)et l’enregistre dans le dossier créé.
Puis passe à l’identifiant dans l’onglet 1, colonne 1, ligne 2 et recommence les opérations (jusqu’à ce qu’il n’y ait plus de numéro de client rempli).
 
Je n'ai pas d'exemple de script tout fais, il faut l'écrire.
Pour ça il faut savoir:
-le nom exact de la feuille onglet 1 et celui de la feuille onglet 2
-dans quelle colonne de l'onglet 1 et à partir de quelle ligne ont récupère l'identifiant du client
-dans quelle colonne et dans quelle ligne de l'onglet 2 ont colle l'identifiant du client.
-dans quelle colonne et dans quelle ligne de l'onglet 2 ont colle le mois et l'année
-quel doit être le nom du dossier recevant les factures en pdf et ou se situe t'il (sur le bureau ?)
-quel doit être le nom du fichier facture (si c'est le nom du client dans quelle cellule doit on le récupérer.)

Tu vois beaucoup de questions nécessaire pour imaginer un script...
Avec un autre problème à résoudre applescript ne sait qu'exporter toutes les feuilles, pour en exporter une seule il faut la fabriquer de toute pièce....

Avec ces réponses je pourrait regarder.
éventuellement mettre ton fichier en téléchargement pour avoir tous les éléments, bien sur après l'avoir modifié avec des noms bidons pour exemple.
 
Je n'ai pas d'exemple de script tout fais, il faut l'écrire.
Pour ça il faut savoir:
-le nom exact de la feuille onglet 1 et celui de la feuille onglet 2
-dans quelle colonne de l'onglet 1 et à partir de quelle ligne ont récupère l'identifiant du client
-dans quelle colonne et dans quelle ligne de l'onglet 2 ont colle l'identifiant du client.
-dans quelle colonne et dans quelle ligne de l'onglet 2 ont colle le mois et l'année
-quel doit être le nom du dossier recevant les factures en pdf et ou se situe t'il (sur le bureau ?)
-quel doit être le nom du fichier facture (si c'est le nom du client dans quelle cellule doit on le récupérer.)

Tu vois beaucoup de questions nécessaire pour imaginer un script...
Avec un autre problème à résoudre applescript ne sait qu'exporter toutes les feuilles, pour en exporter une seule il faut la fabriquer de toute pièce....

Avec ces réponses je pourrait regarder.
éventuellement mettre ton fichier en téléchargement pour avoir tous les éléments, bien sur après l'avoir modifié avec des noms bidons pour exemple.
Hello,
Comment je peux t'envoyer le fichier ? Je ne trouve pas de MP
 
Il faut que tu le mettes sur un site de transfert et que tu postes le lien ici !

Perso j'utilise souvent le site free:
 
Fichier recu !

Pour son utilisation ?
Tu dis que tu remplaces l'identifiant du client ? dans quelle cellule de la feuille facture? et tu mets quoi exactement ?
le numéro de facture dans la cellule C11 ? je suppose !
 
Ok je viens de voir le post-it ! LOL !

Autre question:
Dans la feuille infos je suppose que les numéros de facture dans la colonne "B" s'arrête bien au dernier enfant, (pas comme sur ton exemple) ?
 
Autre question:
Dans la feuille infos je suppose que les numéros de facture dans la colonne "B" s'arrêtent bien au dernier enfant, (pas comme sur ton exemple) ?
Non, sauf intervention manuelle à postériori.

Le numéro de facture en B est (recopié de celui) obtenu en C par concaténation du contenu (lui-même automatisé) des colonnes masquées D-F.
Exemple pour le rang 9 :
B9 = C9
C9 = CONCATENER (D9 ; E9 ; F9 )


Je modifierais comme ceci la formule de la colonne B :
B9 = SI (H9≠"" ; C9 ; "")
Ainsi dès qu'on ajoute le nom d'un enfant, le numéro de facture est créé.

++++++++++++

Au vu de ta très belle feuille de calcul, j'ajouterais encore ces remarques, qui n'ont rien à voir avec le script (mais si tu décidais d'adopter ces changements, il faudrait le faire avant la création du script…)

• Puisqu'avec Numbers, on peut avoir plusieurs tableaux sur une feuille, je "sortirais" (par glisser-déposer) les premiers rangs pour en faire un tableau distinct "En-tête mensuel" et je garderais l'autre tableau pour toutes les données relatives aux prestations par enfant.
Je déplacerais aussi les colonnes masquées, purement techniques, tout à droite du tableau.

Ça permet de définir des colonnes et des rangs d'en-tête, ce que je trouve plus lisible dans certaines formules…​

• Autre chose : la facturation se définit comme relative à quelque chose de fait.
Il est donc étrange que le nom du mois de prestation soit défini (dans une formule) à partir de la date de facturation (normalement postérieure à la prestation)…
1675165156099.png
 
Non, sauf intervention manuelle à postériori.

Le numéro de facture en B est (recopié de celui) obtenu en C par concaténation du contenu (lui-même automatisé) des colonnes masquées D-F.
Exemple pour le rang 9 :
B9 = C9
C9 = CONCATENER (D9 ; E9 ; F9 )


Je modifierais comme ceci la formule de la colonne B :
B9 = SI (H9≠"" ; C9 ; "")
Ainsi dès qu'on ajoute le nom d'un enfant, le numéro de facture est créé.

++++++++++++

Au vu de ta très belle feuille de calcul, j'ajouterais encore ces remarques, qui n'ont rien à voir avec le script (mais si tu décidais d'adopter ces changements, il faudrait le faire avant la création du script…)

• Puisqu'avec Numbers, on peut avoir plusieurs tableaux sur une feuille, je "sortirais" (par glisser-déposer) les premiers rangs pour en faire un tableau distinct "En-tête mensuel" et je garderais l'autre tableau pour toutes les données relatives aux prestations par enfant.
Je déplacerais aussi les colonnes masquées, purement techniques, tout à droite du tableau.

Ça permet de définir des colonnes et des rangs d'en-tête, ce que je trouve plus lisible dans certaines formules…​

• Autre chose : la facturation se définit comme relative à quelque chose de fait.
Il est donc étrange que le nom du mois de prestation soit défini (dans une formule) à partir de la date de facturation (normalement postérieure à la prestation)…
Voir la pièce jointe 275225
Oui effectivement, pour la date de facturation, elle concerne la facturation du mois précédent.
Logiquement on devrait avoir :
Date facturation : 01/07/2022
Mois facturé : Juin 2022
 
Ok je viens de voir le post-it ! LOL !

Autre question:
Dans la feuille infos je suppose que les numéros de facture dans la colonne "B" s'arrête bien au dernier enfant, (pas comme sur ton exemple) ?
En fait, j’ai pré-rempli un certains nombre d’items car la personne qui rempli le fichier n’y connaît rien en formules.
Donc globalement, le dernier enfant s’arrête quand la colonne « Nom enfant » (je ne me souviens plus du nom exact de la colonne et je ne suis pas devant mon ordi) est vide. Mais si c’est plus simple de terminer à l’identifiant, c’est ok !
 
Je te met le lien pour récupérer les fichiers
-Un fichier texte explications
-le script
-Ton fichier "numbers" modifié

Bon test !
Fait moi un retour...