leclode
Nombre de messages : 18 Date d'inscription : 01/11/2022
| Sujet: Consommation gaz électricité Mer 17 Avr 2024 - 11:07 | |
| Bonjour tout le monde. Grace à l'aide de plusieurs personnes qui m'ont aidées, j'ai pu finir la première partie de mon utilitaire perso. Je me doute que vu votre niveau, ça va vous paraitre insignifiant. Mais cela prouve que tout le monde peut y arriver avec Panoramic, sans être du métier. Calcule automatiquement la consommation mensuelle après avoir rempli la case kWh/jour. Il suffit soit: cliquer avec la souris dans la case en dessous de kWh/mois Appuyer deux fois sur entrée après avoir rempli la case kWh/jour. les jours sont automatiquement remis dans l'ordre croissant avec recalcule quand ils ne se suivent pas. Impossibilité d'avoir deux dates identiques. Jour maxi par rapport aux mois, bissextile ou pas. La consommation mensuelle peut être modifiée. Il suffit de mettre celle donnée par le fournisseur. Le calcul ajoutera ou retirera le complément à la consommation journalière pour avoir la bonne consommation mensuelle. (Souvent des problèmes avec GRDF. Changement de consommation mensuelle en cours de mois ou en fin) Les données ne peuvent être que numériques, point, suppression, touches de déplacement gauche, droite et entrée. fichier mensuel sauvegardé après validation. - Code:
-
DIM Jour%, Mois%, An%, Err%, Test%, MaxiJ%, VT, B, L, Tou%, Mini, Maxi, Err, J1%, NbJ% DIM NomFichier$, An$, Mois$, Ligne$, Vari$, VT$, Jour$, Jour2$, A$, Mini$, Maxi$ LABEL action, action2, centrer, MaxiJour, Elec, Gaz, valider, Enregistrer LABEL Clic, Recalculer, fichier, AppTouche
' ------------------------------------------------------------------------------ ' 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 REM HIDE 40
' 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 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 ' 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) 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 ' 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))/2 ON_RESIZE 0,centrer END ' ------------------------------------------------------------------------------ action: OFF_CHANGE 10 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 RETURN ' ------------------------------------------------------------------------------ action2: OFF_CHANGE 11 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 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 Vari$="E" GOSUB fichier SET_FOCUS 30 RETURN
' ------------------------------------------------------------------------------ Gaz: HIDE 20 SHOW 3: SHOW 30: SHOW 4: SHOW 31 Vari$="G" GOSUB fichier SET_FOCUS 30 RETURN
' ------------------------------------------------------------------------------ Valider: IF VAL(TEXT$(30)) = 0 IF MESSAGE_INFORMATION_OK("Attention kWh doit ê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 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: An$= CAPTION$(1) Mois$= TEXT$(11) NomFichier$ = An$+Mois$+Vari$+".txt" IF FILE_EXISTS(NomFichier$)=1 Test%=1 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
J'ai créé le .exe apparemment cela fonctionne. Bon maintenant me reste à utiliser les données des fichiers. Genre histogramme, moyenne mensuelle, comparaison avec l'année précédente Bref il y a encore pas mal de travail. | |
|