leclode
Nombre de messages : 38 Date d'inscription : 01/11/2022
| Sujet: fichier.exe Mar 17 Sep 2024 - 10:45 | |
| Bonjour tout le monde, Voilà, j'avance pas mal dans mon programme. Je l'utilise de façon journalière. Sauf que j'ai un problème avec le programme ".exe". Alors que sous Elip_V6_12_fr, j'ai pas de message d'erreur et qu'il fonctionne normalement, avec le programme compilé. J'ai de temps en temps un message qui me dit que la variable n'est pas une variable numérique. Quand j'appuie deux fois sur entrée pour valider la consommation du jour et qu'il calcule le global du mois. (Pour le global du mois on peut soit saisir la somme ou appuyer 2 fois sur entrée). Cela se passe quand je saisis une première fois la consommation du gaz et ensuite la consommation d'électricité . Bizarrement, si je saisis deux fois du gaz et une fois de l'électricité ,ça ne le fait pas. Bon attention, il n'est pas fini. Je sais je suis long mais j'ai pas vraiment le temps surtout qu'il me faut un temps certain pour le modifier ou l'améliorer. Pour ceux qui auront le courage de regarder, je mets les deux programmes mais c'est celui qui se nomme conso qui beug en . exe. Les deux doivent être dans le même répertoire ainsi que les données. Histogramme a aussi de petits problèmes mais visuels. là je veux surtout comprendre pourquoi le conso.exe beug Je vous joins le mois de septembre gaz et élec année en cours et l'année précédente pour tester. Merci d'avance pour ceux qui voudront regarder. PS j'ai modifié le fichier histogramme me suis trompé de fichier conso.bas - Code:
-
DIM Jour%, Mois%, An%, Err%, Test%, MaxiJ%, VT, B, L, Tou%, Mini, Maxi, Err, J1%, NbJ% DIM NomFichier$, Mois$, Ligne$, Vari$, VT$, Jour$, Jour2$, A$, Mini$, Maxi$, Dj%, TotDate$, TotDateProg$ LABEL action, action2, centrer, MaxiJour, Elec, Gaz, valider, Enregistrer LABEL Clic, Recalculer, fichier, AppTouche, Lance
' ------------------------------------------------------------------------------ ' ALPHA(1/9), SPIN(10/19), BUTTON(20/29), EDIT(30/39), LIST(40/49) ' ------------------------------------------------------------------------------
' LIST 40 sert à trier le fichier avec sort_on. LIST 40 LEFT 40,350 TOP 40,60 HEIGHT 40,420 WIDTH 40,130 SORT_ON 40:' trier la list REM HIDE 40
list 41 hide 41 ' année ALPHA 1 FONT_SIZE 1,13 LEFT 1,120 TOP 1,82 ALPHA 2 FONT_SIZE 2,13 LEFT 2,30 TOP 2,55 FONT_SIZE 2,10 FONT_BOLD 2 CAPTION 2,"Date du relevé ?" ALPHA 3 FONT_SIZE 3,11 LEFT 3,35 TOP 3,170 CAPTION 3,"kWh/jour" HIDE 3
ALPHA 9 FONT_SIZE 9,14 LEFT 9,30:' 30 TOP 9,10 CAPTION 9,"CONSOMMATION"
' consommation jour EDIT 30 LEFT 30,35: TOP 30,190 HEIGHT 30,25 WIDTH 30,60: HEIGHT 30,30 TEXT 30,"0" FONT_SIZE 30,12 ON_KEY_DOWN 30,AppTouche HIDE 30 ALPHA 4 FONT_SIZE 4,11 LEFT 4,135 TOP 4,170 CAPTION 4,"kWh/mois" HIDE 4 ALPHA 5 FONT_SIZE 5,11 LEFT 5,350 TOP 5,35 HIDE 5 ' consommation mois EDIT 31 LEFT 31,135: TOP 31,190 HEIGHT 31,25 WIDTH 31,60: HEIGHT 31,30 TEXT 31,"" FONT_SIZE 31,12 HIDE 31 ON_CLICK 31,Clic ON_KEY_DOWN 31,AppTouche An%=(DATE_YEAR) Mois%=(DATE_MONTH) Jour%=(DATE_DAY) Jour%=jour% - 1 GOSUB MaxiJour SPIN 10: LEFT 10,30: TOP 10,80: WIDTH 10,42: HEIGHT 10,30: FONT_SIZE 10,12 MIN 10,0: MAX 10,32:' jour POSITION 10, Jour% SET_FOCUS 10 ON_CHANGE 10,action SPIN 11: LEFT 11,72: TOP 11,80: WIDTH 11,42: HEIGHT 11,30: FONT_SIZE 11,12 MIN 11,0: MAX 11,13:' mois POSITION 11,Mois% ON_CHANGE 11,action2 BUTTON 20 LEFT 20,30 TOP 20,130 FONT_SIZE 20,12 CAPTION 20,"Electricité" ON_CLICK 20,Elec BUTTON 21 LEFT 21,110 TOP 21,130 FONT_SIZE 21,12 CAPTION 21,"Gaz" ON_CLICK 21,Gaz BUTTON 22 LEFT 22,230 TOP 22,190 FONT_SIZE 22,12 CAPTION 22,"Valider" ON_CLICK 22,Valider HIDE 22 BUTTON 23 LEFT 23,190 TOP 23,130 width 23,100 FONT_SIZE 23,12 CAPTION 23,"histogramme" ON_CLICK 23,Lance ' dimensionner de la fenêtre HEIGHT 0,HEIGHT(0) - HEIGHT_CLIENT(0) + 500 WIDTH 0,WIDTH(0) - WIDTH_CLIENT(0) + 500 ' centrer la fenêtre sur l'écran TOP 0,(SCREEN_Y - HEIGHT(0))/2 LEFT 0,(SCREEN_X - WIDTH(0))/12 ON_RESIZE 0,centrer END ' ------------------------------------------------------------------------------ lance: execute "histogramme.exe":' même répertoire que conso.exe return ' ------------------------------------------------------------------------------ action: If text$(10) = str$(jour%) then return OFF_CHANGE 10 off_change 11 GOSUB MaxiJour IF TEXT$(10) = "0" POSITION 10,MaxiJ% Mois%=(Mois% -1) POSITION 11,Mois% GOSUB MaxiJour POSITION 10,MaxiJ% END_IF IF TEXT$(10) = STR$(MaxiJ%+1) POSITION 10,1 Mois%=(Mois% +1) IF Mois%=13 THEN Mois%=1 POSITION 11,Mois% GOSUB Fichier GOSUB MaxiJour END_IF ON_CHANGE 10,action on_change 11,action RETURN ' ------------------------------------------------------------------------------ action2: OFF_CHANGE 11 OFF_CHANGE 10 Mois%=VAL(TEXT$(11))-1 GOSUB MaxiJour NbJ% = MaxiJ% Mois%=VAL(TEXT$(11)) GOSUB MaxiJour IF VAL(TEXT$(10)) = NbJ% THEN POSITION 10,MaxiJ% IF TEXT$(11) = "13" POSITION 11,1 An%=An% +1 CAPTION 1,STR$(An%) GOSUB Fichier ELSE IF TEXT$(11) = "0" POSITION 11,12 An%=(An% -1) CAPTION 1, An% END_IF END_IF ON_CHANGE 10,action ON_CHANGE 11,action2 RETURN ' ------------------------------------------------------------------------------ centrer: OFF_RESIZE 0 HEIGHT 0,HEIGHT(0) - HEIGHT_CLIENT(0) + 500 WIDTH 0,WIDTH(0) - WIDTH_CLIENT(0) + 500 ON_RESIZE 0,centrer RETURN
' ------------------------------------------------------------------------------ MaxiJour: ' nombre de jours maxi/mois bissextile ou pas IF Mois%=2 IF (MOD(An%,4)=0) AND ((MOD(An%,100) >0) OR (MOD(An%,400)=0)) MaxiJ%=29 ELSE MaxiJ%=28 END_IF END_IF IF Mois%<>2 AND ((Mois%=4) OR (Mois%=6) OR (Mois%=9) OR (Mois%=11)) MaxiJ%=30 ELSE IF Mois%<>2 THEN MaxiJ%=31 END_IF CAPTION 1, An% RETURN
' ------------------------------------------------------------------------------ Elec: HIDE 21 SHOW 3: SHOW 30: SHOW 4: SHOW 31: show 5 Vari$="E" CAPTION 5,"Electricité" GOSUB fichier ' SET_FOCUS 30 RETURN
' ------------------------------------------------------------------------------ Gaz: HIDE 20 SHOW 3: SHOW 30: SHOW 4: SHOW 31: show 5 Vari$="G" CAPTION 5,"Gaz" GOSUB fichier ' SET_FOCUS 30 RETURN
' ------------------------------------------------------------------------------ Valider: IF VAL(TEXT$(30)) < 0 IF MESSAGE_INFORMATION_OK("Attention kWh ne peut être < 0") <> 1 END_IF SET_FOCUS 30 RETURN END_IF IF VAL(TEXT$(30)) > VAL(TEXT$(31)) SET_FOCUS 31 IF MESSAGE_INFORMATION_OK("Attention Mois doit être > jour sauf le 1") <> 1 END_IF RETURN END_IF GOSUB Enregistrer SHOW 20: SHOW 21 HIDE 3: HIDE 30: HIDE 4: HIDE 31: HIDE 22 TEXT 30,"": TEXT 31,"" RETURN
' ------------------------------------------------------------------------------ Enregistrer: Maxi = VAL(TEXT$(31)) IF Maxi > Err AND Err>0 Maxi=Maxi-Err Mini= VAL(TEXT$(30))+Maxi Mini$= STR$(Mini) TEXT 30, Mini$ ELSE IF Maxi< Err AND Err>0 Mini$= TEXT$(30) Mini= Err - Maxi Mini= (VAL(Mini$)-Mini) TEXT 30, STR$(Mini) END_IF END_IF Jour$= TEXT$(10) IF VAL(jour$) < 10 THEN Jour$= "0" + TEXT$(10) Ligne$ = Jour$ +"/"+ TEXT$(30) +"/"+ TEXT$(31) IF Test%=0 OR Jour$="01" FILE_OPEN_APPEND 1, NomFichier$ FILE_WRITELN 1,Ligne$ FILE_CLOSE 1 FILE_LOAD 40, NomFichier$ IF COUNT(40) > 1 GOSUB recalculer END_IF RETURN END_IF IF Test%=1 FILE_LOAD 40, NomFichier$ Jour2$= LEFT$(TEXT$(10),2) IF VAL(Jour2$) < 10 THEN Jour2$="0"+Jour2$ IF COUNT(40) >= 1 FOR Err% = 1 TO COUNT(40) Jour$= MID$(ITEM_READ$(40,Err%),1,2) IF VAL(Jour2$) = VAL(Jour$) IF MESSAGE_WARNING_OK("ATTENTION se jour existe déjà dans le fichier !") < 3 END_IF SET_FOCUS 10 RETURN END_IF NEXT Err% END_IF END_IF IF VAL(Jour$) <> VAL(Jour2$) OR VAL(Jour2$)=1 OR COUNT(40)=0 FILE_OPEN_APPEND 1, NomFichier$ FILE_WRITELN 1,Ligne$ FILE_CLOSE 1 ' sauvegarder le fichier trier FILE_LOAD 40, NomFichier$ FILE_SAVE 40, NomFichier$ END_IF SET_FOCUS 10 IF COUNT(40) > 0 GOSUB recalculer END_IF RETURN ' ------------------------------------------------------------------------------ Clic: Jour%= VAL(TEXT$(10)) IF Jour% = 1 VT$ = TEXT$(30) TEXT 31,VT$ Err = 0 :' erreur in fonction line 328 SHOW 22 RETURN END_IF IF Jour%>1 AND Test% =0 VT$ = TEXT$(30) TEXT 31,VT$ SHOW 22 RETURN END_IF IF Jour%>1 AND Test% = 1 ' trouver valeur kWh/mois pour calculer le total VT = VAL(TEXT$(30)) FILE_LOAD 40, NomFichier$ Err%= COUNT(40) IF Err% <>0 A$=ITEM_READ$(40,Err%) B=INSTR_LAST(A$,"/") B=B+1 L= LEN(A$) :L=(L-B)+1 VT$= MID$(ITEM_READ$(40,Err%),B,L) Err=VAL(VT$)+ VT TEXT 31,Err SHOW 22 RETURN ELSE TEXT 31,TEXT$(30) SHOW 22 END_IF END_IF RETURN
' ------------------------------------------------------------------------------ Recalculer: FILE_OPEN_WRITE 2, copiFich.txt FILE_CLOSE 2 FILE_LOAD 40, NomFichier$ Err% = COUNT(40) FOR L=1 TO Err% A$=ITEM_READ$(40,L) jour$=LEFT$(A$,2) Mini$= RIGHT_POS$(A$,4) B=INSTR(Mini$,"/") B=B-1 Mini$=LEFT$(Mini$,B) IF VAL(jour$) = 1 OR L=1 Maxi= VAL(Mini$) ELSE Maxi=Maxi+VAL(Mini$) END_IF Maxi$= STR$(Maxi) Ligne$ = Jour$ +"/"+ Mini$ +"/"+ Maxi$ FILE_OPEN_APPEND 2, copiFich.txt FILE_WRITELN 2,Ligne$ FILE_CLOSE 2 ' sauvegarder le fichier trier et recalculer NEXT L FILE_DELETE NomFichier$ FILE_RENAME "copiFich.txt",NomFichier$ FILE_LOAD 40, NomFichier$ RETURN
' ------------------------------------------------------------------------------ fichier: fichierStd() IF FILE_EXISTS(NomFichier$)=1 Test%=1 FILE_LOAD 40, NomFichier$ Dj% = COUNT(40) If Dj% > 0 A$=ITEM_READ$(40,Dj%):' lire le dernier jour utilisé dans le fichier jour$=LEFT$(A$,2) Dj%=val(jour$) Dj% = Dj%+1:' incrémenter de 1 pour mettre SPIN 10 à jour else Dj%= position(10) :' création d'un nouveau fichier quand nouveau mois ou premier jour mois end_if POSITION 10, Dj% gosub action gosub action2 totaljour() jour$ = date_day If val(TotDateProg$) >= val(TotDate$) Dj% = val(jour$)-1 IF MESSAGE_WARNING_OK("ATTENTION la date ne peut être = ou > a aujourd'hui") < 1 END_IF POSITION 10, Dj% show 20 show 21 hide 30 hide 31 set_focus 20 return end_if IF DJ% < val(jour$) then POSITION 10, Dj% set_focus 30 else Test%=0 END_IF IF Test%=0 ' créer un fichier texte en écriture FILE_OPEN_WRITE 1, NomFichier$ ELSE IF Test%=1 ' ouvrir un fichier texte en écriture ajout aprés la derniere ligne FILE_OPEN_APPEND 1, NomFichier$ END_IF END_IF FILE_CLOSE 1 RETURN
' ------------------------------------------------------------------------------ AppTouche: IF KEY_DOWN_CODE > 95 AND KEY_DOWN_CODE < 106 RETURN ELSE IF KEY_DOWN_CODE = 8 OR KEY_DOWN_CODE = 37 OR KEY_DOWN_CODE = 39 OR KEY_DOWN_CODE = 110 THEN RETURN IF KEY_DOWN_CODE = 13 Tou%= number_key_down If Tou% =30 set_focus 31 return Else Tou% = 31 show 22 set_focus 22 gosub Clic return end_if end_if IF MESSAGE_ERROR_OK("La donnée doit être numérique !")=1 TEXT 30,"" TEXT 31,"" END_IF END_IF RETURN ' ------------------------------------------------------------------------------ SUB fichierStd() dim_local An$, Mois$ An$= CAPTION$(1) Mois$= text$(11) NomFichier$ = An$+Mois$+Vari$+".txt" END_SUB ' ------------------------------------------------------------------------------ sub totaljour() dim_local mois%, jour%, jour$, mois$, an$ jour$ = str$(date_day) if val(jour$) < 10 then jour$ = "0" + jour$ mois$ = str$(date_month) if val(mois$) < 10 then mois$ = "0" + mois$ TotDate$ = str$(date_year) + mois$ + jour$ jour$ = text$(10) If val(jour$) < 10 then jour$ = "0" + jour$ mois$ = text$(11) if val(mois$) < 10 then mois$ = "0" + mois$ an$ = CAPTION$(1) TotDateProg$ = an$ + mois$ + jour$ end_sub
histogramme.bas - Code:
-
Dim a%, b%, d%, e%, Hau%, ConsJ, Err, numC, rouge, R, N, NumMois%, An% Dim X_position_souris%, Var%, VarH%, NbJM%, diff, Nb%, DiffJ Dim jour%, a$, b$, i%, col%, jour$, var, var$ DIM MaxiR, MiniR, h%, NumBut%, drap%, MaxiR%, NomFichierTemp$, Drap$, Maxi% DIM NomFichier$, ConsJM$, ligne$, Maxi$, Pro$, moy, Mois$, ConsT LABEL change, Histo, Voir, suite, centrer, BarMaMi, Quitter label afficheCoordonneesSouris, suitesouris, sourisMaxiMini, effaceConsoJour label ficheTemp, ConsPosNeg, barjour
hide 0 BUTTON 20 hide 20 LEFT 20,10 TOP 20,5 FONT_SIZE 20,12 CAPTION 20,"Electricité" ON_CLICK 20,Voir BUTTON 21 hide 21 LEFT 21,85 TOP 21,5 FONT_SIZE 21,12 CAPTION 21,"Gaz" ON_CLICK 21,Voir
BUTTON 22 LEFT 22,220 TOP 22,5 FONT_SIZE 22,12 CAPTION 22,"Quitter" ON_CLICK 22,quitter
LIST 40 HIDE 40 LEFT 40,350 TOP 40,60 HEIGHT 40,420 WIDTH 40,130
CAPTION 0,"HISTOGRAMME"
ALPHA 12 FONT_SIZE 12,12 LEFT 12,360 TOP 12,5
HEIGHT 0,HEIGHT(0) - HEIGHT_CLIENT(0) + 180 WIDTH 0,WIDTH(0) - WIDTH_CLIENT(0) + 300 Dlist 50
combo 10 width 10,95 left 10,10 top 10,37 HIDE 10 ' remplir 12 mois item_add 10,"Janvier" item_add 10,"Février" item_add 10,"Mars" item_add 10,"Avril" item_add 10,"Mai" item_add 10,"Juin" item_add 10,"Juillet" item_add 10,"Aout" item_add 10,"Septembre" item_add 10,"Octobre" item_add 10,"Novenbre" item_add 10,"Décembre" ' remplir la partie visible numMois% = date_month item_select 10, NumMois% ' text 10,"Choisir le mois" on_change 10,change Form 1 hide 1 show 0 show 20 show 21 Desactive_X(0) :' X coin haut droit form 0 ne fonctionne plus (vers.PAPYDAll) command_target_is 1 picture 5 hide 5 on_mouse_move 5,afficheCoordonneesSouris end ' ------------------------------------------------------------------------------ Quitter: ' ferme le programme et efface les fichiers temporaires s'ils existent IF FILE_EXISTS("essaitemp1.txt")=1 then file_delete essaitemp1.txt IF FILE_EXISTS("essaitemp.txt")=1 then file_delete essaitemp.txt terminate return ' ------------------------------------------------------------------------------ Histo: show 1 2d_target_is 1 print_target_is 1 ' dimensionner de la fenêtre color 1,239,239,239 HEIGHT 1,HEIGHT(1) - HEIGHT_CLIENT(1) + 350 WIDTH 1,WIDTH(1) - WIDTH_CLIENT(1) + 1000 ' centrer la fenêtre sur l'écran TOP 1,(SCREEN_Y - HEIGHT(1))/2 LEFT 1,(SCREEN_X - WIDTH(1))/2 ON_RESIZE 1,centrer if drap% = 0 then gosub ficheTemp IF VarH% = 8 for i%=1 to 30:' efface les 30 premiéres lignes du form 1 suite changement hauteur suivant VarH% print_locate 1,i% print " " next i% end_if if drap%=1 then goto suite a%=-4 b%=11 d%=7 MaxiR=0 MiniR=150 file_open_read 2,NomFichierTemp$ clear 40 FILE_LOAD 40,NomFichierTemp$ file_close 2 for e% = 1 to Err: ' année - 1 2D_PEN_COLOR 255,102,0 2D_fill_color 255,102,0 ligne$=ITEM_READ$(40,e%) ConsJ=val(ligne$) IF ConsJ > MaxiR then MaxiR=ConsJ IF Consj < MiniR THEN MiniR=ConsJ IF Pro$="G" Hau% = 200 - (ConsJ*VarH%) else Hau%= 200 -(ConsJ * 10) ' 10 consommation 180 kWh maxi mois end_if a%=a%+29 b%=b%+29 d%=d%+29 2d_rectangle b%,Hau%,a%,200 2D_fill_off b%=b% - 18 hau%=hau%-20 print_locate b%,Hau% Hau%=Hau%+20 B%=B%+18 2D_fill_on 2D_fill_color 255,102,0 next e% moy = ConsT/Err moy= moy*100 moy= int(moy) moy=moy/100 print_locate 160,280 print "Total: " + str$(ConsT) print_locate 77,280 print "moyenne: "+str$(moy) print_locate 45,280 print str$(An%) IF Pro$="G" Hau% = 193 - (MaxiR*VarH%) else Hau%= 193 -(MaxiR * 10) end_if h%=13 gosub BarMaMi gosub suite return ' ------------------------------------------------------------------------------ suite: file_open_write 2,"essaitemp1.txt" a%=5 b%=20 d%=7 An%=(date_year) NomFichier$= str$(An%)+str$(NumMois%)+Pro$+".txt" IF FILE_EXISTS(NomFichier$)=1 FILE_LOAD 40, NomFichier$ Err = COUNT(40) if Nb% < Err then Nb% = Err:' ######################################################### else Mois$=item_index$(10) Mois$=Mois$+" "+Pro$ caption 1,upper$(Mois$) set_focus 1 IF MESSAGE_INFORMATION_OK("Attention pas de donnée pour l'année en cour") <> 1 end_if if drap%=1 execute histogramme.exe terminate end_if file_close 2 hide 10 show 20:' ELEC show 21:' GAZ return end_if gosub barjour R= instr_last(ligne$,"/") rouge = len(ligne$) N=rouge-R gosub ConsPosNeg: ' conso +- par rapport année en cour et année -1 moy = val(Maxi$)/Err moy= moy*100 moy= int(moy) moy=moy/100 print_locate 243,295 if ConsT > val(Maxi$) diff = ConsT - val(Maxi$) print "-" + str$(diff) IF DiffJ > 0 a$ = "+" else a$="-" end_if print_locate 158,310 print " J/" + str$(Err) + " :" + a$ + str$(DiffJ) else diff = val(Maxi$)- ConsT print "+" + str$(diff) print_locate 158,310 print " J/" + str$(Err) + " :" + a$ + str$(DiffJ) end_if Const = 0 print_locate 160,295 print "Total: "+Maxi$ print_locate 77,295 print "moyenne: "+str$(moy) print_locate 45,295 print str$(An%) if Pro$="E" Hau%= 193 -(MaxiR * 10) h%=35 else Hau%= 193 -(MaxiR * VarH%) end_if gosub BarMaMi gosub sourisMaxiMini show 20 show 21 hide 10 Mois$=item_index$(10) If Pro$="E" then Pro$="Electricité" If Pro$="G" then Pro$="Gaz" Mois$=upper$(Mois$) Mois$=Mois$+" "+Pro$ caption 1,Mois$ set_focus 1 If Pro$="Electricité" then Pro$="E" If Pro$="Gaz" then Pro$="G" return ' ------------------------------------------------------------------------------ change: IF file_exists("essaitemp1.txt")=1 file_delete essaitemp1.txt end_if IF file_exists("essaitemp.txt")=1 file_delete essaitemp.txt end_if NumMois%= item_index(10) 2D_fill_color 239,239,239 2D_PEN_COLOR 239,239,239 2d_rectangle 10,40,1000,350 Drap%=0:' permet de voir l'année-1 si changement de mois gosub histo return ' ------------------------------------------------------------------------------ Voir: NumBut% = number_click : ' donne le numéro du dernier objet cliqué if NumBut% = 20 HIDE 21 show 10 Pro$="E" return else if NumBut% = 21 HIDE 20 show 10 Pro$="G" return end_if end_if return ' ------------------------------------------------------------------------------ centrer: OFF_RESIZE 1 HEIGHT 1,HEIGHT(1) - HEIGHT_CLIENT(1) + 350 WIDTH 1,WIDTH(1) - WIDTH_CLIENT(1) + 1010 ON_RESIZE 1,centrer RETURN ' ------------------------------------------------------------------------------ BarMaMi: for e%=26 to 930 2D_fill_off print_locate e%,Hau% print "-" next e% e%=e%+h% IF h%=13 2D_fill_on 2D_fill_color 255,102,0 else 2D_fill_on 2D_fill_color 246,246,10 end_if print_locate e%,Hau% print str$(MaxiR) IF Pro$="G" Hau% = 193 - (MiniR*VarH%) else Hau%= 193 -(MiniR* 10) end_if for e%=26 to 930 2D_fill_off print_locate e%,Hau% print "-" next e% e%=e%+h% IF h%=13 2D_fill_on 2D_fill_color 255,102,0 else 2D_fill_on 2D_fill_color 246,246,10 end_if i% = MaxiR - MiniR IF i% < 2:' déplacer maxi mini quand pas assez d'espace entre les deux valeurs Hau%=Hau% - 6:' 12 print_locate e%,Hau% print str$(MaxiR) Hau%=Hau% + 12 print_locate e%,Hau% print str$(MiniR) end_if print_locate e%,Hau% print str$(MiniR) h%=0 return ' ------------------------------------------------------------------------------ sourisMaxiMini: 2D_fill_off command_target_is 1 select Nb% case 1 NbJM% = 30 case 2 NbJM% = 59 case 3 NbJM% = 88 case 4 NbJM% = 117 case 5 NbJM% = 146 case 6 NbJM% = 175 case 7 NbJM% = 204 case 8 NbJM% = 233 case 9 NbJM% = 262 case 10 NbJM% = 291 case 11 NbJM% = 320 case 12 NbJM% = 349 case 13 NbJM% = 378 case 14 NbJM% = 407 case 15 NbJM% = 436 case 16 NbJM% = 465 case 17 NbJM% = 494 case 18 NbJM% = 523 case 19 NbJM% = 552 case 20 NbJM% = 581 case 21 NbJM% = 610 case 22 NbJM% = 639 case 23 NbJM% = 668 case 24 NbJM% = 697 case 25 NbJM% = 726 case 26 NbJM% = 755 case 27 NbJM% = 784 case 28 NbJM% = 813 case 29 NbJM% = 842 case 30 NbJM% = 871 case 31 NbJM% = 900 end_select width 5,NbJM% height 5,20 top 5,205:' hauteur de la picture left 5,20 show 5 b%=-1 for i%=1 to Nb% if i% < 10 jour$="0"+str$(i%) else jour$=str$(i%) end_if b% = b% +29 print_locate b%,209 :' liste des jours du mois déjà utilisés print jour$ next i% Nb% = 0 return ' ----------------------------------------------------------------------------- afficheCoordonneesSouris: off_mouse_move 1 X_position_souris% = mouse_x_position(1) var% = X_position_souris% IF var% < 20 return end_if If var% > 19 and var% < 48 if jour% = 1 then return jour% = 1 col% = 28 goto suitesouris end_if If var% > 47 and var% < 77 if jour% = 2 then return jour% = 2 col% = 57 goto suitesouris end_if If var% > 76 and var% < 106 if jour% = 3 then return jour% = 3 col% = 86 goto suitesouris end_if If var% > 105 and var% < 134 if jour% = 4 then return jour% = 4 col% = 115 goto suitesouris end_if If var% > 133 and var% < 163 if jour% = 5 then return jour% = 5 col% = 144 goto suitesouris end_if If var% > 162 and var% < 192 if jour% = 6 then return jour% = 6 col% = 173 goto suitesouris end_if If var% > 191 and var% < 221 if jour% = 7 then return jour% = 7 col% = 202 goto suitesouris end_if If var% > 220 and var% < 250 if jour% = 8 then return jour% = 8 col% = 231 goto suitesouris end_if If var% > 249 and var% < 279 if jour% = 9 then return jour% = 9 col% = 259 goto suitesouris end_if If var% > 278 and var% < 308 if jour% = 10 then return jour% = 10 col% = 288 goto suitesouris end_if If var% > 307 and var% < 337 if jour% = 11 then return jour% = 11 col% = 317 goto suitesouris end_if If var% > 336 and var% < 366 if jour% = 12 then return jour% = 12 col% = 346 goto suitesouris end_if If var% > 365 and var% < 395 if jour% = 13 then return jour% = 13 col% = 375 goto suitesouris end_if If var% > 394 and var% < 424 if jour% = 14 then return jour% = 14 col% = 404 goto suitesouris end_if If var% > 423 and var% < 453 if jour% = 15 then return jour% = 15 col% = 433 goto suitesouris end_if If var% > 452 and var% < 482 if jour% = 16 then return jour% = 16 col% = 462 goto suitesouris end_if If var% > 481 and var% < 511 if jour% = 17 then return jour% = 17 col% = 491 goto suitesouris end_if If var% > 510 and var% < 540 if jour% = 18 then return jour% = 18 col% = 520 goto suitesouris end_if If var% > 539 and var% < 569 if jour% = 19 then return jour% = 19 col% = 549 goto suitesouris end_if If var% > 568 and var% < 598 if jour% = 20 then return jour% = 20 col% = 578 goto suitesouris end_if If var% > 597 and var% < 627 if jour% = 21 then return jour% = 21 col% = 607 goto suitesouris end_if If var% > 626 and var% < 656 if jour% = 22 then return jour% = 22 col% = 636 goto suitesouris end_if If var% > 655 and var% < 685 if jour% = 23 then return jour% = 23 col% = 665 goto suitesouris end_if If var% > 684 and var% < 714 if jour% = 24 then return jour% = 24 col% = 694 goto suitesouris end_if If var% > 713 and var% < 743 if jour% = 25 then return jour% = 25 col% = 723 goto suitesouris end_if If var% > 742 and var% < 772 if jour% = 26 then return jour% = 26 col% = 752 goto suitesouris end_if If var% > 771 and var% < 801 if jour% = 27 then return jour% = 27 col% = 781 goto suitesouris end_if If var% > 800 and var% < 830 if jour% = 28 then return jour% = 28 col% = 810 goto suitesouris end_if If var% > 829 and var% < 859 if jour% = 29 then return jour% = 29 col% = 839 goto suitesouris end_if If var% > 858 and var% < 888 if jour% = 30 then return jour% = 30 col% = 868 goto suitesouris end_if If var% > 887 and var% < 917 if jour% = 31 then return jour% = 31 col% = 900 goto suitesouris end_if IF var% > 916 return end_if
suitesouris: command_target_is 1:' tout se passe sur form 1 gosub effaceConsoJour If drap% = 0 file_open_read 91,"essaitemp.txt" for i% = 1 to jour% file_readln 91,a$ IF i%=jour% print_locate col%,240 IF len(a$)=1 then a$=a$+".0" 2d_fill_color 255,102,0 print a$ a$="" end_if next i% file_close 91 end_if 2D_fill_off file_open_read 92,"essaitemp1.txt" for i% = 1 to jour% file_readln 92,b$ IF i%=jour% print_locate col%,255 IF len(b$)=1 then b$=b$+".0" 2d_fill_color 246,246,10 print b$ b$ = "" end_if next i% file_close 92 col%=0 return '-------------------------------------------------------------------------------- SUB Desactive_X(NumForm) ' version PAPYDALL le X pour fermer la fenêtre ne fonctionne plus. Utilisation bouton "quitter" ' pour obliger a supprimer les fichiers temporaires Dim_local hWnd dim_local hMenu Dim_local result%, flag% dim_local SC_CLOSE : SC_CLOSE = hex("F060") dll_on "user32" hWnd = handle(NumForm) hmenu = dll_call2("GetSystemMenu",hWnd,0) flag% = 1 result% = dll_call3("EnableMenuItem",hMenu, SC_CLOSE, flag%) END_SUB ' ------------------------------------------------------------------------------ effaceConsoJour: ' efface la consomation d'un jour quand on passe avec la souris sur un autre jour 2D_FILL_on for i%= 22 to 920 print_locate i%,240 2d_fill_color 239,239,239 print " " print_locate i%,255 2d_fill_color 239,239,239 print " " next i% return ' ------------------------------------------------------------------------------ ficheTemp: If drap% = 0 :' drapeau 0 donc année -1 An%=(date_year)-1 NomFichierTemp$="essaitemp.txt" else An%=(date_year) NomFichierTemp$="essaitemp1.txt" end_if NomFichier$= str$(An%)+str$(NumMois%)+Pro$+".txt" IF FILE_EXISTS(NomFichier$)=1 FILE_LOAD 40, NomFichier$ Err = COUNT(40):' créer le fichier temporaire pour consommation mois année -1 if Nb% < Err then Nb% = Err file_open_write 2,NomFichierTemp$ else if drap% = 0 IF MESSAGE_INFORMATION_OK("Attention pas de donnée pour l'année précédente") <> 1 end_if drap%=1 GOTO suite end_if end_if MaxiR%=0 MiniR=150 for e% = 1 to Err ligne$=ITEM_READ$(40,e%) ConsJM$ = RIGHT_POS$(ligne$,4) numC=INSTR(ConsJM$,"/") numC=numC-1 ConsJM$=LEFT$(ConsJM$,numC) FILE_WRITELN 2,ConsJM$:' écrire consommation jour/mois année-1 ConsJ=val(ConsJM$) ConsT = ConsT + ConsJ IF ConsJ > MaxiR% then MaxiR%=ConsJ IF Consj < MiniR THEN MiniR=ConsJ next e% file_close 2 if MaxiR% > 0 and MaxiR% < 13: ' hauteur de la barre suivant consommation ' VarH% = 2 pour une consommation max gaz 1500 kWh/mois mini ~ 400 kWh. 8 pour en dessous. VarH% = 8 else VarH% = 2 end_if return ' ------------------------------------------------------------------------------ ConsPosNeg: An%=An% - 1 NomFichier$= str$(An%)+str$(NumMois%)+Pro$+".txt" IF FILE_EXISTS(NomFichier$)=1 file_load 50, NomFichier$ Err = COUNT(50) drap$ = item_read$(50, Err) R= instr_last(drap$,"/"):' retourne le nombre caractére au dernier "/" rouge = len(drap$) N=rouge-R ConsT = right$(drap$,N) end_if An%=(date_year) NomFichier$= str$(An%)+str$(NumMois%)+Pro$+".txt" file_load 50, NomFichier$ Err = COUNT(40) drap$ = item_read$(50, Err) R= instr_last(drap$,"/"):' retourne le nombre caractére au dernier "/" rouge = len(drap$) N=rouge-R Maxi$ = right$(ligne$,N) An%=An% + 1 NomFichier$= str$(An%)+str$(NumMois%)+Pro$+".txt" IF FILE_EXISTS(NomFichier$)=1 file_load 50, NomFichier$ Err = COUNT(50) drap$ = item_read$(50, Err) R= instr_last(drap$,"/"):' retourne le nombre caractére au dernier "/" rouge = len(drap$) N=rouge-R DiffJ = right$(drap$,N) if val(Maxi$) < DiffJ DiffJ = DiffJ - val(Maxi$) else DiffJ = val(Maxi$)- DiffJ end_if end_if return ' """"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""" barjour: MaxiR=0 MiniR=150 Err = COUNT(40) if Nb% < Err then Nb% = Err:' variable pour la longueur de la picture pour coordonnée souris If VarH% = 0 then VarH% = 8 for e% = 1 to Err: ' année en cour a%=a%+29 b%=b%+29 d%=d%+29 2D_fill_off ligne$=ITEM_READ$(40,e%) ConsJM$= RIGHT_POS$(ligne$,4) numC=INSTR(ConsJM$,"/") numC=numC-1 ConsJM$=LEFT$(ConsJM$,numC) FILE_WRITELN 2,ConsJM$:' écrire consommation jour du mois année en cour ConsJ=val(ConsJM$) IF ConsJ > MaxiR then MaxiR=ConsJ IF Consj < MiniR THEN MiniR=ConsJ IF Pro$="G" Hau% = 200 - (ConsJ*VarH%) else Hau%= 200 -(ConsJ * 10) end_if 2D_fill_on 2D_PEN_COLOR 246,246,10:' barre de la donnée du jour 2D_fill_color 246,246,10 2d_rectangle b%,Hau%,a%,200 b%=b% - 15 print_locate b%,220 b%=b% +15 next e% file_close 2 return
20239E 01/5.7/5.7 02/3.6/9.3 03/1.8/11.1 04/1.8/12.9 05/1.8/14.7 06/1.8/16.5 07/1.9/18.4 08/1.9/20.3 09/2.9/23.2 10/4.8/28 11/7.1/35.1 12/4.3/39.4 13/6.9/46.3 14/3.9/50.2 15/5.3/55.5 16/5/60.5 17/3.2/63.7 18/5.1/68.8 19/4.3/73.1 20/6.3/79.4 21/5.6/85 22/4/89 23/5.7/94.7 24/3.1/97.8 25/5.1/102.9 26/5.7/108.6 27/5.9/114.5 28/5.3/119.8 29/4/123.8 30/4.8/128.6 20239G 01/1/1 02/3/4 03/0/4 04/0/4 05/0/4 06/0/4 07/0/4 08/0/4 09/1/5 10/1/6 11/1/7 12/1/8 13/0/8 14/1/9 15/1/10 16/2/12 17/1/13 18/1/14 19/1/15 20/3/18 21/1/19 22/1/20 23/1/21 24/2/23 25/1/24 26/1/25 27/1/26 28/1/27 29/1/28 30/1/29 20249G 01/3/3 02/1/4 03/1/5 04/1/6 05/1/7 06/1/8 07/1/9 08/3/12 09/1/13 10/1/14 11/1/15 12/1/16 13/1/17 14/11/28 20249E 01/2.8/2.8 02/3.8/6.6 03/3.3/9.9 04/6.7/16.6 05/5.1/21.7 06/4.7/26.4 07/3.4/29.8 08/3.9/33.7 09/3.4/37.1 10/4.9/42 11/4.5/46.5 12/2.1/48.6 13/3.3/51.9 14/3.5/55.4 15/4.2/59.6 16/4.7/64.3 20239G, 20239E, 20249G et 20249E sont les noms des fichiers.
Dernière édition par leclode le Ven 20 Sep 2024 - 19:06, édité 1 fois | |
|