begin process at 2010 03 20 18:20:35
  Trouver un code source :
 
dans
 
Accueil > 

Code

 > 

Formulaire

 > CALCULS RAYNAUX V2

CALCULS RAYNAUX V2


 Description

Cliquez pour voir la capture en taille normale
c'est un script pour Indesign CS1 à CS4 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 avec succès. Un petit descriptif est dans le zip.

Source

  • //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;
  • }
//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 " ...

 Fichier Zip

Les Membres Club peuvent télécharger directement un fichier contenu dans le zip sans télécharger le zip en entier !

Télécharger le zip


 Sources de la même categorie

DÉSACTIVER UN BOUTON SUBMIT APRÈS ENVOI DU FORMULAIRE par SoftDeath
IMPLEMENTATION DE RANDOM PERSONNALISÉ par ousous
IMPLEMENTATION DE HASHTABLE par ousous
JAVASCRIPT.UTIL.ITERATOR par ousous
Source avec Zip Source avec une capture PALETTE DE COULEURS par titnome

 Sources en rapport avec celle ci

HTML_ENTITIES_DECODE par zen69
DÉSACTIVER UN BOUTON SUBMIT APRÈS ENVOI DU FORMULAIRE par SoftDeath
AFFICHER OU CACHER UN COMPOSANT AVEC JAVASCRIPT V1.0 par xloadx
Source avec Zip Source avec une capture PALETTE DE COULEURS par titnome
Source avec Zip Source avec une capture RÉSOUDRE UNE ÉQUATION EN 6 ÉTAPES par Zestyr

Commentaires et avis

Commentaire de Bacterius le 23/04/2009 17:02:04

Héhé calculs rénaux il fallait que je la sorte :p

Cordialement, Bacterius !

Commentaire de Ali Bibi le 23/04/2009 18:44:24

"calculs rénaux" : Euh ! je crois bien que c'était ça l'idée (ou la blague) !

Commentaire de Bacterius le 23/04/2009 20:26:18

??? Les calculs rénaux, les petits cailloux de calcaire que certaines personnes sont prédisposées à former dans leur rein, et ça fait sûrement très mal (jamais eu mais je pense que ça doit faire mal), et ton source a le même titre phonétiquement. C'était ça le jeu de mots ... ^^

Cordialement, Bacterius !

Commentaire de lakichemole le 24/04/2009 10:49:08

En fait il me semble que se que AliBibi disait c'est qu'il avait fait la blague...lui même.. qu'il "l'avait sorti" avant toi :)

Commentaire de Ali Bibi le 24/04/2009 13:06:58

Bien vu Lakichemole  !

(nota : j'préfére lakichalsacienne ...) ;-)

 Ajouter un commentaire


Discussions en rapport avec ce code source dans le forum

Calculs javascript [ par nikeman13 ] Bonjour ! J'aimerais mettre sur mon site un petit système de calculs . Voila ce que je veux faire : Quantité d'objet 1 voulu [____] Quantité d'objet 2 Redimensionnement de tableaux sous javascript/netscape [ par Blasteur ] Bonjour à tous!Je souhaite redimensionner dynamiquement un tableau (du nom de 'CESSION') grâce à une fonction javascript.Le problème c'est que le code javascript, RTE et tableaux [ par mondokwondo ] Bonjour a tous! voila je suis tres novice en javascript mais je reprend en ce moment un RTE (rich text editor) orienté WYSIWYG et seul un probleme ent Bug dans les calculs javascript? [ par fr64 ] Bonjour,J'essaie de faire le calcul suivant en javascript (par exemple dans la console javascript de Firefox):1*8.86+2*15.31Le r&#233;sultat est surpr y'a il un lien entre php et javascript? [ par rachidphp93 ] bonjour, je voudrai faire tout les calculs et les contr&#244;les avec javascript, sauf que : quand j'interroge une base de donnee je suis oblig&#233; Erreur T_Var dans ma fonction javascript [ par raven44 ] Bonjour &#224; tous,Je n'arrive pas &#224; me d&#233;barasser de cette erreur T_var dans mon script : Que signifie t'elle ? le but de ce script des de du php dans javascript [ par nougitch ] Bonjour &#224; tous, J'aimerais conna&#238;tre les r&#232;gles d'insertion de variables&nbsp;PHP dans une fonction JAVASCRIPT.En faisant ceci, cela ne comment introduire du php dans javascript [ par rachidphp93 ] bonjour tout le monde;je voudrais interoger une bd; j'appel une fonction javascript et dans la fonction apres des insctruction en javascript, question help meee [ par termifr ] bonjour voila sur une de mes pages je met une box ma question plutot simple il y a t'il un equivalen utiliser un script dans un autre script [ par xav20 ] bonjour a tous, je suis un nouveau webmaster, je recherche un moyen de faire marcher un javascript dans un autre... je m'explique :je voudrai rendre i


Nos sponsors


Sondage...

Comparez les prix

CalendriCode

Mars 2010
LMMJVSD
1234567
891011121314
15161718192021
22232425262728
293031    

Consulter la suite du CalendriCode

Photothèque

 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils.
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 0,686 sec (4)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales