numerotation automatique

numerotation automatique - PAO / Desktop Publishing - Graphisme

Marsh Posté le 16-05-2006 à 11:14:24    

Je fais des tickets de spectacle numérotés. Y at-il un moyen sur indesign pour faire une numérotation automatique des tickets (4 ticket par pages) ?
Je pense qu'il faut utiliser les scripts mais je ne connaît pas ce language.
Merci de m'aider Urgent  :??:

Reply

Marsh Posté le 16-05-2006 à 11:14:24   

Reply

Marsh Posté le 16-05-2006 à 18:40:23    

cayama a écrit :

Je fais des tickets de spectacle numérotés. Y at-il un moyen sur indesign pour faire une numérotation automatique des tickets (4 ticket par pages) ?
Je pense qu'il faut utiliser les scripts mais je ne connaît pas ce language.
Merci de m'aider Urgent  :??:


 
Quelles sont les conditions initiales?
- toutes les pages déjà maquettées avec bloc-texte vierge dédié à la numérotation?
- toutes les pages déjà maquettées sans bloc dédié à la numérotation (donc à insérer)?
- une page-modèle maquettée (4 tickets) à dupliquer et actualiser X fois?


---------------
NOUVEAU! Le guide de l'édition en version ebook : http://marcautret.free.fr/autret/150q-ebook/
Reply

Marsh Posté le 17-05-2006 à 09:37:40    

J'ai fais une première page avec 4 ticket et des blocs texte numérotés de 001 à 004 puis je suis obligé de dupliquer page par page et modifier un par un les numéros. Il y a certainement une méthode plus rapide et qui évite de tout refaire si erreur.

Reply

Marsh Posté le 17-05-2006 à 15:03:39    

cayama a écrit :

J'ai fais une première page avec 4 ticket et des blocs texte numérotés de 001 à 004 puis je suis obligé de dupliquer page par page et modifier un par un les numéros. Il y a certainement une méthode plus rapide et qui évite de tout refaire si erreur.


 
Ci-dessous un script JS pour te dépanner.
Il est compatible Indesign CS et CS2, Mac ou Win.
 

Code :
  1. /***************************************************/
  2. /*              DupliTickets.js                    */
  3. /*           tourne sous CS & CS2                  */
  4. /***************************************************/
  5. // !! Toujours sauvegarder votre document AVANT de lancer !!
  6. //----------------------------------------------------------
  7. // GLOBALS
  8. //----------------------------------------------------------
  9. var NUM_PER_PAGE = 4;
  10. var NUM_FORMAT = "000";
  11. var PATTERN = "<([1-9])>"; // les modeles de numeros sont de la forme <n>
  12. //----------------------------------------------------------
  13. // OUTILS
  14. //----------------------------------------------------------
  15. /*int*/ function getPageNb()
  16. //----------------------------------------------------------
  17. {
  18. saisie = prompt("Nombre de tickets à générer", NUM_PER_PAGE);
  19. if (saisie)
  20. {
  21. nTickets = parseInt(saisie);
  22. if ( nTickets<=0 ) return(null);
  23. }
  24. return(Math.ceil(nTickets / NUM_PER_PAGE));
  25. }
  26. /*str*/ function formatNumero(/*str*/ digit, /*int*/ offset)
  27. //----------------------------------------------------------
  28. {
  29. var num = '' + (offset + (digit-0));
  30. var numStr = NUM_FORMAT.substr(num.length) + num;
  31. return(numStr);
  32. }
  33. //----------------------------------------------------------
  34. // METHODES PRINCIPALES
  35. //----------------------------------------------------------
  36. /*void*/ Paragraph.prototype.tryReplaceTicketNum = function(/*int*/ pgNum)
  37. //----------------------------------------------------------
  38. {
  39. var offset = (pgNum-1) * NUM_PER_PAGE;
  40. RE = new RegExp(PATTERN, "gi" );
  41. pText = this.contents;
  42. if ( (results = RE.exec(pText)) != null )
  43. {
  44. ticketNum = formatNumero(results[1], offset);
  45. range = [results.index, results.index + results[0].length - 1];
  46. this.characters.itemByRange(range[0],range[1]).contents = ticketNum;
  47. }
  48. }
  49. /*void*/ Page.prototype.setTicketNums = function(/*int*/ pgNum)
  50. //----------------------------------------------------------
  51. {
  52. var pgItems = this.allPageItems;
  53. for (var i=pgItems.length-1 ; i>=0 ; i--)
  54. if ( pgItems[i] instanceof TextFrame )
  55.  for (var j=pgItems[i].paragraphs.length-1 ; j>= 0 ; j--)
  56.   pgItems[i].paragraphs[j].tryReplaceTicketNum(pgNum);
  57. }
  58. //----------------------------------------------------------
  59. // PROGRAMME
  60. //----------------------------------------------------------
  61. if ( app.documents.length > 0 )
  62. {
  63. var PAGE1 = app.activeDocument.pages.firstItem();
  64. var NPAGES = getPageNb();
  65. if (NPAGES)
  66.  {
  67.  for (p=2 ; p<=NPAGES ; p++)
  68.   {
  69.   pg_p = PAGE1.duplicate(LocationOptions.atEnd);
  70.   pg_p.setTicketNums(p);
  71.   }
  72.  PAGE1.setTicketNums(1);
  73.  }
  74. }
  75. else
  76. alert("Aucun document ouvert!" );


 
MODE D'EMPLOI
 
1) Fais un copier-coller du code dans un fichier nommé par exemple DupliTickets.js
    (tu peux aussi mettre le suffixe jsx pour CS2)
 
2) Place le fichier dans le dossier %InDesign%/Presets/Scripts
    (le script sera alors accessible depuis la palette Scripts d'InDesign)
 
3) Utilisation:
 
- ta page modèle doit être la première page du document;
 
- remplace les numéros indiqués dans la page-modèle par les marqueurs suivants:
  <1>, <2>, <3>, <4>
  (Le programme recherche le motif <n>, où n est entre 1 et 9: le script permet donc de gérer si besoin jusqu'à 9 tickets par page, cf. la variable NUM_PER_PAGE)
 
- ATTENTION: sauvegarde ton document modèle avant de lancer le script, car son action n'est pas réversible
 
- il est possible de moduler les paramètres suivants:
  NUM_PER_PAGE indique le nombre de tickets par page (=4 par défaut)
  NUM_FORMAT indique le nombre de chiffres à utiliser pour former un numéro (="000" par défaut)
 
- une fois lancé, le script te demande le nombre total de tickets à générer. En fait, il en déduit le nombre de pages correspondant et remplit entièrement toutes les pages générées. Par exemple, si tu veux 13 tickets, il va en fait construire 4 pages, d'où 16 tickets.
 
- la complexité des blocs et/ou groupes constitutifs d'un ticket est sans incidence, du moment que le script trouve ses marqueurs <n>. Rien ne t'empêche d'ailleurs de construire un modèle de ticket où la numérotation apparaît à plusieurs endroits, il suffit de répéter <n> partout où c'est utile.
 
Voilà. J'espère que ça te fera gagner du temps.


---------------
NOUVEAU! Le guide de l'édition en version ebook : http://marcautret.free.fr/autret/150q-ebook/
Reply

Marsh Posté le 03-08-2006 à 12:25:09    

Bonjour...
 
...je sens que je vais vous faire rire : y a t-il moyen de faire la même chose (numérotation automatique) dans quark ?
 
Bon y a control+3 (ou pomme+3) mais c'est plus l'histoire de générer un certain nombre de pages correctement numérotées, et de pouvoir reprendre la numérotation là où je l'ai quitté la fois précédente... qui m'intéressent...
 
Moi c'est pour des chèques cinéma...

Reply

Marsh Posté le 17-08-2006 à 16:42:33    

RainbowChild a écrit :

Bonjour...
 
...je sens que je vais vous faire rire : y a t-il moyen de faire la même chose (numérotation automatique) dans quark ?
...


 
Désolé, j'ai lâché XPress depuis trop longtemps pour te répondre. Mais si quelqu'un a la réponse je serais intéressé de savoir.


---------------
NOUVEAU! Le guide de l'édition en version ebook : http://marcautret.free.fr/autret/150q-ebook/
Reply

Marsh Posté le 04-06-2007 à 21:06:38    

Bonsoir ACut,
 
Je viens de découvrir ce script que je trouve excellent. J'ai tenté de l'améliorer pour le mettre à ma sauce mais malheureusement mes connaissances en vbScript sont trop limitées. Cependant, tu as le temps et l'envie de développer cette application, voici ce que je voudrai y ajouter :
 
Le nombre de tickets total
Le nombre de tickets par planche (de 1 à 20)
Le nombre de tickets par carnet (en effet, mes tickets sont ensuite agrafé par x ex.)
Le numéro du premier ticket
La possibilité de générer les planches par ordre décroissant ou croissant
 
Exemple :
1500 tickets, 8 poses par feuille, 25 tickets par carnet avec comme premier numéro 2501 ... le tout généré par ordre décroissant.
 
Feuille 1
 Ticket 1 : 004000
 Ticket 2 : 003800
 Ticket 3 : 003600
 Ticket 4 : 003400
 Ticket 5 : 003200
 Ticket 6 : 003000
 Ticket 7 : 002800
 Ticket 8 : 002600
Feuille 2
 Ticket 1 : 003999
 Ticket 2 : 003799
 Ticket 3 : 003599
 Ticket 4 : 003399
 Ticket 5 : 003199
 Ticket 6 : 002999
 Ticket 7 : 002799
 Ticket 8 : 002599
Feuille 3
 Ticket 1 : 003998
 Ticket 2 : 003798
 Ticket 3 : 003598
 Ticket 4 : 003398
 Ticket 5 : 003198
 Ticket 6 : 002998
 Ticket 7 : 002798
 Ticket 8 : 002598
 
...
 
Feuille 200
 Ticket 1 : 003801
 Ticket 2 : 003601
 Ticket 3 : 003401
 Ticket 4 : 003201
 Ticket 5 : 003002
 Ticket 6 : 002801
 Ticket 7 : 002601
 Ticket 8 :
 
Voilà, je ne sais pas si ma demande est très explicite. Un grand merci d'avance si tu peux m'aider et merci déjà pour le script précédent !!!
 
A plus,
 
Hervé.

Reply

Marsh Posté le 12-06-2007 à 17:28:13    

Bonjour je viens de voir ton script pour la numérotation auto de ticket mais je n'arrive pas à le faire fonctionner
quand je le lance il me mets toujours erreur  
que dois-je faire exactement?
que dois-je copier exactement comme script (ou ca commence et fini)
dans quel logiciel je le copie?
merci de ta réponse

ACut a écrit :

Ci-dessous un script JS pour te dépanner.
Il est compatible Indesign CS et CS2, Mac ou Win.
 

Code :
  1. /***************************************************/
  2. /*              DupliTickets.js                    */
  3. /*           tourne sous CS & CS2                  */
  4. /***************************************************/
  5. // !! Toujours sauvegarder votre document AVANT de lancer !!
  6. //----------------------------------------------------------
  7. // GLOBALS
  8. //----------------------------------------------------------
  9. var NUM_PER_PAGE = 4;
  10. var NUM_FORMAT = "000";
  11. var PATTERN = "<([1-9])>"; // les modeles de numeros sont de la forme <n>
  12. //----------------------------------------------------------
  13. // OUTILS
  14. //----------------------------------------------------------
  15. /*int*/ function getPageNb()
  16. //----------------------------------------------------------
  17. {
  18. saisie = prompt("Nombre de tickets à générer", NUM_PER_PAGE);
  19. if (saisie)
  20. {
  21. nTickets = parseInt(saisie);
  22. if ( nTickets<=0 ) return(null);
  23. }
  24. return(Math.ceil(nTickets / NUM_PER_PAGE));
  25. }
  26. /*str*/ function formatNumero(/*str*/ digit, /*int*/ offset)
  27. //----------------------------------------------------------
  28. {
  29. var num = '' + (offset + (digit-0));
  30. var numStr = NUM_FORMAT.substr(num.length) + num;
  31. return(numStr);
  32. }
  33. //----------------------------------------------------------
  34. // METHODES PRINCIPALES
  35. //----------------------------------------------------------
  36. /*void*/ Paragraph.prototype.tryReplaceTicketNum = function(/*int*/ pgNum)
  37. //----------------------------------------------------------
  38. {
  39. var offset = (pgNum-1) * NUM_PER_PAGE;
  40. RE = new RegExp(PATTERN, "gi" );
  41. pText = this.contents;
  42. if ( (results = RE.exec(pText)) != null )
  43. {
  44. ticketNum = formatNumero(results[1], offset);
  45. range = [results.index, results.index + results[0].length - 1];
  46. this.characters.itemByRange(range[0],range[1]).contents = ticketNum;
  47. }
  48. }
  49. /*void*/ Page.prototype.setTicketNums = function(/*int*/ pgNum)
  50. //----------------------------------------------------------
  51. {
  52. var pgItems = this.allPageItems;
  53. for (var i=pgItems.length-1 ; i>=0 ; i--)
  54. if ( pgItems[i] instanceof TextFrame )
  55.  for (var j=pgItems[i].paragraphs.length-1 ; j>= 0 ; j--)
  56.   pgItems[i].paragraphs[j].tryReplaceTicketNum(pgNum);
  57. }
  58. //----------------------------------------------------------
  59. // PROGRAMME
  60. //----------------------------------------------------------
  61. if ( app.documents.length > 0 )
  62. {
  63. var PAGE1 = app.activeDocument.pages.firstItem();
  64. var NPAGES = getPageNb();
  65. if (NPAGES)
  66.  {
  67.  for (p=2 ; p<=NPAGES ; p++)
  68.   {
  69.   pg_p = PAGE1.duplicate(LocationOptions.atEnd);
  70.   pg_p.setTicketNums(p);
  71.   }
  72.  PAGE1.setTicketNums(1);
  73.  }
  74. }
  75. else
  76. alert("Aucun document ouvert!" );


 
MODE D'EMPLOI
 
1) Fais un copier-coller du code dans un fichier nommé par exemple DupliTickets.js
    (tu peux aussi mettre le suffixe jsx pour CS2)
 
2) Place le fichier dans le dossier %InDesign%/Presets/Scripts
    (le script sera alors accessible depuis la palette Scripts d'InDesign)
 
3) Utilisation:
 
- ta page modèle doit être la première page du document;
 
- remplace les numéros indiqués dans la page-modèle par les marqueurs suivants:
  <1>, <2>, <3>, <4>
  (Le programme recherche le motif <n>, où n est entre 1 et 9: le script permet donc de gérer si besoin jusqu'à 9 tickets par page, cf. la variable NUM_PER_PAGE)
 
- ATTENTION: sauvegarde ton document modèle avant de lancer le script, car son action n'est pas réversible
 
- il est possible de moduler les paramètres suivants:
  NUM_PER_PAGE indique le nombre de tickets par page (=4 par défaut)
  NUM_FORMAT indique le nombre de chiffres à utiliser pour former un numéro (="000" par défaut)
 
- une fois lancé, le script te demande le nombre total de tickets à générer. En fait, il en déduit le nombre de pages correspondant et remplit entièrement toutes les pages générées. Par exemple, si tu veux 13 tickets, il va en fait construire 4 pages, d'où 16 tickets.
 
- la complexité des blocs et/ou groupes constitutifs d'un ticket est sans incidence, du moment que le script trouve ses marqueurs <n>. Rien ne t'empêche d'ailleurs de construire un modèle de ticket où la numérotation apparaît à plusieurs endroits, il suffit de répéter <n> partout où c'est utile.
 
Voilà. J'espère que ça te fera gagner du temps.


Reply

Marsh Posté le 22-09-2015 à 14:15:11    

Bonjour
 
J'ai trouvé votre méthode de numérotation très intéressante et ça marche super.
 
Cependant, Pouvez-vous m'indiquer comment commencer une numérotation à partir de n'importe quel chiffre ?
 
Ex : j'ai imprimé 1000 tickets en début d'année. J'en ai besoin de 500 supplémentaires mais la numérotation doit, du coup, commencer à 01001
 
Espérant que vous lirez ce message malgré le grand écart entre la publication de votre script et ma demande.
 
Je suis en Indesign CS3
 
CDLT

Reply

Marsh Posté le 22-09-2015 à 14:30:45    

En utilisant simplement les n° de pages ça peut pas se faire ? On sort complètement des scripts & co, mais c'est peut être pas déconnant. En gros tu fait ton gabarit avec un n° de page courante la où est ta numérotation, tu fais un début de section à 1001 et tu crées tes 500 pages. Enfin ça marche si tu fais bien un ticket par page, et pas un amalgame bien sur.
Un peu du bricolage, mais les scripts j'y connais rien :D je suis plus branché XML.


Message édité par nikos69 le 22-09-2015 à 14:32:05
Reply

Marsh Posté le 22-09-2015 à 14:30:45   

Reply

Marsh Posté le 23-09-2015 à 11:01:00    

Merci, c'est sympa
mais le script fonctionnant très bien, je préfère le garder et simplement savoir quelle donnée dans la programmation je dois changer pour commencer la numérotation à partir de n'importe quel n°
 
Merci encore

Reply

Marsh Posté le 25-09-2015 à 20:05:49    

Pour les numerotations, vous pouvez aussi faire cela en fusion depuis un ficher Excel
 
Preparez le fichier Excel en faisant autant de colonnes de chiffres que de poses sur la feuille afin d'imposer directement et la fusion fera le reste.

Reply

Marsh Posté le 27-01-2016 à 10:46:14    

[quotemsg=955292,7,544640]Bonsoir ACut,
 
Je viens de découvrir ce script que je trouve excellent. J'ai tenté de l'améliorer pour le mettre à ma sauce mais malheureusement mes connaissances en vbScript sont trop limitées. Cependant, tu as le temps et l'envie de développer cette application, voici ce que je voudrai y ajouter :
Le nombre de tickets total, Le nombre de tickets par planche (de 1 à 20), Le nombre de tickets par carnet (en effet, mes tickets sont ensuite agrafé par x ex.), Le numéro du premier ticket
 
Exemple :
1500 tickets, 8 poses par feuille, 25 tickets par carnet avec comme premier numéro 2501 ... le tout généré par ordre décroissant.
 
Feuille 1
 Ticket 1 : 004000
 Ticket 2 : 003800
 Ticket 3 : 003600
 Ticket 4 : 003400...
 
Bonjour
 
Avez-vous eu réponse à votre question ?
car c'est exactement ce dont j'ai besoin pour générer mes tickets.
J'en ai quelquefois 10.000 à imprimer et pour le regrouper par paquet de 25, c'est long et fastidieux
Merci d'avance

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed