Calculs raynaux v2

Soyez le premier à donner votre avis sur cette source.

Snippet vu 6 664 fois - Téléchargée 231 fois

Contenu du snippet

c'est un script pour Indesign CS1 à CS6 offrant la possibilité d'effectuer des calculs dans un tableau.
- Soit sur des cellules sélectionnées
- Soit sur toutes les lignes du tableau
-Soit sur toutes les colonnes
Il a été testé sur Mac et PC avec succès. Un petit descriptif est dans le zip.

Source / Exemple :


//CALCULS RAYNAUX v2.0.js
//InDesign CS3 JavaScript
/*  
BCV Création Team 2009

  • /
// main(); function main(){ var myObjectList = new Array; if (app.documents.length != 0){ if (app.selection.length != 0){ for(var myCounter = 0;myCounter < app.selection.length; myCounter++){ switch (app.selection[myCounter].constructor.name){ case "Rectangle": case "Oval": case "Polygon": case "GraphicLine": case "TextFrame": myObjectList.push(app.selection[myCounter]); break; } } if (myObjectList.length == 0){ NouvelleFenetre(myObjectList); } else{ alert ("Vous devez sélectionner un groupe de valeurs et réessayer"); } } else{ alert ("Vous devez sélectionner un groupe de valeurs et réessayer"); } } else{ alert ("Vous devez ouvrir un document, sélectionner un groupe de valeurs et réessayer."); } } function NouvelleFenetre(){ var Fenetre = app.dialogs.add({name:"CALCULS RAYNAUX v2.0"}); var ListeDeroulantSens = ["les cellules selectionnées", "toutes les lignes", "toutes les colonnes"]; var ListeDeroulantOperation = ["Addition", "Soustraction", "Multiplication","Division"]; var ListeDeroulantOption = ["Ajouter au résultat :", "Soustraire au résultat :", "Multiplier le résultat par :" ,"Diviser le résultat par :","Appliquer un % au résultat :","Ajouter un % au résultat :","Soustraire un % au résultat :"]; var ListeDeroulantDevise = ["€","$","£","¥","&#63743;"] with(Fenetre){ with(dialogColumns.add()){ var ChoixOperation = enablingGroups.add({staticLabel:"Opération :", checkedState:true}); with (ChoixOperation){ with(borderPanels.add()){ with(dialogColumns.add()){ var MenuDeroulantOperation = dropdowns.add({stringList:ListeDeroulantOperation, selectedIndex:0}); } } } var ChoixSens = enablingGroups.add({staticLabel:"A effectuer sur :", checkedState:true}); with (ChoixSens){ with(borderPanels.add()){ with(dialogColumns.add()){ var MenuDeroulantSens = dropdowns.add({stringList:ListeDeroulantSens, selectedIndex:0}); } } } var ChoixOption = enablingGroups.add({staticLabel:"Option :", checkedState:false}); with (ChoixOption){ with(borderPanels.add()){ with(dialogColumns.add()){ var MenuDeroulantOption = dropdowns.add({stringList:ListeDeroulantOption, selectedIndex:0}); } with (dialogColumns.add()){ var CaseValeurOption = realEditboxes.add(); } } } var ChoixDevise = enablingGroups.add({staticLabel:"Devise :", checkedState:false}); with (ChoixDevise){ with(borderPanels.add()){ with(dialogColumns.add()){ var MenuDeroulantDevise = dropdowns.add({stringList:ListeDeroulantDevise, selectedIndex:0}); } } } with(borderPanels.add()){ with(dialogColumns.add()){ var ChoixVide = checkboxControls.add({staticLabel:"Ignorer les résultats nuls", checkedState:false}); } } } } var MesChoix = Fenetre.show(); if (MesChoix == true){ var Sens = MenuDeroulantSens.selectedIndex; var Operation = MenuDeroulantOperation.selectedIndex; var Option = MenuDeroulantOption.selectedIndex; var ValeurOption = CaseValeurOption.editValue; var ValidationOption = ChoixOption.checkedState; var ValidationDevise = ChoixDevise.checkedState; var OptionDevise = MenuDeroulantDevise.selectedIndex; var ValidationVide = ChoixVide.checkedState; Fenetre.destroy(); Calcul(Sens,Operation,Option,ValeurOption,ValidationOption,ValidationDevise,OptionDevise,ValidationVide); } else{ Fenetre.destroy(); } } function Calcul(Sens,Operation,Option,ValeurOption,ValidationOption,ValidationDevise,OptionDevise,ValidationVide){ var Cellule = app.selection[0]; var Tableau = Cellule.parent; if (Tableau.constructor.name == "Cell"){ Cellule = Cellule.parent; Tableau = Tableau.parent; var NbreCellule = app.selection[0].length; } var NbreLignes = Tableau.rows.length; var NbreColonnes = Tableau.columns.length; var NomCellule = Cellule.name; var Ligne = NomCellule.split(":")[1]; var Colonne = NomCellule.split(":")[0]; var Dernier = -1; var Premier = 0; if (Sens == 0){ if (NbreCellule == 0){ app.select(Tableau.columns[Number(Colonne)].cells.itemByRange(Number(Ligne),Number(Ligne))); } TotalCellules(app.selection[0].cells,Operation,Option,ValeurOption,ValidationOption,ValidationDevise,OptionDevise,ValidationVide); } else{ if (Sens == 1){ for (var j =0; NbreColonnes >= j+1 ; j ++){ app.select(Tableau.rows[Number(j)].cells.itemByRange(Number(Premier),Dernier)); TotalCellules(app.selection[0].cells,Operation,Option,ValeurOption,ValidationOption,ValidationDevise,OptionDevise,ValidationVide); } } else{ for (var j =0; NbreLignes >= j+1 ; j ++){ app.select(Tableau.columns[Number(j)].cells.itemByRange(Number(Premier),Dernier)); TotalCellules(app.selection[0].cells,Operation,Option,ValeurOption,ValidationOption,ValidationDevise,OptionDevise,ValidationVide); } } } } function TotalCellules(cells,Operation,Option,ValeurOption,ValidationOption,ValidationDevise,OptionDevise,ValidationVide){ for (var k = 1; cells.length > k+1; k++){ if (cells[k].texts[0].contents == "0" && Operation==3){ if (!confirm("ATTENTION : division par 0 !\n Voulez-vous continuer ?")){ return; } } } if (ValidationOption == true && ValeurOption == 0 && (Option == 2 || Option == 3 || Option ==4)){ if (!confirm("ATTENTION : Vous n'avez pas donné de valeur à l'option\n Vous risquez une multiplication ou pire, une division par 0 !\n\n Voulez-vous continuer ?")){ return; } } if (cells[-1].texts[0].contents != ""){ if (!confirm("Ecraser le contenu de la dernière cellule ?")){ return; } } var Total = ParseVirgule(cells[0].texts[0].contents); for (var j = 1; cells.length > j+1; j++){ try{ if (Operation==0) { Total += ParseVirgule(cells[j].texts[0].contents); } if (Operation==1) { Total = Total - (ParseVirgule(cells[j].texts[0].contents)); } if (Operation==2) { Total = Total * (ParseVirgule(cells[j].texts[0].contents)); } if (Operation==3) { Total = Total / (ParseVirgule(cells[j].texts[0].contents)); } } catch (e) {} } if (ValidationOption == true){ if (Option == 0) {Total_edit=Total + ValeurOption;} if (Option == 1) {Total_edit=Total - ValeurOption;} if (Option == 2) {Total_edit=Total * ValeurOption;} if (Option == 3) {Total_edit=Total / ValeurOption;} if (Option == 4) {Total_edit=(Total * ValeurOption)/100; } if (Option == 5) {Total_edit=Total + ((Total * ValeurOption)/100); } if (Option == 6) {Total_edit=Total - ((Total * ValeurOption)/100); } } else{Total_edit=Total;} //["€","$","£","¥","&#63743;"] if (ValidationDevise == true){ if (OptionDevise == 0) {Devise =" €";} if (OptionDevise == 1) {Devise =" $";} if (OptionDevise == 2) {Devise =" £";} if (OptionDevise == 3) {Devise =" ¥";} if (OptionDevise == 4) {Devise =" &#63743;";} } else{Devise="";} var text = Total_edit.toString(); var MaReg = new RegExp("[.]",""); var Resultat = text.replace(MaReg,","); if (ValidationVide == 1 && Resultat == 0){ var Resultat = ""; } cells[-1].texts[0].contents = Resultat+Devise; } function ParseVirgule(Nombre){ Nombre=Nombre.split(""); for (var i=Nombre.length-1;i>=0;i--){ if(isNaN(Nombre[i])){ if (Nombre[i]==","){ Nombre [i]="."; } if (Nombre[i]!="."){ Nombre.splice(i,1); } } } Nombre=Nombre.join(""); if(Nombre!=""){ return parseFloat(Nombre); } return 0; } function IsInArray(item,array){ for(var i=0;i<array.length;i++){ if(array[i]==item){ return true } } return false; }

Conclusion :


Une petite chose bien utile(je crois), merci de me rapporter les (éventuels) bugs, et de me dire si tout fonctionne sur PC.
ET si vous avez des suggestions pour enrichir "la chose " ...

A voir également

Ajouter un commentaire

Commentaires

cs_Ali Bibi
Messages postés
20
Date d'inscription
jeudi 27 juillet 2006
Statut
Membre
Dernière intervention
5 avril 2018

Calculs Raynaux vient de passer en version 3.05 !!!
Toujours à cette adresse : http://www.bcv-creation.com/calculs-dans-indesign/
Youpi !
cs_Ali Bibi
Messages postés
20
Date d'inscription
jeudi 27 juillet 2006
Statut
Membre
Dernière intervention
5 avril 2018

Février 2013 ... Du nouveau !

Alors, nous avons décelé (et corrigé) un bug pour les versions PC, et re-testé tout cela.
Une nouvelle version (2.01) est en ligne que vous trouverez à l'adresse : http://www.bcv-creation.com/calculs-dans-indesign/
Elle est compatible MAC et PC CS1 à CS6

Enjoy !
cs_Ali Bibi
Messages postés
20
Date d'inscription
jeudi 27 juillet 2006
Statut
Membre
Dernière intervention
5 avril 2018

2013 Bonne année !!!!!

-> je viens de (re) tester mon script sur CS6 (Mac) ... il fonctionne encore !

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.