Batch Index du Forum
S’enregistrerRechercherFAQMembresGroupesConnexion
Répondre au sujet Page 2 sur 8
Aller à la page: <  1, 2, 3, 4, 5, 6, 7, 8  >
[Formation]Labougie
Auteur Message
Répondre en citant
Message [Formation]Labougie 
Revue du message précédent :

Bonsoir,

Voici une composition sur comment calculer ses remboursements d'emprunts Mr. Green .


Code:

@echo off
Rem Explication de ce que fais le batch
echo .
echo .
echo      Voici un programme pour calculer vos remboursements d'emprunts
echo .
echo .
echo      ----- Made by labougie -----
echo .
echo Presse une touche Stp %username%
Pause>nul
cls
rem saisie des donnees necessaire pour l'execution du batch
echo Tout d'abord il faut me fournir les donnees suivantes :
echo .
echo .

:entree
set /p mtt=Montant Total de l'emprunt :
set /p TX=taux de l'emprunt ( pour 4.5  ) taper 4.5 :
set /p d=duree en mois ( une annee = 12 mois ):
echo .
echo .
rem choix du type de remboursement
echo Pour une annuite constante choisir  1
echo Pour un amortissement constant choisir  2
echo Les annuites constantes sont pour les particuliers
echo Les amortissements constants sont pour les entreprises
echo.
echo.
set /a anncons=Annuite constante
set /a amortcons=amortissement constant
if %anncons% equ 1 goto annuite else goto amortissement
echo .
echo .
echo Presse une touche %username%
Pause>nul
rem calcul du mode pour annuite constante

:annuite
cls
echo Voici le calcul de remboursement de ton emprunt %username% le %date%
echo Le montant de l'emprunt est de %mtt% Euros
echo Le taux est %tx%
echo La duree est de %d% mois
echo Presse une touche %username%
Pause>nul
rem formule mathematique annuite constante

:annuiteconstante
set /a Calannuite=((%mtt%*(%tx%/100)))/(1-(1+%tx%)exp-%d%)
echo le montant de l'annuite est de %calannuite%

set /a interet=%mtt%*(%tx%/100)
echo le montant des interets est de : %interet%

set / a amortann=%calannuite%-%interet%
echo Le mantant des amortissements : %amortann%

set / a valfin=%mtt%-%amortann%
echo La valeur de fin est de : %valfin%
echo Presse une touche %username%
Pause>nul

:routine
rem la routine permet de faire le calcul sur la duree total de l'emprunt
rem calcul de la periodicite
set /a tpsrestant=%d%-1
set /a interet=%mtt%*(%tx%/100)
echo Le montant des interets est de : %interet%
set /a amortann=%calannuite%-%interet%
echo Le montant des interets est de : %amortann%
echo Le montant de l'annuite constante est de : %calannuite%
set /a valfin2=%valfin%-(%calannuite%-%interet%)
echo La valeur de fin est de : %valfin2%
if %tpsrestant% <= 1 goto fin else goto routine
echo Presse une touche %username%
Pause>nul

:amortissementconstant
rem formule mathematique amortissement constant
set :a interet=%mtt%*(%tx%/100)
echo Le montant des interets est de : %interet%
set /a amortconst=%mtt%/%d%
Echo L'amortissement constant est de : %amortconst%
Set /a annuite=%amortconst%+%interet%
echo Le montant de l'annuite est de : %annuite%
set / a Valfin=%mtt%-%amortconst%
echo Le montant de la valeur de fin est de : %valfin%
echo Presse une touche %username%
Pause>nul

:routine2
rem la routine permet de faire le calcul sur la duree total de l'emprunt
rem calcul de la periodicite
set /a tpsrestant=%d%-1
set /a amortann=%calannuite%-%interet%
echo Le montant des interets est de : %amortann%
echo Le montant de l'annuite constante est de : %calannuite%
set /a valfin2=%valfin%-(%calannuite%-%interet%)
echo La valeur de fin est de : %valfin2%
if %tpsrestant% <= 1 goto fin else goto routine2
echo Presse une touche %username%
Pause>nul

:fin
echo Le Calcul est termine %username%




Il n'est pas parfait car je n'obtiens pas ce que je recherche, à savoir :

Afficher le résultat dans un notepad, mais avec le détail mensuel. => je n'ai pas mis le notepad pour l'instant car je n'obtiens pas de résultat concluant avec les routines. Celles-ci doivent fonctionner mais l'affichage me laisse perplexe.
Je sais que le batch ne gère pas la virgule.
Une erreur m'indique qu'il me manque une parenthèse.
J'ai supposé cette fonction mathématique => exp pour exposant.
J'ai fais un simili de présentation, façon labougie.
J'ai inclus la date, le nom à plusieurs reprise.

Merci pour vos conseils, et je suis preneur d'exercices bien que cette bible ne soit toujours pas finie Rolling Eyes .
Le boulot plus les ados à gérer, ce n'est pas toujours simple. Rolling Eyes

Labougie

Message Publicité 
PublicitéSupprimer les publicités ?


Répondre en citant
Message [Formation]Labougie 
Bonjour
tu ne commences pas vraiement par la facilité Laughing pour un premier code, bravo.

labougie a écrit:


Afficher le résultat dans un notepad, mais avec le détail mensuel. => je n'ai pas mis le notepad pour l'instant car je n'obtiens pas de résultat concluant avec les routines. Celles-ci doivent fonctionner mais l'affichage me laisse perplexe.

Obtiens tu ? faire une capture d'ecran si possible

Citation:

Je sais que le batch ne gère pas la virgule.

Une erreur m'indique qu'il me manque une parenthèse.
J'ai supposé cette fonction mathématique => exp pour exposant.

J en'ai jamais fait de calcul avec set /A compliqué mais il me semble que exp (exposant) n'existe pas en batch.... elle existe en C.
Batch_Man confirmera.


Pour les calculs, le batch ne gère pas les nombres à virgules que les nombres entiers
ainsi :
Code:
@echo off
set /a resultat=9/2
::ne donnerai jamais 4,5 mais 4.
echo %resultat%
pause



Citation:
J'ai fais un simili de présentation, façon labougie.
J'ai inclus la date, le nom à plusieurs reprise.

Ce sont des variables d'environnements donc normal que tu les répètes souvant par si c'est toujours la même phrase tu peux créer sa propre variable.

Citation:

Merci pour vos conseils, et je suis preneur d'exercices bien que cette bible ne soit toujours pas finie Rolling Eyes .
Le boulot plus les ados à gérer, ce n'est pas toujours simple. Rolling Eyes

Labougie


Il y a une erreur ou des erreurs dans ton label entree, en effet tu demandes de faire un choix à l'utilisateur et tu utilises set /a qui est pour réaliser des calculs.
Il ne faut pas utiliser set /a
Quel est le set /commutateur que tu dois utiliser pour faire la saisie de l'utilisateur ?

Exercice :

Corriger ton label entrer.. Sad apprentissage sur la création d'un menu)



Je ne sais pas si ton projet est réalisable dans ce cas...



Dernière édition par Laddy le Jeu 2 Juil 2009 - 08:23; édité 1 fois

______________________________________________________
Faites paraitre votre batch sur BatchClipboard
Visiter le site web du posteur
Répondre en citant
Message [Formation]Labougie 
Bonjour,

Il n'y à pas de différence entre Systemroot et WINDIR, comme tu le vois la casse ne compte pas.

Les exposants n'existent pas en batch, du moins avec une commande externe Wink

Batch_Man




______________________________________________________
La sécurité informatique et vous ! = http://batchdhelus.open-web.fr
Répondre en citant
Message [Formation]Labougie 
Bonsoir Laddy,

Citation:

Il y a une erreur ou des erreurs dans ton label entree, en effet tu demandes de faire un choix à l'utilisateur et tu utilises set /a qui est pour réaliser des calculs.
Il ne faut pas utiliser set /a
Quel est le set /commutateur que tu dois utiliser pour faire la saisie de l'utilisateur ?


set a est remplacé set p

Ajout color,
d'un choix pour le type d'amortissement
le programme se déroule jusqu'au bout maintenant.

l'erreur de calcul de la virgule dans le batch n'est pas solutionnable. ( normal )

rajout de la variable utilisateur.

Reste plus qu'a mettre tout dans un fichier txt.

Que penses tu de cette nouvelle mouture ?


Code:


@echo off
color 1e
Rem Explication de ce que fais le batch
echo .
echo .
echo      Voici un programme pour calculer vos remboursements d'emprunts
echo .
echo .
echo      ----- Made by labougie -----
echo .
set /p nom=Quel est ton nom:
set /p prenom=Quel est ton prenom:
echo Presse une touche Stp %prenom%
Pause>nul
cls
rem saisie des donnees necessaire pour l'execution du batch
echo Tout d'abord il faut me fournir les donnees suivantes :
echo .
echo .

:entree
set /p mtt=Montant Total de l'emprunt :
set /p TX=taux de l'emprunt ( pour 4.5  ) taper 4.5 :
set /p d=duree en mois ( une annee = 12 mois ):
echo .
echo .
rem choix du type de remboursement
echo Pour une annuite constante choisir  1
echo Pour un amortissement constant choisir  2
echo Les annuites constantes sont pour les particuliers
echo Les amortissements constants sont pour les entreprises
echo.
echo.
set /p choix=choix:
if %choix% equ "1" and goto annuite else goto amortissement
echo .
echo .
echo Presse une touche %prenom%
Pause>nul
rem calcul du mode pour annuite constante

:annuite
cls
echo Voici le calcul de remboursement de ton emprunt %prenom% %nom% le %date%
echo Le montant de l'emprunt est de %mtt% Euros
echo Le taux est %tx%
echo La duree est de %d% mois
echo Presse une touche %prenom%
Pause>nul
rem formule mathematique annuite constante

:annuiteconstante
Echo Version Annuitees Constantes
set /a Calannuite=((%mtt%*(%tx%/100)))/(1-(1+%tx%)(exp-%d%))
echo le montant de l'annuite est de %calannuite%
set /a interet=%mtt%*(%tx%/100)
echo le montant des interets est de : %interet%
set /a amortann=%calannuite%-%interet%
echo Le mantant des amortissements : %amortann%
set /a valfin=%mtt%-%amortann%
echo La valeur de fin est de : %valfin%
echo Presse une touche %prenom%
Pause>nul

:routine
rem la routine permet de faire le calcul sur la duree total de l'emprunt
rem calcul de la periodicite
set /a tpsrestant=%d%-1
set /a interet=%mtt%*(%tx%/100)
echo Le montant des interets est de : %interet%
set /a amortann=%calannuite%-%interet%
echo Le montant des interets est de : %amortann%
echo Le montant de l'annuite constante est de : %calannuite%
set /a valfin2=%valfin%-(%calannuite%-%interet%)
echo La valeur de fin est de : %valfin2%
if %tpsrestant% leq 1 goto fin else goto routine
echo Presse une touche %prenom%
Pause>nul

:amortissementconstant
rem formule mathematique amortissement constant
Echo Version Amortissement Constant
set :a interet=%mtt%*(%tx%/100)
echo Le montant des interets est de : %interet%
set /a amortconst=%mtt%/%d%
Echo L'amortissement constant est de : %amortconst%
Set /a annuite=%amortconst%+%interet%
echo Le montant de l'annuite est de : %annuite%
set /a Valfin=%mtt%-%amortconst%
echo Le montant de la valeur de fin est de : %valfin%
echo Presse une touche %prenom%
Pause>nul

:routine2
rem la routine permet de faire le calcul sur la duree total de l'emprunt
rem calcul de la periodicite
set /a tpsrestant=%d%-1
set /a amortann=%calannuite%-%interet%
echo Le montant des interets est de : %amortann%
echo Le montant de l'annuite constante est de : %calannuite%
set /a valfin2=%valfin%-(%calannuite%-%interet%)
echo La valeur de fin est de : %valfin2%
if %tpsrestant% leq 1 goto fin else goto routine2
echo Presse une touche %prenom%
Pause>nul

:fin
echo Le Calcul est termine %prenom%



labougie



Répondre en citant
Message [Formation]Labougie 
Bonjour

utilise la balise CODE et aère ton code surtout lorsque tu utilises des labels.
Il s'agit bien de la commande set /P pour demander la saisie de l'utilisateur.

ensuite ton code chez moi ne fonctionne pas.

Si j'entre le choix 2 , il met le choix 1 et enchaine le reste, l'affichage n'est pas aéré à l'écran.

Code:

rem choix du type de remboursement
echo Pour une annuite constante choisir  1
echo Pour un amortissement constant choisir  2
echo Les annuites constantes sont pour les particuliers
echo Les amortissements constants sont pour les entreprises
echo.
echo.
set /p choix=choix:
if %choix% equ "1" and goto annuite else goto amortissement


Essaie de corriger ton menu pour que les actions s'enchaîne, correctement.


Une solution possible, à ne regarder que si tu trouves pas.

Schéma de Menu :


Code:

echo 1. blablabla
echo 2. blabla
set /p choix=Question ? :
if /i %choix%==x goto (label)



Les calculs ne sont pas effectués, il y a toujours un problème de parenthèse, à un moment donné dans le code.
Les informations données dans le sujet précédent, notamment au niveau de exposant n'a pas été pris en compte.

Je pense que dans ce code tu as acquis les connaissances sur les commandes :

Citation:
echo
color
rem
set /a
set /p
goto
L'utilisation des variables


As tu compris le schéma du menu ?




______________________________________________________
Faites paraitre votre batch sur BatchClipboard
Visiter le site web du posteur
Répondre en citant
Message [Formation]Labougie 
Bonjour Laddy,

Pour le moment, je ne regardes pas ta solution, mon but est de trouvé seul, mon cerveau ne fonctionne pas beaucoup, je dois le mettre à l'épreuve. Je n'ai pas dis que je trouverai la solution Mr. Green

Citation:

As tu compris le schéma du menu ?


Qu'appels tu le schéma du menu ?
Serait ce les choix de début de batch ?

Citation:

if %choix% equ "1" and goto annuite else goto amortissement


La réponse idéal est celle-ci.

if %choix% < 1 and if %choix% < 2 goto annuite else goto amortissement

Le problème est que la commande " and " est soit non opérationnelle soit inconnu du batch, car cette solution est la seule envisageable.
Car si %choix% est inf strict à 1 et inf strict à 2 cela sera toujours annuite, si ce résultat est différent le goto envoie vers amortissement.

Je viens d'imprimer 2 autres bibles trouves sur devellopez.com
Faq windows batch et la ligne de commande windows et fichiers batch

cela me fait encore beaucoup de lecture, si tu avait une explication courte sur la commande " and ", du style mauvaise synthaxe ou tout simplement doesn't exist ( mais la derniere me surprendrais ).

Si j'ai bon souvenir les commandes and or xor sont bien des opérateur de " critères " pour faire des tests. Mais sont ils compatible en batch ?

Le problème des parenthèses :

parfois dans les batchs l'on trouve des lignes comme celles-ci.

)

(

)

A quoi correspondent ces parenthèses, serait là mon problème.

Je regarde dans l'AM pour te refaire quelque chose du plus aéré, voir avec plus de couleur.

Dés que cet exo sera terminé, propose moi un éxo sur ce que tu souhaites, peux importe le sujet.

labougie



Répondre en citant
Message [Formation]Labougie 
Citation:

La réponse idéal est celle-ci.

if %choix% < 1 and if %choix% < 2 goto annuite else goto amortissement

Le problème est que la commande " and " est soit non opérationnelle soit inconnu du batch, car cette solution est la seule envisageable.
Car si %choix% est inf strict à 1 et inf strict à 2 cela sera toujours annuite, si ce résultat est différent le goto envoie vers amortissement.

Non, and n'existe pas...
il faut entourer déjà les informations avec des parenthèses.

if /i %choix%==1 (goto annuite)
else (goto amortissement)

je ne fais jamais mes menus ainsi


Citation:

Qu'appels tu le schéma du menu ?
Serait ce les choix de début de batch ?

je parle de la solution pour réaliser le menu

Citation:

Le problème des parenthèses :

parfois dans les batchs l'on trouve des lignes comme celles-ci.

)

(

)

A quoi correspondent ces parenthèses, serait là mon problème.

ça dépend du code, cela peut etre ouverture/fermeture de différentes boucle for qui sont misese à la ligne pour plus d'esthétisme

Par contre pour qu'une parenthèse soit prise en compte il faut parfois mettre le caractère d'échappement (exemple^), peut être est ce la solution à ton problème mais je pense que c'est plutot ton exp qui traine dans ton opération.




______________________________________________________
Faites paraitre votre batch sur BatchClipboard
Visiter le site web du posteur
Répondre en citant
Message [Formation]Labougie 
Bonjour Laddy, Batch_Man,

J'ai terminé ma lecture, et, évidemment il à des infos que je ne comprends pas.

La boucle for avec ces différentes itérations, je pense que cela est dû au fait que je ne comprends pas cela aussi :
%1; %2; %3 => %9

par exemple => if %1 etc...

ce %1 correspond à quoi exactement. => cela est ma plus grosse difficultée, ( pour pouvoir accéder à la boucle for )

J'ai noté que pour cette commande il faut %%variable%%, que pour d'autres c'est %%variable.


@ Laddy,

concernant mon exercice et la commande "and", en lisant une autre bible, l'on fait par de ce truc "&", qui lui aussi pourrait convenir.

Citation:

je ne fais jamais mes menus ainsi


Citation:

Qu'appels tu le schéma du menu ?
Serait ce les choix de début de batch ?


je parle de la solution pour réaliser le menu


Je suis désolé laddy mais je ne sais pas ce que tu nommes un menu? Je ne comprends pas le mot menu dans mon programme. Cela correspond à quelle partie stp ?
Merci de m'éclairer.

labougie



Répondre en citant
Message [Formation]Labougie 
Bonjour Laddy, Labougie,

Labougie dans un batch %1 %2 %3 %4 %5 %6 %7 %8 %9 sont des paramètres.

Exemple:

Dans un batch écrit ceci:

Citation:
@ECHO OFF

ECHO %1

PAUSE


Tu l'enregistres sur le Bureau et tu glisses un fichier sur le Batch. Que constates tu ?

---------------------------

Le caractère & permet de marquer plusieurs action sur la même ligne, exemple:
Citation:

@ECHO OFF

:MENU
CLS
ECHO 1. Dire bonjour
ECHO 2. Dire salut

SET /P REP=Rentrez 1 ou 2:
IF %REP% EQU 1 ECHO Bonjour &GOTO FIN
IF %REP% EQU 2 ECHO Salut &GOTO FIN
GOTO MENU

:FIN
ECHO. &ECHO C'est la fin.
PAUSE


Explication:

Je demande de rentrer un chiffre, si le chiffre est 1 ECHO Bonjour et partir au label fin
si le chiffre est 2 ECHO Salut et partir au label fin.
GOTO MENU Permet, en cas de faute de frappe de revenir au menu.

Au label :FIN Je saute une ligne avec ECHO. ET Je marque C'est la fin.
Puis je marque une pause.

Laddy répondra a la question Wink

Batch_Man




______________________________________________________
La sécurité informatique et vous ! = http://batchdhelus.open-web.fr
Répondre en citant
Message [Formation]Labougie 
Bonjour Batch_Man,

Citation:

Dans un batch écrit ceci:

Citation:
@ECHO OFF

ECHO %1

PAUSE


J'ai glissé un fichier txt sur le batch ci-dessus, la chose que le batch me donne, c'est l'emplacement de mon fichier txt.
A savoir => c:\ users \ desktop \ fichier.txt

Quel(s) est (sont) le(s) intéret(s) de cette fonction ?

Citation:

:FIN
ECHO. &ECHO C'est la fin.
PAUSE


Ici quel est l'intéret de la pause ?

labougie



Répondre en citant
Message [Formation]Labougie 
labougie a écrit:


@ Laddy,

concernant mon exercice et la commande "and", en lisant une autre bible, l'on fait par de ce truc "&", qui lui aussi pourrait convenir.

Citation:

je ne fais jamais mes menus ainsi


Citation:

Qu'appels tu le schéma du menu ?
Serait ce les choix de début de batch ?


je parle de la solution pour réaliser le menu


Je suis désolé laddy mais je ne sais pas ce que tu nommes un menu? Je ne comprends pas le mot menu dans mon programme. Cela correspond à quelle partie stp ?
Merci de m'éclairer.

labougie


quand tu demandes à un utilisateur de faire un choix entre différentes propositions que tu affiches à l'écran c'est ce que je nomme un menu et cela fait reférence à la partie que j'ai demandé de modifier.

Pour réaliser un "menu" ou une "saisie de choix"
tu as deux possiblités :

utiliser la commande CHOICE qui est sous windows xp une commande externe
ou
utiliser if /i %choix%==numero goto label


Dans ton code de calcul tu utilises si ton choix est égal à 1 alors goto label sinon goto label
Dans certaines syntaxes il faut obligatoire mettre des parenthèses.

Correction :
code non corrigé je ne suis pas chez moi


Code:


if %choix%==1 (goto annuite)  else (goto amortissement)


mais tu peux aussi réaliser ce style

Code:

echo 1. une annuite constante
echo 2. Pour un amortissement constant

echo Les annuites constantes sont pour les particuliers
echo Les amortissements constants sont pour les entreprises
echo.
echo.

set /P choix= [Enter votre choix]

if %choix%==1 goto annuite
if %choix%==2 goto amortissement




il aurait été judicieux avant de commencer autre chose, de finir ton code et le rendre à 100%fonctionnel Wink
de corriger exp qui n'existe pas en batch ni les chiffres à virgules.

Citation:

Quel(s) est (sont) le(s) intéret(s) de cette fonction ?

Citation:

:FIN
ECHO. &ECHO C'est la fin.
PAUSE



Ici quel est l'intéret de la pause ?

de voir ce qui est affiché l'écran avant de fermer la fenêtre

modifie en mettant @exit voir ce qui se passe.




______________________________________________________
Faites paraitre votre batch sur BatchClipboard
Visiter le site web du posteur
Répondre en citant
Message [Formation]Labougie 
Bonjour Laddy,

je viens de réaliser des modifications avant que tu post aujourd'hui.

Voici mon résultat,

@echo off
title Calcul Emprunt par Labougie
color 1e
Rem Explication de ce que fais le batch
echo .
echo .
echo Voici un programme pour calculer vos remboursements d'emprunts
echo .
echo .
echo ----- Made by labougie -----
echo .
set /p nom=Quel est ton nom:
set /p prenom=Quel est ton prenom:
echo Presse une touche Stp %prenom%
echo. >> c:\fichier.txt
Pause>nul
cls
rem saisie des donnees necessaire pour l'execution du batch
echo Tout d'abord il faut me fournir les donnees suivantes :
echo .
echo .
:entree
set /p mtt=Montant Total de l'emprunt :
set /p TX=taux de l'emprunt ( pour 4.5 ) taper 4.5 :
set /p d=duree en mois ( une annee = 12 mois ):
echo .
echo .
:question
rem choix du type de remboursement
echo Pour une annuite constante choisir 1
echo Pour un amortissement constant choisir 2
echo Les annuites constantes sont pour les particuliers
echo Les amortissements constants sont pour les entreprises
echo.
echo.
set /p choix=choix:
if %choix% lss 1 goto question
if %choix%==1 goto annuite
if %choix%==2 goto amortissementconstant
if %choix% gtr 2 goto question
echo .
echo .
echo Presse une touche %prenom%
Pause>nul
rem calcul du mode pour annuite constante
:annuite
color b0
cls
echo Voici le calcul de remboursement de ton emprunt %prenom% %nom% le %date%
echo Le montant de l'emprunt est de %mtt% Euros
echo Le taux est %tx%
echo La duree est de %d% mois
echo Presse une touche %prenom%
Pause>nul
rem formule mathematique annuite constante
:annuiteconstante
Echo Version Annuitees Constantes
set /a Calannuite=((%mtt%*(%tx%/100)))/(1-(1+%tx%)(exp-%d%))
echo le montant de l'annuite est de %calannuite%
set /a interet=(%mtt%*(%tx%/100))
echo le montant des interets est de : %interet%
set /a amortann=%calannuite%-%interet%
echo Le mantant des amortissements : %amortann%
set /a valfin=%mtt%-%amortann%
echo La valeur de fin est de : %valfin%
echo Presse une touche %prenom%
Pause>nul
:routine
rem la routine permet de faire le calcul sur la duree total de l'emprunt
rem calcul de la periodicite
set /a d=%d%-1
set /a tpsrestant=%d%
set /a interet=(%mtt%*(%tx%/100))
echo Le montant des interets est de : %interet%
set /a amortann=%calannuite%-%interet%
echo Le montant des amortissements sont de : %amortann%
echo Le montant de l'annuite constante est de : %calannuite%
set /a valfin2=%valfin%-(%calannuite%-%interet%)
echo La valeur de fin est de : %valfin2%
if %tpsrestant% gtr 0 goto routine
goto fin
echo Presse une touche %prenom%
Pause>nul
:amortissementconstant
color f0
rem formule mathematique amortissement constant
Echo Version Amortissement Constant
set /a interet=(%mtt%*(%tx%/100))
echo Le montant des interets est de : %interet%
set /a amortconst=%mtt%/%d%
Echo L'amortissement constant est de : %amortconst%
Set /a annuite=%amortconst%+%interet%
echo Le montant de l'annuite est de : %annuite%
set /a Valfin=%mtt%-%amortconst%
echo Le montant de la valeur de fin est de : %valfin%
echo Presse une touche %prenom%
Pause>nul
:routine2
rem la routine permet de faire le calcul sur la duree total de l'emprunt
rem calcul de la periodicite
cls
set /a d=%d%-1
set /a tpsrestant=%d%
set /a amortann=%calannuite%-%interet%
echo Le montant des interets est de : %amortann%
echo Le montant de l'annuite constante est de : %calannuite%
set /a valfin2=%valfin%-(%calannuite%-%interet%)
echo La valeur de fin est de : %valfin2%
if %tpsrestant% gtr 0 goto routine2
goto fin
echo Presse une touche %prenom%
Pause>nul
:fin
echo Le Calcul est termine %prenom%



J'ai réglé beaucoup de problèmes, notamment dans le menu.
Le programme se déroule jusqu'à son terme.
Les parenthèses manquantes pas encore solutionné, mais je pense que c'est EXP qui me met la pagaille, je regarderai plus demain.

/!\ je pas encore regardé tes 2 solutions proposées.

un nouveau défi est pour moi d'inculre les résultats dans un fichier txt avec la commande ">>".
Sous vista je suis obligé de faire fonctionner le batch en mode admin, mais hélas le fichier ne s'ecrit pas sous c:\fichier.txt avec les données du menu.
Mais avec echo est désactivée
Sous vista si l'on lance le batch en mode non admin, pourtant sur une session admin, il y a une erreur au niveau de l'ecriture sur c:\ => comment contourner cette difficultée.

Quelle est la valeur de cette interupteur / i dans cette commande; car je ne trouve pas de lecture sur le sujet.
utiliser if /i %choix%==numero goto label

Merci à toi laddy.

labougie



Répondre en citant
Message [Formation]Labougie 
Je n'ai pas regardé ton code.

1. manque la balise code ou quote (permet de suivre les modifications si il y a des changements en y mettant une couleur)
2. le code n'est pas aéré

Je le regarderai lundi matin.

Déjà dit : exp N'EXITE PAS !

Je n'ai pas vista, Batch_Man pourra peut être mieux te répondre.
Désactive UAC peut etre.

Pour le commutateur /i :

il est pratique si tu n'utilises pas de chiffres mais des lettres.
/i permet de me pas différencier les majuscules et minuscule lors de la saisie de l'utilisateur.


tester ces deux codes avec /i et sans /i

Citation:
@echo off

echo A. Quel est mon prénom ?
echo B. Quel est mon Nom

set /p toto= [Quel est ton choix ] ? :

rem /i permet de me pas différencier les majuscules et minuscule lors de la saisie de l'utilisateur.
rem saisie a ou A il ne voit pas la différence


if /i %toto%==A goto prenom
if /i %toto%==B goto pseudo

:prenom
echo Carine
pause
goto fin

:pseudo
echo Laddy
pause
goto fin

:fin
@exit



Citation:
@echo off

echo A. Quel est mon prénom ?
echo B. Quel est mon Nom

set /p toto= [Quel est ton choix ] ? :

rem saisie a OU A ça ne fonctionnera pas
if %toto%==A goto prenom
if /%toto%==B goto pseudo

:prenom
echo Carine
pause
goto fin

:pseudo
echo Laddy
pause
goto fin

:fin
@exit





______________________________________________________
Faites paraitre votre batch sur BatchClipboard
Visiter le site web du posteur
Répondre en citant
Message [Formation]Labougie 
Bonjour Laddy,

Citation:

1. manque la balise code ou quote (permet de suivre les modifications si il y a des changements en y mettant une couleur)


Si je te comprends bien, pour plus de facilité tu souhaites voir d'un 1 er coup d'oeil les modifications, c'est normal.
Désolé, d'avoir envoyé mon batch comme cela. La prochaine fois je ferais attention.

Citation:

2. le code n'est pas aéré


J'ai inséré des interlignes, espèrant que cela laissera le code se dérouler tout logiquement.

3/ tes corrections

j'ai regardé tes corrections, mais je ne l'ai pas suivi pour ce qui est dessous.
je vais les étudier notemment if /i


le batch

EDIT LADDY
Citation:

@echo off
title Calcul Emprunt par Labougie
color 1e
Rem Explication de ce que fais le batch
echo .
echo .
echo Voici un programme pour calculer vos remboursements d'emprunts
echo .
echo .
echo ----- Made by labougie -----

echo .
set /p nom=Quel est ton nom:
set /p prenom=Quel est ton prenom:
echo Presse une touche Stp %prenom%
echo. >> c:\fichier.txt
Pause>nul

cls
rem saisie des donnees necessaire pour l'execution du batch
echo Tout d'abord il faut me fournir les donnees suivantes :
echo .
echo .

:entree
set /p mtt=Montant Total de l'emprunt :
set /p TX=taux de l'emprunt ( pour 4.5 ) taper 4.5 :
set /p d=duree en mois ( une annee = 12 mois ):
echo .
echo .

:question
rem choix du type de remboursement
echo Pour une annuite constante choisir 1
echo Pour un amortissement constant choisir 2
echo Les annuites constantes sont pour les particuliers
echo Les amortissements constants sont pour les entreprises
echo.
echo.
Rem Toutes les reponses au choix sont etudies
rem si inf stric 1 alors retour à la question
rem si = 1 alors etape suivante
rem si = 2 alors etape suivante
rem si sup strict 2 alors retour à la question

set /p choix=choix:
if %choix% lss 1 goto question
if %choix%==1 goto annuite
if %choix%==2 goto annuite
if %choix% gtr 2 goto question


echo .
echo .
echo Presse une touche %prenom%
Pause>nul

rem calcul du mode pour annuite constante
:annuite
color b0
cls
echo Voici le calcul de remboursement de ton emprunt %prenom% %nom% le %date%
echo .
echo Le montant de l'emprunt est de %mtt% Euros
echo .
echo Le taux est %tx%
echo .
echo La duree est de %d% mois
echo .
echo Presse une touche %prenom%
Pause>nul
if %choix%==1 goto annuiteconstante
if %choix%==2 goto amortissementconstant

rem formule mathematique annuite constante
:annuiteconstante

echo.
Echo Version Annuitees Constantes
echo .
set /a Calannuite=((%mtt%*(%tx%/100)))/(1-(1+%tx%))
echo le montant de l'annuite est de %calannuite%
echo .
set /a interet=(%mtt%*(%tx%/100))
echo le montant des interets est de : %interet%
echo .
set /a amortann=%calannuite%-%interet%
echo Le mantant des amortissements : %amortann%
echo .
set /a valfin=%mtt%-%amortann%
echo La valeur de fin est de : %valfin%
echo .
echo Presse une touche %prenom%
set /a d=%d%-1
Pause>nul

:routine
rem la routine permet de faire le calcul sur la duree total de l'emprunt
rem calcul de la periodicite
set /a d=%d%-1
set /a tpsrestant=%d%
set /a interet=(%mtt%*(%tx%/100))
echo Le montant des interets est de : %interet%
set /a amortann=%calannuite%-%interet%
echo .
echo Le montant des amortissements sont de : %amortann%
echo .
echo Le montant de l'annuite constante est de : %calannuite%
echo .
set /a valfin2=%valfin%-(%calannuite%-%interet%)
echo La valeur de fin est de : %valfin2%
echo .
echo .
if %tpsrestant% gtr 0 goto routine
goto fin
echo Presse une touche %prenom%
echo .
Pause>nul

:amortissementconstant

color f0
cls
rem formule mathematique amortissement constant
echo .
Echo Version Amortissement Constant
echo .
set /a interet=(%mtt%*(%tx%/100))
echo Le montant des interets est de : %interet%
echo .
set /a amortconst=%mtt%/%d%
Echo L'amortissement constant est de : %amortconst%
echo .
Set /a annuite=%amortconst%+%interet%
echo Le montant de l'annuite est de : %annuite%
echo .
set /a Valfin=%mtt%-%amortconst%
echo Le montant de la valeur de fin est de : %valfin%
echo .
echo Presse une touche %prenom%
echo .
Pause>nul

:routine2
rem la routine permet de faire le calcul sur la duree total de l'emprunt
rem calcul de la periodicite
set /a d=%d%-1
set /a tpsrestant=%d%
set /a amortann=%calannuite%-%interet%
echo Le montant des interets est de : %amortann%
echo .
echo Le montant de l'annuite constante est de : %calannuite%
echo .
set /a valfin2=%valfin%-(%calannuite%-%interet%)
echo La valeur de fin est de : %valfin2%
echo .
if %tpsrestant% gtr 0 goto routine2
goto fin
echo .
echo Presse une touche %prenom%
echo .
Pause>nul
:fin
echo Le Calcul est termine %prenom%


les modifications:


les parenthèses ont été supprimées, elles étaient dûent à l'exposant.

title Calcul Emprunt par Labougie
color 1e => pour la fenêtre principale
color bo => pour les annuités constantes
color fo => pour les amortissements constants

echo. >> c:\fichier.txt => non fonctionnel pour l'instant /!\ vista faire en mode admin pour que le batch fonctionne, inscription dans le fichier sous c:\ mais avec le commentaire suivant "echo est désactivé"



:question Voici les modifications. Cette fois ci toutes les combinaisons fonctionnent.

set /p choix=choix:
if %choix% lss 1 goto question
if %choix%==1 goto annuite
if %choix%==2 goto amortissementconstant
if %choix% gtr 2 goto question

Modification de la routine, pour qu"elle revienne au début du calcul, puis par décrémentation s'arrête
set /a d=%d%-1
set /a tpsrestant=%d%
if %tpsrestant% gtr 0 goto routine

:annuite => ajout de critèeres de selection pour les routines afin que ce résultat s'affiche pour les routines, ne s'affichait que pour annuite et pas amortissement

if %choix%==1 goto annuiteconstante
if %choix%==2 goto amortissementconstant

ici cela engendre un clique supplémentaire lorsque l'on a choisi "2" au départ, donc apparition de la fenêtre annuité puis clique sur entrée comme demandé et tu va directement sur amortissement.
C'est un bug de formule




labougie



Répondre en citant
Message [Formation]Labougie 
Bonjour

J'ai mis des corrections dans ton code
Sauter une ligne pour aérer son code n'empeche en rien le batch de se dérouler.

Tu t'emmêles un peu avec la redirection vers les bons labels.
A aucun moment tu renvoies un calcul ou routine vers une fin ? goto fin ou autre ?
le batch du coup calcule tout les labels dans ton code.




Citation:

@echo oN
title Calcul Emprunt par Labougie
color 1e
Rem Explication de ce que fais le batch
echo .
echo .
echo Voici un programme pour calculer vos remboursements d'emprunts
echo .
echo .
echo ----- Made by labougie -----

echo .
set /p nom=Quel est ton nom:
set /p prenom=Quel est ton prenom:
echo Presse une touche Stp %prenom%
echo. >> c:\fichier.txt
Pause>nul

cls
rem saisie des donnees necessaire pour l'execution du batch
echo Tout d'abord il faut me fournir les donnees suivantes :
echo .
echo .

:entree
set /p mtt=Montant Total de l'emprunt :
set /p TX=taux de l'emprunt ( pour 4.5 ) taper 4.5 :
set /p d=duree en mois ( une annee = 12 mois ):
echo .
echo .

:question
rem choix du type de remboursement
echo Pour une annuite constante choisir 1
echo Pour un amortissement constant choisir 2
echo Les annuites constantes sont pour les particuliers
echo Les amortissements constants sont pour les entreprises
echo.
echo.
Rem Toutes les reponses au choix sont etudies
rem si inf stric 1 alors retour à la question
rem si = 1 alors etape suivante
rem si = 2 alors etape suivante
rem si sup strict 2 alors retour à la question

set /p choix=choix:
if %choix% lss 1 goto question
if %choix%==1 goto annuite
REM LE CHOIX s'effectue sur la demande du dessus donc annuite constante ou amortissement constant
if %choix%==2 goto amortissementconstant
if %choix% gtr 2 goto question

echo .
echo .
echo Presse une touche %prenom%
Pause>nul

rem calcul du mode pour annuite constante
:annuite
color b0
cls
echo Voici le calcul de remboursement de ton emprunt %prenom% %nom% le %date%
echo .
echo Le montant de l'emprunt est de %mtt% Euros
echo .
echo Le taux est %tx%
echo .
echo La duree est de %d% mois
echo .
echo Presse une touche %prenom%
Pause>nul
REM IL FAUT LE REDIRIGER VERS QUELQUE PART SINON IL CONTINUE VERS ANNUITECONSTANCE

REM GOTO ROUTINE 2 ?



REM ------------- POURQUOI UN choix tu ne poses pas de question set /p ?------------
REM if %choix%==1 goto annuiteconstante
REM if %choix%==2 goto amortissementconstant
REM -----------------------------------------------------------------------------




rem formule mathematique annuite constante
:annuiteconstante

echo.
Echo Version Annuitees Constantes
echo .
set /a Calannuite=((%mtt%*(%tx%/100)))/(1-(1+%tx%))
echo le montant de l'annuite est de %calannuite%
echo .
set /a interet=(%mtt%*(%tx%/100))
echo le montant des interets est de : %interet%
echo .
set /a amortann=%calannuite%-%interet%
echo Le mantant des amortissements : %amortann%
echo .
set /a valfin=%mtt%-%amortann%
echo La valeur de fin est de : %valfin%
echo .
echo Presse une touche %prenom%
set /a d=%d%-1
Pause>nul

:routine
rem la routine permet de faire le calcul sur la duree total de l'emprunt
rem calcul de la periodicite
set /a d=%d%-1
set /a tpsrestant=%d%
set /a interet=(%mtt%*(%TX%/100))
echo Le montant des interets est de : %interet%
set /a amortann=%calannuite%-%interet%
echo .
echo Le montant des amortissements sont de : %amortann%
echo .
echo Le montant de l'annuite constante est de : %calannuite%
echo .
set /a valfin2=%valfin%-(%calannuite%-%interet%)
echo La valeur de fin est de : %valfin2%
echo .
echo .
if %tpsrestant% gtr 0 goto routine
goto fin
echo Presse une touche %prenom%
echo .
Pause>nul

:amortissementconstant

color f0
cls
rem formule mathematique amortissement constant
echo .
Echo Version Amortissement Constant
echo .
set /a interet=(%mtt%*(%tx%/100))
echo Le montant des interets est de : %interet%
echo .
set /a amortconst=%mtt%/%d%
Echo L'amortissement constant est de : %amortconst%
echo .
Set /a annuite=%amortconst%+%interet%
echo Le montant de l'annuite est de : %annuite%
echo .
set /a Valfin=%mtt%-%amortconst%
echo Le montant de la valeur de fin est de : %valfin%
echo .
echo Presse une touche %prenom%
echo .
Pause>nul

:routine2
rem la routine permet de faire le calcul sur la duree total de l'emprunt
rem calcul de la periodicite
set /a d=%d%-1
set /a tpsrestant=%d%
set /a amortann=%calannuite%-%interet%
echo Le montant des interets est de : %amortann%
echo .
echo Le montant de l'annuite constante est de : %calannuite%
echo .
set /a valfin2=%valfin%-(%calannuite%-%interet%)
echo La valeur de fin est de : %valfin2%
echo .
if %tpsrestant% gtr 0 goto routine2
goto fin
echo .
echo Presse une touche %prenom%
echo .
Pause>nul
:fin
echo Le Calcul est termine %prenom%








