Page 1 sur 2

Calcul de caisse

Publié : mar. 28/déc./2004 23:21
par Apprenti
Bonjour,

Je souhaite donc débuter en PureBasic

j'ai commencé de consulter le forum

Je voudrais faire en PB, le calcul en euros de la recette du jour
Actuellement, j'utilise Excel mais je suppose qu'on peut faire aussi bien en PB ?

Je veux juste totaliser le nombre de pièces, de billets, de rouleaux de pièces et les paiements en cartes bleus et pouvoir l'imprimer le tout

Par la suite pouvoir gérer, le jour férié, le fond de caisse, gérer ou pas l'historique de la caisse, le nom de l'utilisateur...

C'est à la portée d'un débutant ou de 20 ans de progammation derrière soi ?

Tout ce que je sais faire c'est quelques batchs

Cordialement

François

Publié : mer. 29/déc./2004 0:43
par julien
oui ça ne doit pas être bien difficile, tu veux pas nous poster ton fichier exel pour voir exactement ce que tu veux faire ?

Publié : mer. 29/déc./2004 16:22
par jbernard13
salut et bienvenu d'abord

montre nous ton ficher exel

je peux t'aider si tu veux pour l'interface

Publié : mer. 29/déc./2004 22:27
par Apprenti
Merci c'est très gentil de vouloir m'aider

Je pars de zéro, m'expliquer la méthode mais pas me le faire, le but est de d'apprendre

C'est plus pour le boulot dans 2 jours on sera crevé !

Image

Publié : mer. 29/déc./2004 22:46
par Backup
la correspondance des cellule exel en basic c'est les variables !

une variable = une cellule excel


lorque dans une cellule tu met une formule en faite en basic c'est comme si tu affectais le resultat a une variable


dans une cellule mettons la C2 tu met par ex: =A2*C4

tu affecte la cellule C2 avec le resultat de la cellule A2 multiplié par C4

en basic cela donne

c2 = a2*c4

voila c2 aura le resultat
l'avantage du basic sur excel c'est qu'une variable tu peut lui donner le nom que tu veux


a la place de C2 tu peut l'appeler "resultat" cela donnerai


resultat= a2*c2

voila ou bien
benefice= chiffre_affaire-charge

ect ...

ensuite pour recuperer les valeur a mettre dans tes variable il faut construire une interface , qui sera l'equivalent de la grille excel
il y a un utilitaire de construction d'interface utilisateur fourni avec le purebasic

l'interface sera une fenetre avec des gadgets <--- (elements qui se compose de boutons , "cellule de text" de text d'information)

ces gadjets te permetront de recuperer les chiffres entré par un utilisateur
de facon a les multiplier les additioner ou les soustraire en transferant leur contenu dans des variables

cette description est la base de la programation et de ce qu'est un programme



:D

Publié : mer. 29/déc./2004 22:55
par Apprenti
Grand merci j'attaque çà début janvier

Faudra déjà que je trouve comment utiliser un gadget (j'ai essayé des cliques ou glisser-déplacer sans succès) ou l'utiiliaire de construction graphique

Je me suis permis d'envoyer des remarques de traduction de l'inferface à l'auteur car je savais où l'adresser

Publié : mer. 29/déc./2004 23:43
par jbernard13
je vais t'aider a construire l'interface

peux avec listicongadget ....

Publié : jeu. 30/déc./2004 10:40
par jbernard13
Bonjour Apprenti

je donne une petite base pour crée ton interface j'ai juste mis grossierement comme ça avec des commentaires


Code : Tout sélectionner

;exemple d'un relever de caisse  
;par Jbernard 13 
;Ceci est un exemple de base simplifier  
; On commence par crée les constantes des fenetres et des gadgets
; constante de la fenetre principale 
Enumeration
  #Fenetre_Principale; constante de la fenetre principale qui portera le numero 0 
EndEnumeration



; constante des gadgets 

Enumeration
   #caisse ; constante d'une listicon gadget 
EndEnumeration 

; constante de la barre de menu 
Enumeration 
   #menu_Nouveau 
   #menu_quitter
EndEnumeration
   

; on va ajouter des fonts 
Global FontID1 
   FontID1 = LoadFont(1, "Arial", 11, #PB_Font_Bold) 








;Creation de la  fenetre principale 

If OpenWindow(#fenetre_principale,0,0,800,600, #PB_Window_SystemMenu| #PB_Window_TitleBar |#PB_Window_ScreenCentered,"Relever de caisse ")
; creation d'un gadget 
If CreateGadgetList(WindowID())
   ListIconGadget(#Caisse ,10,20,780,580,"date du relevement",200)
; on ajoute une colonne à la liste 
   AddGadgetColumn(#caisse,1," Nombre de  Billets",250) 
   AddGadgetColumn(#caisse,2,"Total",350) 
   SetGadgetFont(#caisse, FontID1) 
EndIf
 ;creation de la barre menu 
If CreateMenu(0,WindowID());on affiche le menu  dans la fenetre 
   MenuTitle("Fichier ") ; creation du titre 
   MenuItem(#menu_nouveau, "Nouveau rélevement ") ; creation du premier élément du menu 
   MenuItem(#menu_quitter,"Quitter le programme") ;creation du deuxieme élément du menu 
  EndIf
  








EndIf
;Boucle principale du programme  

Repeat 
   event=WaitWindowEvent() ; on attend qu'un evenement se produit 
Select event
    Case #pb_eventmenu ; on crée un evement pour le menu 
Select EventMenuID() ; on selectionne l'evement du menu 
    Case #menu_quitter:  fermer_fenetre_0=1; si on selectionne quitter on sort du programme  
   
 EndSelect 
  
  
  
  
  
    Case#pb_eventclosewindow; si on clique sur la croix en haut a gauche  
   fermer_fenetre_0=1; on ferme la fenetre numero 0 
EndSelect 
   Until fermer_fenetre_0=1 ; on ferme  la fenetre numero 0 et on sort de la boucle  

End ; fin de du programme 



Publié : jeu. 30/déc./2004 22:25
par Apprenti
Merci jbernard13 mais c'est pas tout à fait le but rechercher car je voudrais que chaque s'affiche ma "copie d'écran" (déjà jointe) et n'avoir qu'à saisir que les quantités éventuelles

Dans un premier temps uniquement le calcul de l'argent et l'imprimer

Voilà pour le moment tout ce que j'arrive à faire

;======================================
; CALCUL DE LA CAISSE DU JOUR
;
; Version 0.1 (Caisse.pb)
;
;======================================
;

;- Declaration des constantes

; Fenetre
#fenetre_Parametre = 0; Jour fermeture, Jours feriés, Fond caisse, Utilisateur
#fenetre_SaisieCaisse = 1

; Gadget Fenetre Parametre
#gadget_bouton_Saisie0 = 0
#gadget_bouton_Annuler0 = 1

; Gadget Fenetre Saisie
#gadget_bouton_Efface1 = 10
#gadget_bouton_Imprime1 = 11
#gadget_bouton_Annuler1 = 12
#gadget_bouton_Parametre1 = 13

; Constante de la barre de menu
Enumeration
#menu_Saisie
#menu_Parametre
#menu_Quitter
#menu_Aide
#menu_APropos
EndEnumeration



;======================================
;- Declaration des variables globales, des strutures, des listes ou tableau, ...

; Variable Fenetre Parametre
Global DateDuJour,JourFermeture,JourFerie,Utilisateur,ContreValeur,FondCaisse

; Variable Fenetre Saisie
Global Billet500Qte,Billet500Mt,Billet200Qte,Billet200Mt,Billet100Qte,Billet100Mt
Global Billet50Qte,Billet50Mt,Billet20Qte,Billet20Mt,Billet10Qte,Billet10Mt,Billet5Qte,Billet5Mt
Global Piece2Qte,Piece2Mt,Piece1Qte,Piece1Mt
Global Piece50ctQte,Piece50ctMt,Piece20ctQte,Piece20ctMt,Piece10ctQte,Piece10ctMt,Piece5ctQte,Piece5ctMt,Piece2ctQte,Piece2ctMt,Piece1ctQte,Piece1ctMt
Global Rouleau50Qte,Rouleau50Mt,Rouleau25Qte,Rouleau25Mt,Rouleau20Qte,Rouleau20Mt
Global Rouleau8Qte,Rouleau8Mt,Rouleau4Qte,Rouleau4Mt,Rouleau2Qte,Rouleau2Mt
Global NbreBillet,NbrePiece,NbreRouleau

Global FontID1; ajout de font
FontID1 = LoadFont(1, "Arial", 11, #PB_Font_Bold)



;======================================
;- Declaration des procedures

Procedure Ouvre_SaisieCaisse() ; Ouvre la fenêtre de saisie

If OpenWindow(#fenetre_SaisieCaisse, 0, 100, 500, 600, #PB_Window_SystemMenu | #PB_Window_WindowCentered, "Saisie Caisse")
;If OpenWindow(#fenetre_SaisieCaisse, 80, 0,800,600 #PB_Window_SystemMenu | #PB_Window_TitleBar |#PB_Window_ScreenCentered,"Saisie Caisse ")
; If OpenWindow(0, 318, 80, 204, 76, #PB_Window_SystemMenu | #PB_Window_SizeGadget | #PB_Window_TitleBar , "Numérique seulement !")
If CreateGadgetList(WindowID())
StringGadget(20, 120, 20, 20, 20, "", #PB_String_Numeric); Zone de saisie numerique
StringGadget(40, 120, 50, 20, 20, "", #PB_String_Numeric);
StringGadget(60, 120, 80, 20, 20, "", #PB_String_Numeric);
StringGadget(80, 120, 110, 20, 20, "", #PB_String_Numeric);
StringGadget(100, 120, 140, 20, 20, "", #PB_String_Numeric);
StringGadget(120, 120, 170, 20, 20, "", #PB_String_Numeric);
StringGadget(140, 120, 200, 20, 20, "", #PB_String_Numeric);
StringGadget(160, 120, 230, 20, 20, "", #PB_String_Numeric);
EndIf
EndIf


; Creation de la barre de Menu
If CreateMenu(0,WindowID()); Afficher le menu dans la fenetre
MenuTitle("Caisse") ; Nom du point de menu
MenuItem(#menu_Saisie, "Saisie ") ; creation d'un élément du menu
MenuItem(#menu_Parametre, "Paramètres ")
MenuItem(#menu_Quitter,"Quitter")

MenuTitle("?")
MenuItem(#menu_Aide, "Aide ")
MenuItem(#menu_APropos, "A propos ")

EndIf


EndProcedure


;=====================================
;- Debut du programme


; Affiche la fenêtre de saisie
Ouvre_SaisieCaisse()

; Boucle de gestion des évènements de la fenêtre ouverte

Repeat

Event = WaitWindowEvent()

; Gestion des évènements

; Calcul
Billet500Qte*500 = Billet500Mt
Billet200Qte*200 = Billet200Mt

;EndIf

Until Event = #PB_EventCloseWindow; si on appuie sur la croix, on ferme le programme


End; Fin du programme

Publié : jeu. 30/déc./2004 23:04
par jbernard13
je voulais juste te donner les bases pour construire ton interface c'est tout

Publié : ven. 31/déc./2004 1:31
par Chris
Tiens, un petit code d'exemple avec seulement les billets, pour le reste, c'est la même chose.

Tel que c'est, c'est assez similaire au formules que tu rentre dans les cellules du tableur, mais c'est assez facile de simplifier tout ça en passant par une procédure qui se chargerait du calcul, plutôt que de repeter le même code à chaque gadget.

Je te laisse le soin de le faire :wink:
Le forum n'affiche pas le symbole de l'euro, et donc, dans les SetGadgetText(), il est remplacé par une barre verticale.

Code : Tout sélectionner

 ;- Window Constants
Enumeration
  #Win_0
EndEnumeration

;- Gadget Constants
Enumeration
  #Txt_0
  #Txt_TitreBillet
  #Txt_500
  #Txt_200
  #Txt_100
  #Txt_50
  #Txt_20
  #Txt_10
  #Txt_5
  #Str_Nb500
  #Str_Nb200
  #Str_Nb100
  #Str_Nb50
  #Str_Nb20
  #Str_Nb10
  #Str_Nb5
  #Txt_Total500
  #Txt_Total200
  #Txt_Total50
  #Txt_Total100
  #Txt_Total20
  #Txt_Total10
  #Txt_Total5
  #Txt_TotalBillets
  #Txt_TitreValeur
  #Txt_TitreNbre
  #Txt_TitreTotal
EndEnumeration

;- Fonts
Global FontID1, FontID2
FontID1 = LoadFont(1, "Arial", 14, #PB_Font_Bold)
FontID2 = LoadFont(2, "Arial", 12, #PB_Font_Bold)

DefType.f Montant500,Montant200,Montant100,Montant50,Montant20,Montant10,Montant5,General

Procedure Open_Win_0()
  If OpenWindow(#Win_0, 216, 0, 394, 240,  #PB_Window_SystemMenu | #PB_Window_SizeGadget | #PB_Window_TitleBar , "Caisse exemple")
    If CreateGadgetList(WindowID())
      TextGadget(#Txt_0, 5, 5, 200, 25, "Relevé de caisse du:")
      ; Le gadget du titre aura une police Arial 14
      SetGadgetFont(#Txt_0, FontID1)
      
      ; Tous les autres auront une police Arial 12
      SetGadgetFont(#PB_Default, FontID2)
      
      TextGadget(#Txt_TitreBillet, 10, 50, 70, 20, "Billets")
      TextGadget(#Txt_500, 145, 80, 60, 20, "500,00", #PB_Text_Right)
      TextGadget(#Txt_200, 145, 100, 60, 20, "200,00", #PB_Text_Right)
      TextGadget(#Txt_100, 145, 120, 60, 20, "100,00", #PB_Text_Right)
      TextGadget(#Txt_50, 145, 140, 60, 20, "50,00", #PB_Text_Right)
      TextGadget(#Txt_20, 145, 160, 60, 20, "20,00", #PB_Text_Right)
      TextGadget(#Txt_10, 145, 180, 60, 20, "10,00", #PB_Text_Right)
      TextGadget(#Txt_5, 145, 200, 60, 20, "5,00", #PB_Text_Right)
      StringGadget(#Str_Nb500, 210, 80, 50, 20, "", #PB_String_Numeric|#ES_RIGHT)
      StringGadget(#Str_Nb200, 210, 100, 50, 20, "", #PB_String_Numeric|#ES_RIGHT)
      StringGadget(#Str_Nb100, 210, 120, 50, 20, "", #PB_String_Numeric|#ES_RIGHT)
      StringGadget(#Str_Nb50, 210, 140, 50, 20, "", #PB_String_Numeric|#ES_RIGHT)
      StringGadget(#Str_Nb20, 210, 160, 50, 20, "", #PB_String_Numeric|#ES_RIGHT)
      StringGadget(#Str_Nb10, 210, 180, 50, 20, "", #PB_String_Numeric|#ES_RIGHT)
      StringGadget(#Str_Nb5, 210, 200, 50, 20, "", #PB_String_Numeric|#ES_RIGHT)
      TextGadget(#Txt_Total500, 270, 80, 105, 20, "", #PB_Text_Right | #PB_Text_Border)
      TextGadget(#Txt_Total200, 270, 100, 105, 20, "", #PB_Text_Right | #PB_Text_Border)
      TextGadget(#Txt_Total50, 270, 140, 105, 20, "", #PB_Text_Right | #PB_Text_Border)
      TextGadget(#Txt_Total100, 270, 120, 105, 20, "", #PB_Text_Right | #PB_Text_Border)
      TextGadget(#Txt_Total20, 270, 160, 105, 20, "", #PB_Text_Right | #PB_Text_Border)
      TextGadget(#Txt_Total10, 270, 180, 105, 20, "", #PB_Text_Right | #PB_Text_Border)
      TextGadget(#Txt_Total5, 270, 200, 105, 20, "", #PB_Text_Right | #PB_Text_Border)
      TextGadget(#Txt_TotalBillets, 10, 80, 105, 20, "", #PB_Text_Right | #PB_Text_Border)
      TextGadget(#Txt_TitreValeur, 145, 50, 60, 20, "Valeur")
      TextGadget(#Txt_TitreNbre, 210, 50, 50, 20, "Nbre")
      TextGadget(#Txt_TitreTotal, 265, 50, 105, 20, "Total")
    EndIf
  EndIf
  ActivateGadget(#Str_Nb500)
EndProcedure

Open_Win_0()

Repeat
  Select WaitWindowEvent()
    Case #PB_EventGadget
      Select EventGadgetID()
        Case #Str_Nb500
          If EventType() = #PB_EventType_Change
            Montant500 = Val(GetGadgetText(#Str_Nb500))*500
            SetGadgetText(#Txt_Total500,StrF(Montant500,2)+ " €" )
            General = Montant500+Montant200+Montant100+Montant50+Montant20+Montant10+Montant5
            SetGadgetText(#Txt_TotalBillets, StrF(General,2)+" €")
          EndIf
          
          
        Case #Str_Nb200
          If EventType() = #PB_EventType_Change
            Montant200 = ValF(GetGadgetText(#Str_Nb200))*200
            SetGadgetText(#Txt_Total200,StrF(Montant200,2)+ " €" )
            General = Montant500+Montant200+Montant100+Montant50+Montant20+Montant10+Montant5
            SetGadgetText(#Txt_TotalBillets, StrF(General,2)+" €")
          EndIf
          
          
        Case #Str_Nb100
          If EventType() = #PB_EventType_Change
            Montant100 = Val(GetGadgetText(#Str_Nb100))*100
            SetGadgetText(#Txt_Total100,StrF(Montant100,2)+ " €" )
            General = Montant500+Montant200+Montant100+Montant50+Montant20+Montant10+Montant5
            SetGadgetText(#Txt_TotalBillets, StrF(General,2)+" €")
          EndIf
          
          
        Case #Str_Nb50
          If EventType() = #PB_EventType_Change
            Montant50 = Val(GetGadgetText(#Str_Nb50))*50
            SetGadgetText(#Txt_Total50,StrF(Montant50,2)+ " €" )
            General = Montant500+Montant200+Montant100+Montant50+Montant20+Montant10+Montant5
            SetGadgetText(#Txt_TotalBillets, StrF(General,2)+" €")
          EndIf
          
          
        Case #Str_Nb20
          If EventType() = #PB_EventType_Change
            Montant20 = Val(GetGadgetText(#Str_Nb20))*20
            SetGadgetText(#Txt_Total20,StrF(Montant20,2)+ " €" )
            General = Montant500+Montant200+Montant100+Montant50+Montant20+Montant10+Montant5
            SetGadgetText(#Txt_TotalBillets, StrF(General,2)+" €")
          EndIf
          
          
        Case #Str_Nb10
          If EventType() = #PB_EventType_Change
            Montant10 = Val(GetGadgetText(#Str_Nb10))*10
            SetGadgetText(#Txt_Total10,StrF(Montant10,2)+ " €" )
            General = Montant500+Montant200+Montant100+Montant50+Montant20+Montant10+Montant5
            SetGadgetText(#Txt_TotalBillets, StrF(General,2)+" €")
          EndIf
          
          
        Case #Str_Nb5
          If EventType() = #PB_EventType_Change
            Montant5 = Val(GetGadgetText(#Str_Nb5))*5
            SetGadgetText(#Txt_Total5,StrF(Montant5,2)+ " €" )
            General = Montant500+Montant200+Montant100+Montant50+Montant20+Montant10+Montant5
            SetGadgetText(#Txt_TotalBillets, StrF(General,2)+" €")
          EndIf
      EndSelect
      
    Case  #PB_EventCloseWindow
      Quit = #True
  EndSelect
Until Quit 
End
Voilà, c'est ma dernière contribution pour un bon moment, je termine mon déménagement demain, et mon accès internet sera coupé demain dans la matinée. :cry:

Alors à plus tout le monde, et à bientôt, j'espère. :wink:

...:

Publié : ven. 31/déc./2004 4:17
par Apprenti
Genial, merci

A moi de digérer tout çà à présent

"une procédure qui se chargerait du calcul"
euh, j'en suis pas là.....

Pour que çà marche j'ai été obligé d'enlever
#ES_RIGHT
et de rajouter Enumeration #True

Si mes insomnies continuent je vais avoir du temps à passer dessus


Encore merci et bon déménagement

Bon 2005 à vous tous

Publié : ven. 31/déc./2004 9:58
par jbernard13
je vais t'aider

Publié : mar. 04/janv./2005 17:21
par Apprenti
Dans le code que Chris a eu la gentillesse de me donner il y a :
General = Montant500+Montant200+Montant100+Montant50+Montant20+Montant10+Montant5
qui revient souvent.

On peut pas le mettre une bonne fois dans une variable et l'appeller en cas de besoin ?

Merci d'avance

Publié : mar. 04/janv./2005 19:06
par Aranoth
Je suppose que les valeures Montant'x' changent entre temps,

tu peut simplifier comme cela:

Code : Tout sélectionner

Procedure Calculer()
General = Montant500+Montant200+Montant100+Montant50+Montant20+Montant10+Montant5
Endprocedure
Et dans le reste du code tu aura juste à écrire 'Calculer()'

C'est la fonction de calcul

Note:
-les variables General et Montant'x' doivent etre globales !
-ce code est à inserer avant son utilisation... si tu écrit Calculer() sans avoir inserer ce code, ca ne marchera pas