Sur mon PC tous les calculs ne passe passe je suis obligé de separer les calculs pour obtenir un résultat
Exemple :
Code:
set /a Calannuite=1000*(5%100)
SET /a somme=(1-(1+5))
set /a annuite= ("%Calannuite%"^)/("%somme%")
echo %annuite%

reste à remplacer par tes variables et là c'est aussi prise de tête car il s'agit de variables et il faut faire attention qu'elles soient prises en compte.
Je t'avouerai que faute de temps je n'ai pas remplacé les valeurs

edit j ai pu le faire

Code:

set /a Calannuite="%mtt%"*"%TX%"/100
SET /a somme=(1-(1+"%TX%"))
set /a annuite= ("%Calannuite%"^)/("%somme%")
echo %annuite%


edit : gestion des virgules peut être une solution dans ce code source : http://batch.xoo.it/t628-Calculer-un-prix-TTC.htm




______________________________________________________
Faites paraitre votre batch sur BatchClipboard
Visiter le site web du posteur
Répondre en citant
Message [Formation]Labougie 
Bonjour Labougie, Laddy,

Le %1 est un paramètre, ça permet par exemple de récupérer le nom d'un fichier:

FOR %%A IN (C:\Dossier\fichier.txt) DO ECHO %%~NA

Je cite:

Citation:
De plus, la substitution de r‚f‚rences de variables FOR a ‚t‚ am‚lior‚e.
Vous pouvez maintenant utiliser la syntaxe optionnelle suivanteÿ:

%~I - ‚tend %I en supprimant les guillemets (")
%~fI - ‚tend %I en nom de chemin d'accŠs reconnu
%~dI - ‚tend %I en lettre de lecteur uniquement
%~pI - ‚tend %I en chemin d'accŠs uniquement
%~nI - ‚tend %I en nom de fichier uniquement
%~xI - ‚tend %I en extension de fichier uniquement
%~sI - chemin ‚tendu contenant uniquement des noms courts
%~aI - ‚tend %I en attributs du fichier
%~tI - ‚tend %I en date/heure du fichier
%~zI - ‚tend %I en taille du fichier
%~$PATH:I - parcourt les r‚pertoires de la variable
d'environnement PATH et ‚tend %I en nom du
premier fichier reconnu trouv‚. Si le nom de la
variable d'environnement n'est pas d‚fini ou
que le fichier n'est pas trouv‚ par la recherche,
alors ce modificateur ‚tend en chaŒne vide

Vous pouvez combiner les modificateurs pour obtenir des r‚sultats compos‚sÿ:

%~dpI - ‚tend %I en lettre de lecteur et chemin d'accŠs uniquement
%~nxI - ‚tend %I en nom de fichier et extension uniquement
%~fsI - ‚tend %I en nom de chemin complet avec noms courts
uniquement
%~dp$PATH:i - parcourt les r‚pertoires list‚s dans la variable
d'environnement PATH … la recherche de %I et ‚tend
en lettre de lecteur du premier trouv‚.
%~ftzaI - ‚tend %I en DIR comme ligne en sortie

Dans les exemples ci-dessus %I et PATH peuvent ˆtre remplac‚s par d'autres
valeurs valides. La syntaxe %~ se termine par un nom de variable FOR valide.
Le choix de noms de variables en majuscules comme %I facilite la lecture
et empˆche toute confusion avec les modificateurs qui ne tiennent pas compte
de la casse.


COmprends-tu ?




______________________________________________________
La sécurité informatique et vous ! = http://batchdhelus.open-web.fr
Répondre en citant
Message [Formation]Labougie 
Bonsoir laddy,

Citation:

Tu t'emmêles un peu avec la redirection vers les bons labels.
A aucun moment tu renvoies un calcul ou routine vers une fin ? goto fin ou autre ?
le batch du coup calcule tout les labels dans ton code.


Le batch ne calcule pas tout les labels, il calcule uniquement la partie concernée :
Soit annuité
Soit amortissement

La formule suivante :
if %tpsrestant% gtr 0 goto routine
goto fin

est une formule de condition sur la durée, si la durée et > 0 alors recommencer le calcul, sinon => fin
C'est la raison pour laquelle tu obtiens les x calculs de annuité si ta durée est X

exemple

Durée = 5 mois choix 1 => annuite




Rappel de la somme du tx et de la durée


1er calcul avant exécution de la routine



Synthèse du formulaire: somme tx durée => de la 1ere exécution => puis de la routine
Au total il y a bien 5 calcul car la durée est bien de 5




Je vais maintenant essayer d'afficher ces résultat avec les virgules, mais cela me semble assez tordu encore, Meric pour le lien qui j'espère pourra m'aider.
Dommage que les exposants ne soient gérés, de plus cela entraine une erreur de parenthèse. Wink



Citation:

REM IL FAUT LE REDIRIGER VERS QUELQUE PART SINON IL CONTINUE VERS ANNUITECONSTANCE

Non pas de redirection ici car le batch va naturellement se diriger vers ANNUITECONSTANTE, c'est la suite logique du calcul.

Après en programmation il faut sans doute lui indiquer le chemin à suivre, mais je ne pense pas car c'est intuitif et cela libère de la rapidité. Pas ici le code est trop simple, mais sur du plus complexe je pense que cela influera.

Citation:

Sur mon PC tous les calculs ne passe passe je suis obligé de separer les calculs pour obtenir un résultat

je ne comprends pas ta phrase "je suis obligé de separer les calculs"


labougie



Message [Formation]Labougie 


Montrer les messages depuis:
Répondre au sujet Page 2 sur 8
Aller à la page: <  1, 2, 3, 4, 5, 6, 7, 8  >
  



Index | créer un forum | Forum gratuit d’entraide | Annuaire des forums gratuits | Signaler une violation | Conditions générales d'utilisation
Copyright 2008 - 2016 // Batch