FORUM DE DISCUSSION SUR LE LANGAGE PANORAMIC

Développement d'applications avec le langage Panoramic
 
AccueilAccueil  FAQFAQ  RechercherRechercher  S'enregistrerS'enregistrer  MembresMembres  GroupesGroupes  Connexion  
Derniers sujets
» Demande urgente en maths.
par JL35 Aujourd'hui à 22:26

» Compilateur FBPano
par jean_debord Aujourd'hui à 11:24

» Problème de math
par braveen Aujourd'hui à 10:53

» A propos des attributs de fichier
par papydall Hier à 14:33

» Problème de math
par Marc37 Sam 21 Oct 2017 - 23:04

» I Love You
par papydall Sam 21 Oct 2017 - 19:22

» Un petit "coucou" à tous les Panoramiciens !
par mindstorm Sam 21 Oct 2017 - 17:06

» MARK_ON déclenche un événement ON_CLICK à la place de ...
par Jean Claude Mer 18 Oct 2017 - 18:08

» mise a jour calculatrice
par joeeee2017 Mer 18 Oct 2017 - 15:57

» [solved] 3D_LINE How to ?
par Jicehel Mer 18 Oct 2017 - 11:01

» Convertisseur de base 10 de 2 à 36
par gigi75 Mar 17 Oct 2017 - 18:49

» calculatrice avec touches movibles
par joeeee2017 Dim 15 Oct 2017 - 1:11

» CORTANA
par gigi75 Sam 14 Oct 2017 - 16:32

» Calculatrice
par Jean Claude Sam 14 Oct 2017 - 12:30

» KGF_dll - nouvelles versions
par Klaus Mar 10 Oct 2017 - 18:49

Navigation
 Portail
 Index
 Membres
 Profil
 FAQ
 Rechercher
Rechercher
 
 

Résultats par :
 
Rechercher Recherche avancée
Octobre 2017
LunMarMerJeuVenSamDim
      1
2345678
9101112131415
16171819202122
23242526272829
3031     
CalendrierCalendrier

Partagez | 
 

 Gestion des ventes sur eBay

Voir le sujet précédent Voir le sujet suivant Aller en bas 
AuteurMessage
Klaus

avatar

Nombre de messages : 10075
Age : 68
Localisation : Ile de France
Date d'inscription : 29/12/2009

MessageSujet: Gestion des ventes sur eBay   Jeu 25 Oct 2012 - 19:40

J'ai fait une première version d'un logiciel qui permet de gérer des ventes effectuées sur eBay.

Ce programme enregistre des ventes réalisées en mode "enchères", "achat immédiat" ou "petites annonces". Il suffit pour cela d'afficher la page du produit vendu APRES la vente, aller dans ce logiciel et cliquer sur un bouton "Charger". Le programme va alors extraire toutes les informations utiles de la page web (actuellement pour Firefox, mais l'adaptation à un autre browser est facile - une seule ligne). Tout est affiché dans des zones EDIT en haut de page. On peut alors modifier éventuellement ces informations, puis cliquer sur "Accepter". Les données sont alors ajoutées à un tableau dans un GRID. Le bouton "Accepter" vérifie que l'objet n'est pas déjà dans le tableau. On ne peut donc pas charger 2 fois le même produit.

Le programme gère:
- date et heure d'achat
- numéro d'objet
- libellé de l'objet
- prix de vente
- frais de livraison facturés
- frais réels de livraison
- frais eBay
- frais PayPal

Certaines de ces informations ne sont pas disponibles sur la page eBay du produit (fais PayPal, frais réels de livraison, ...). Leur valeur est à zéro par défaut et peut être modifiée ultérieurement. Le programme calcule le bénéfice net de la ligne par:
bénéfice = px vente + frais livr. fact. - frais réels - fais eBay - frais PayPal

Un second tableau en bas de page avec juste une seule ligne donne les totaux généraux de toutes les rubriques, montrant ainsi le béféfice réel global, entre autres.

On peut sélectionner une ligne du tableau de détail en cliquant dedans. On peut alors:
- rappeler la page produit eBay dans le browser (si le produit existe encore)
- supprimer la ligne
- modifier les frais réels, les frais eBay, les frais PayPal.

Les données du tableau sont automatiquement sauvegardées dans un fichier ebay_ventes.txt et rechargées au démarrage du programme. Ce fichier est créé automatiquement au démarrage du programme, avec un tableau vide.

Techniquement, le programme utilise KGF.dll et KGF_SUB.bas, toutes deux en dernière version (donc, à télé-charger en même temps sur MyDrive: dossier DLLs pour KGF.dll, dossier DLLs\KGF_SUB pour KGF_SUB.bas).

C'est une première version. Il peut y avoir des bugs - signalez-les.

Evolutions prévues: gérer dans le même programme les ventes sur d'autres sites comme LeBonCoin et VivaStreet, par exemple.

Code:
' ebay_ventes.bas
'
' Ce programme est un gestionnaire de ventes sur le site eBay.
'
' Il est conçu pour mémoriser les ventes réalisées par enchères,
' petites annonces et achat immmédiat. Il mémorise l'essentiel des
' informations: date, heure; numéro d'objet, libellé; prix de vente,
' frais de livraison. Il permet de saisir les frais eBay et les
' frais PayPal. Il calcule le bénéfice net pour chaque vente, et donne
' le total des objets vendus, ainsi que le total des valeurs par catégorie
' y compris le bénéfice net total. Tout est mémorisé dans un fichier
' texte nommé "ebay_ventes.txt". Ce fichier est créé vide au premier
' lancement, et chargé autimatiquement à chaque lancement suivant. Le
' tableau est sauvegardé automatiquement dans ce fichier à la sortie
' du programme.
'
' Ce programme fonctionne à partir de pages eBay mise en mémoire par
' ctrl/A ctrl/C (toute la page). Cette combinaison de touches met dans
' le presse-papier la partie purement "texte" de la page eBay. On utilise
' alors cette chaîne de caractères pour charger un memo caché afin de
' trouver les informations relevantes. Chaque information est recherchée
' selon des critères précis: La variable mode% donne le type de vante:
'  mode% = 0 ==> type indéterminé
'  mode% = 1 ==> vente sur enchères
'  mode% = 2 ==> vente immédiate
'  mode% = 3 ==> petite annonce
'
' Le bouton "Charger" cherche une page eBay dans Firefox (adaptations
' simples à faire pour d'autres explorateurs). Cette page sera entièrement
' copiée dans le presse-papier, puis dans un mémo cachée, afin d'être
' expoitée ligne par ligne. Seule la partie "texte" sera présente, sans
' les images et graphismes.
'
' Les informations relevantes sont affichées dans des champs en haut de
' la page. On peut alors les modifier. Ma fourche "Accepter" crée une
' nouvelle ligne dans le tableau, en calculant la marge nette et les
' totaux globaux. La marge nette est calculée comme suit:
'  marge nette = prix vente + frais livraison - frais réels - frais eBay - frais PayPal
'
' Un clic dans une ligne sélectionnne celle-ci. Les boutons "Mod."
' permettent de modifier les frais réels de livraison, les frais eBay
' et les fraus PaiPal. Le bouton "Supprimer" supprime la ligne de la
' luste. Le bouton "Afficher" recharge la page Web du produit (si elle
' existe encore).
'
'
'

' *** programme initial ***************************************************
labels()
constantes()
variables()
form0()
GUI()
initialisations()

end






' *** routines d'évènements ***********************************************
charger:
  s$ = id_browser$
  GetWindowByTitle(1,s$)
  hnd% = GetWindowByTitle%
  BringWindowToForeground(hnd%)

  s$ = string$(255," ")
  GetActiveWindowTitle()
  s$ = GetActiveWindowTitle$
  s$ = trim$(s$)
  if instr(s$, "sur eBay.fr" )=0
    if left$(s$,6)<>"eBay |"
      message "Ce n'est pas une page eBay: "+s$
      return
    end_if
  end_if

  s$ = chr$(9)+chr$(9)+chr$(9)+chr$(9)+chr$(9)+chr$(9)+chr$(9)+chr$(9)+chr$(9)
  SendStringAsChars(hnd%,s$)
  s$ = chr$(1)
  SendStringAsText(hnd%,s$)
  pause 300
  s$ = chr$(3)
  SendStringAsText(hnd%,s$)
  CopyToClipboard(hnd%)

  BringWindowToForeground(handle(0))

  clear no_ebay%
  s_org$ = clipboard_string_paste$
  item_add no_ebay%,s_org$
  text no_num%,""
  text no_lib%,""
  text no_prix%,""
  text no_liv%,""
  text no_lib%,""
  text no_date%,""
  text no_time%,""
  text no_frais_ebay%,""
  text no_frais_paypal%,""
  display

  s$ = item_read$(no_ebay%,1)
  if len(s$)>0
    message "Il faut mémoriser une page produit eBay! ["+s$+"]"
    return
  end_if
  s$ = item_read$(no_ebay%,2)
  if s$<>"Accéder au contenu principal"
    message "Il faut mémoriser une page produit eBay! ["+s$+"]"
    return
  end_if
  s$ = item_read$(no_ebay%,3)
  if left$(s$,5)<>"eBay"+chr$(9)
    message "Il faut mémoriser une page produit eBay! ["+s$+"]"
    return
  end_if
  lib% = 0
  prix% = 0
 
  mode% = 0
  if instr(s_org$,"Les enchères sur cet objet sont terminées.")>0 then mode% = 1
  if instr(s_org$,"Cette vente avec l'option Achat immédiat est terminée.")>0 then mode% = 2
  if instr(s_org$,"Petites Annonces :")>0 then mode% = 3
  if mode%=0
    message "Je n'ai pas pu déterminer le type de vente."
    return
  end_if

for i%=4 to count(no_ebay%)
  s$ = item_read$(no_ebay%,i%)
 
  ' === identifier les frais de livraison
  if mode%<3
    p% = instr(s$,"Livraison :")
    if p%>0
      s$ = mid$(s$,p%+12,len(s$))
      p% = instr(s$," EUR")
      if p%>0
        s$ = left$(s$,p%-1)
        text no_liv%,s$
      end_if
      if instr(s$,"GRATUIT")>0 then text no_liv%,"0,00"
    end_if
  end_if
  if mode%=3 then text no_liv%,"0,00"
 
  ' === identifier le prix de vente
  if mode%<3
    p% = instr(s$," EUR"+chr$(9))
    if p%>0
      s$ = left$(s$,p%+3)
      p% = instr(s$," :")
      if p%>0 then s$ = mid$(s$,p%+2,len(s$))
      if left$(s$,1)=chr$(9) then s$ = mid$(s$,2,len(s$))
      text no_prix%,left$(s$,len(s$)-4)
    end_if
  end_if
  if mode%=3
    if left$(s$,18)="Petites Annonces :"
      prix% = i% + 2
    end_if
    if i%=prix%
      text no_prix%,left$(s$,len(s$)-2)
      prix% = 0
    end_if
  end_if
 
  ' === identifier le libellé de l'objet
  if mode%=1
    if s$="Les enchères sur cet objet sont terminées." then lib% = 1
    if (lib%=1) and (s$=chr$(9)) then lib% = i% + 1
  end_if
  if mode%=2
    if instr(s$,"Ajouté(s) à votre liste d'Affaires à suivre")>0 then lib% = 1
    if (lib%=1) and (s$=chr$(9)) then lib% = i% + 1
  end_if
  if mode%=3
    if instr(s$,"Ajouter à vos Affaires à suivre")>0 then lib% = i% + 1
  end_if
  if i%=lib%
    text no_lib%,s$
    lib% = 0
  end_if

  ' === identifier le numéro d'objet
  p% = instr(s$,"Numéro de l'objet :")
  if p%>0
    s$ = mid$(s$,p%,len(s$))
    p% = instr(s$,":")
    text no_num%,mid$(s$,p%+2,len(s$))
  end_if
 
  ' === identifier date et heure de la fin des enchères
  p% = instr(s$,"Fin :"+chr$(9))
  if p%>0
    text no_date%,mid$(s$,p%+6,12)
    text no_time%,mid$(s$,p%+18,8)
  end_if
 
  ' === frais réels de livraison, frais eBay et frais PayPal
  text no_frais_reel%,"0,00"
  text no_frais_ebay%,"0,00"
  text no_frais_paypal%,"0,00"

next i%
return

accepter:
  if n_table%>0
    for i%=1 to n_table%
      s$ = grid_read$(no_table%,i%+1,4)
      if s$=text$(no_num%)
        message "Cet objet est déjà dans la liste !"
        return
      end_if
    next i%
  end_if
  n_table% = n_table% + 1
  grid_row no_table%,n_table% + 1
  grid_write no_table%,n_table%+1,1,str$(n_table%)
  grid_write no_table%,n_table%+1,2,text$(no_date%)
  grid_write no_table%,n_table%+1,3,text$(no_time%)
  grid_write no_table%,n_table%+1,4,text$(no_num%)
  grid_write no_table%,n_table%+1,5,text$(no_lib%)
  grid_write no_table%,n_table%+1,6,text$(no_prix%)
  grid_write no_table%,n_table%+1,7,text$(no_liv%)
  grid_write no_table%,n_table%+1,8,text$(no_frais_ebay%)
  grid_write no_table%,n_table%+1,9,text$(no_frais_paypal%)
  calculer_marge(n_table%+1)
  totaux_plus(n_table%+1)
  if n_table%=1 then grid_row_fixed no_table%,1
  return
 
afficher:
  i% = mouse_y_left_down(no_table%)
  i% = grid_y_to_row(no_table%,i%)
  if i%=1 then return
  s$ = id_browser$
  GetWindowByTitle(1,s$)
  hnd% = GetWindowByTitle%
  BringWindowToForeground(hnd%)
  s$ = chr$(20)+ebay_search$+grid_read$(no_table%,i%,4)+chr$(13)
  SendStringAsText(hnd%,s$)
  return
 
supprimer:
  i% = mouse_y_left_down(no_table%)
  i% = grid_y_to_row(no_table%,i%)
  if i%=1 then return
  s$ = grid_read$(no_table%,i%,4) +": "+ grid_read$(no_table%,i%,5)
  if message_confirmation_yes_no("Vraiment supprimer: "+s$)=1
    totaux_moins(i%)
    grid_row_delete no_table%,i%
    n_table% = n_table% - 1
  end_if
  return
 
close0:
  grid_save no_table%,n_table%+1,c_table%,f_base$
  return

click_table:
  col% = mouse_x_left_down(no_table%)
  col% = grid_x_to_column(no_table%,col%)
  if col%=4 then set_focus no_afficher%
  if col%=8 then set_focus no_mod_frais_reel%
  if col%=9 then set_focus no_mod_frais_ebay%
  if col%=10 then set_focus no_mod_frais_paypal%
  return
 
mod_reel:
  i% = mouse_y_left_down(no_table%)
  i% = grid_y_to_row(no_table%,i%)
  if i%=1 then return
  s$ = grid_read$(no_table%,i%,8)
  s1$ = grid_read$(no_table%,i%,5)
  s2$ = grid_read$(no_table%,i%,4)
  if message_input("Frais livraison réels "+s2$,s1$+": "+s$,s$)=1
    s2$ = message_text$
    p% = instr(s2$,",")
    if p%>0 then s2$ = left$(s2$,p%-1) + "." + mid$(s2$,p%+1,len(s2$))
    if s2$="" then s2$ = "0.00"
    if instr(s2$,".")=0 then s2$ = s2$ + ".00"
    if instr(s2$,".")=len(s2$)-1 then s2$ = s2$ + "0"
    if numeric(s2$)=0 then message "x"
    if s$="" then s$ = "0.00"
    s$ = left$(s$,len(s$)-3) + "." + right$(s$,2)
    reel_total = reel_total - val(s$) + val(s2$)
    marge_total = marge_total + val(s$) - val(s2$)
    grid_write no_table%,i%,8,s2$
    calculer_marge(i%)
    totaux_afficher()
  end_if
  return
 
mod_ebay:
  i% = mouse_y_left_down(no_table%)
  i% = grid_y_to_row(no_table%,i%)
  if i%=1 then return
  s$ = grid_read$(no_table%,i%,9)
  s1$ = grid_read$(no_table%,i%,5)
  s2$ = grid_read$(no_table%,i%,4)
  if message_input("Frais eBay objet "+s2$,s1$+": "+s$,s$)=1
    s2$ = message_text$
    p% = instr(s2$,",")
    if p%>0 then s2$ = left$(s2$,p%-1) + "." + mid$(s2$,p%+1,len(s2$))
    if s2$="" then s2$ = "0.00"
    if instr(s2$,".")=0 then s2$ = s2$ + ".00"
    if instr(s2$,".")=len(s2$)-1 then s2$ = s2$ + "0"
    if numeric(s2$)=0 then message "x"
    if s$="" then s$ = "0.00"
    s$ = left$(s$,len(s$)-3) + "." + right$(s$,2)
    ebay_total = ebay_total - val(s$) + val(s2$)
    marge_total = marge_total + val(s$) - val(s2$)
    grid_write no_table%,i%,9,s2$
    calculer_marge(i%)
    totaux_afficher()
  end_if
  return

mod_paypal:
  i% = mouse_y_left_down(no_table%)
  i% = grid_y_to_row(no_table%,i%)
  if i%=1 then return
  s$ = grid_read$(no_table%,i%,19)
  s1$ = grid_read$(no_table%,i%,5)
  s2$ = grid_read$(no_table%,i%,4)
  if message_input("Frais PayPal objet "+s2$,s1$+": "+s$,s$)=1
    s2$ = message_text$
    p% = instr(s2$,",")
    if p%>0 then s2$ = left$(s2$,p%-1) + "." + mid$(s2$,p%+1,len(s2$))
    if s2$="" then s2$ = "0.00"
    if instr(s2$,".")=0 then s2$ = s2$ + ".00"
    if instr(s2$,".")=len(s2$)-1 then s2$ = s2$ + "0"
    if numeric(s2$)=0 then message "x"
    if s$="" then s$ = "0.00"
    s$ = left$(s$,len(s$)-3) + "." + right$(s$,2)
    paypal_total = paypal_total - val(s$) + val(s2$)
    marge_total = marge_total + val(s$) - val(s2$)
    grid_write no_table%,i%,10,s2$
    calculer_marge(i%)
    totaux_afficher()
  end_if
  return




' *** procédures du programme initial *************************************
sub labels()
  label close0, charger, accepter, afficher, supprimer, click_table
  label mod_ebay, mod_paypal, mod_reel
end_sub

sub constantes()
  dim c_table% : c_table% = 11
  dim f_base$ : f_base$ = "ebay_ventes.txt"
  dim id_browser$ : id_browser$ = " - Mozilla Firefox"
  dim ebay_search$ : ebay_search$ = "http://cgi.ebay.fr/ws/eBayISAPI.dll?ViewItem&item="
end_sub

sub variables()
  dim no%, s$, s1$, s2$, s_org$, i%, p%
  dim lib%, prix%, i1%, n%, mode%, col%, nom$, hnd%
  dim no_ebay%, no_num%, no_lib%, no_prix%, no_liv%
  dim no_date%, no_time%, no_table%, no_total%, no_frais_reel%
  dim no_mod_frais_ebay%, no_mod_frais_paypal%,  no_mod_frais_reel%
  dim no_frais_ebay%, no_frais_paypal%, no_afficher%
  dim n_table%, marge
  dim prix_total, liv_total, reel_total, ebay_total, paypal_total, marge_total
end_sub

sub form0()
  width 0,1050 : height 0,800
  on_close 0,close0
end_sub

sub GUI()
'  no% = no% + 1 : dlist no% : no_temp% = no%
  no% = no% + 1 : memo no% : no_ebay% = no% : width no%,900
    hide no%
  no% = no% + 1 : button no% : top no%,10 : left no%,10
    caption no%,"Charger" : on_click no%,charger
  no% = no% + 1 : button no% : top no%,70 : left no%,10
    caption no%,"Accepter" : on_click no%,accepter
  no% = no% + 1 : alpha no%
 
    top no%,10 : left no%,120 : caption no%,"Objet:"
  no% = no% + 1 : edit no% : no_num% = no%
    top no%,10 : left no%,160
  no% = no% + 1 : alpha no%
    top no%,10 : left no%,300 : caption no%,"Titre:"
  no% = no% + 1 : edit no% : no_lib% = no% : width no%,400
    top no%,10 : left no%,360
  no% = no% + 1 : alpha no%
    top no%,40 : left no%,120 : caption no%,"Prix:"
  no% = no% + 1 : edit no% : no_prix% = no%
    top no%,40 : left no%,160 : width no%,80
  no% = no% + 1 : alpha no%
    top no%,40 : left no%,300 : caption no%,"Livraison:"
  no% = no% + 1 : edit no% : no_liv% = no%
    top no%,40 : left no%,360 : width no%,50
  no% = no% + 1 : alpha no%
    top no%,40 : left no%,430 : caption no%,"Frais réels:"
  no% = no% + 1 : edit no% : no_frais_reel% = no%
    top no%,40 : left no%,510 : width no%,50
  no% = no% + 1 : alpha no%
    top no%,40 : left no%,580 : caption no%,"Date:"
  no% = no% + 1 : edit no% : no_date% = no%
    top no%,40 : left no%,620 : width no%,80
  no% = no% + 1 : alpha no%
    top no%,40 : left no%,730 : caption no%,"Heure:"
  no% = no% + 1 : edit no% : no_time% = no%
    top no%,40 : left no%,780 : width no%,60
  no% = no% + 1 : alpha no%
    top no%,70 : left no%,300 : caption no%,"Frais eBay:"
  no% = no% + 1 : edit no% : no_frais_ebay% = no%
    top no%,70 : left no%,360 : width no%,50
  no% = no% + 1 : alpha no%
    top no%,70 : left no%,430 : caption no%,"Frais PayPal:"
  no% = no% + 1 : edit no% : no_frais_paypal% = no%
    top no%,70 : left no%,510 : width no%,50

   
  no% = no% + 1 : grid no% : no_table% = no%
    top no%,130 : left no%,c_table% : width no%,1027 : height no%,503
    on_click no%,click_table
    grid_row no%,1 : grid_column no%,c_table%
    grid_one_column_width no%,1,50
    grid_write no%,1,1,"No."
    grid_one_column_width no%,2,80
    grid_write no%,1,2,"Date"
    grid_one_column_width no%,3,60
    grid_write no%,1,3,"Heure"
    grid_one_column_width no%,4,80
    grid_write no%,1,4,"Objet"
    grid_one_column_width no%,5,400
    grid_write no%,1,5,"Titre"
    grid_one_column_width no%,6,80
    grid_write no%,1,6,"Prix"
    grid_one_column_width no%,7,50
    grid_write no%,1,7,"Livraison"
    grid_one_column_width no%,8,50
    grid_write no%,1,8,"Frais réels"
    grid_one_column_width no%,9,50
    grid_write no%,1,9,"eBay"
    grid_one_column_width no%,10,50
    grid_write no%,1,10,"PayPal"
    grid_one_column_width no%,11,50
    grid_write no%,1,11,"Marge"

  no% = no% + 1 : grid no% : no_total% = no%
    top no%,640 : left no%,10 : width no%,1027 : height no%,56
    grid_row no%,2 : grid_column no%,c_table%
    grid_one_column_width no%,1,50
    grid_write no%,1,1,"Total"
    grid_one_column_width no%,2,80
    grid_one_column_width no%,3,60
    grid_one_column_width no%,4,80
    grid_one_column_width no%,5,400
    grid_one_column_width no%,6,80
    grid_write no%,1,6,"Prix"
    grid_one_column_width no%,7,50
    grid_write no%,1,7,"Livraison"
    grid_one_column_width no%,8,50
    grid_write no%,1,8,"Frais réels"
    grid_one_column_width no%,9,50
    grid_write no%,1,9,"eBay"
    grid_one_column_width no%,10,50
    grid_write no%,1,10,"PayPal"
    grid_one_column_width no%,11,50
    grid_write no%,1,11,"Marge"

  no% = no% + 1 : button no% : top no%,100 : left no%,205
    caption no%,"Afficher" : on_click no%,afficher : no_afficher% = no%
  no% = no% + 1 : button no% : top no%,100 : left no%,400
    caption no%,"Supprimer" : on_click no%,supprimer
  no% = no% + 1 : button no% : top no%,100 : left no%,820 : width no%,50
    caption no%,"Mod." : on_click no%,mod_reel : no_mod_frais_reel% = no%
  no% = no% + 1 : button no% : top no%,100 : left no%,870 : width no%,50
    caption no%,"Mod." : on_click no%,mod_ebay : no_mod_frais_ebay% = no%
  no% = no% + 1 : button no% : top no%,100 : left no%,920 : width no%,50
    caption no%,"Mod." : on_click no%,mod_paypal : no_mod_frais_paypal% = no%

end_sub

sub initialisations()
  dim_local s1$
  n_table% = 0
  prix_total = 0
  liv_total = 0
  if file_exists(f_base$)=1 then grid_load no_table%,f_base$
  n_table% = 1
  repeat
    s1$ = grid_read$(no_table%,n_table%+1,1)
    if s1$="" then exit_repeat
    totaux_plus(n_table%+1)
    n_table% = n_table% + 1
  until s1$=""
  grid_row no_table%, n_table%
  n_table% = n_table% - 1
  if n_table%>0 then grid_row_fixed no_table%,1
 
  KGF_initialize("KGF.dll")
 
  nom$ = "firefox.exe"
  hnd% = dll_call1("GetProcessWindowHandle",adr(nom$))

end_sub






' *** procédures de l'application *****************************************
sub totaux_plus(ind%)
  s$ = grid_read$(no_table%,ind%,6)
  if s$="" then s$ = "0.00"
  s$ = left$(s$,len(s$)-3) + "." + right$(s$,2)
  prix_total = prix_total + val(s$)
  s$ = grid_read$(no_table%,ind%,7)
  if s$="" then s$ = "0.00"
  s$ = left$(s$,len(s$)-3) + "." + right$(s$,2)
  liv_total = liv_total + val(s$)
  s$ = grid_read$(no_table%,ind%,8)
  if s$="" then s$ = "0.00"
  s$ = left$(s$,len(s$)-3) + "." + right$(s$,2)
  reel_total = reel_total + val(s$)
  s$ = grid_read$(no_table%,ind%,9)
  if s$="" then s$ = "0.00"
  s$ = left$(s$,len(s$)-3) + "." + right$(s$,2)
  ebay_total = ebay_total + val(s$)
  s$ = grid_read$(no_table%,ind%,10)
  if s$="" then s$ = "0.00"
  s$ = left$(s$,len(s$)-3) + "." + right$(s$,2)
  paypal_total = paypal_total + val(s$)
  s$ = grid_read$(no_table%,ind%,11)
  if s$="" then s$ = "0.00"
  s$ = left$(s$,len(s$)-3) + "." + right$(s$,2)
  marge_total = marge_total + val(s$)
  totaux_afficher()
end_sub

sub totaux_moins(ind%)
  s$ = grid_read$(no_table%,ind%,6)
  if s$="" then s$ = "0.00"
  s$ = left$(s$,len(s$)-3) + "." + right$(s$,2)
  prix_total = prix_total - val(s$)
  s$ = grid_read$(no_table%,ind%,7)
  if s$="" then s$ = "0.00"
  s$ = left$(s$,len(s$)-3) + "." + right$(s$,2)
  liv_total = liv_total - val(s$)
  s$ = grid_read$(no_table%,ind%,8)
  if s$="" then s$ = "0.00"
  s$ = left$(s$,len(s$)-3) + "." + right$(s$,2)
  reel_total = reel_total - val(s$)
  s$ = grid_read$(no_table%,ind%,9)
  if s$="" then s$ = "0.00"
  s$ = left$(s$,len(s$)-3) + "." + right$(s$,2)
  ebay_total = ebay_total - val(s$)
  s$ = grid_read$(no_table%,ind%,10)
  if s$="" then s$ = "0.00"
  s$ = left$(s$,len(s$)-3) + "." + right$(s$,2)
  paypal_total = paypal_total - val(s$)
  totaux_afficher()
  s$ = grid_read$(no_table%,ind%,11)
  if s$="" then s$ = "0.00"
  s$ = left$(s$,len(s$)-3) + "." + right$(s$,2)
  marge_total = marge_total - val(s$)
  totaux_afficher()
end_sub

sub totaux_afficher()
  grid_write no_total%,2,1,str$(n_table%)
  s$ = str$(prix_total)
  p% = instr(s$,".")
  if p%>0 then s$ = left$(s$,p%-1) + "," + mid$(s$,p%+1,len(s$))
  if instr(s$,",")=0 then s$ = s$ + ",00"
  if instr(s$,",")=len(s$)-1 then s$ = s$ + "0"
  grid_write no_total%,2,6,s$
  s$ = str$(liv_total)
  p% = instr(s$,".")
  if p%>0 then s$ = left$(s$,p%-1) + "," + mid$(s$,p%+1,len(s$))
  if instr(s$,",")=0 then s$ = s$ + ",00"
  if instr(s$,",")=len(s$)-1 then s$ = s$ + "0"
  grid_write no_total%,2,7,s$
  s$ = str$(reel_total)
  p% = instr(s$,".")
  if p%>0 then s$ = left$(s$,p%-1) + "," + mid$(s$,p%+1,len(s$))
  if instr(s$,",")=0 then s$ = s$ + ",00"
  if instr(s$,",")=len(s$)-1 then s$ = s$ + "0"
  grid_write no_total%,2,8,s$
  s$ = str$(ebay_total)
  p% = instr(s$,".")
  if p%>0 then s$ = left$(s$,p%-1) + "," + mid$(s$,p%+1,len(s$))
  if instr(s$,",")=0 then s$ = s$ + ",00"
  if instr(s$,",")=len(s$)-1 then s$ = s$ + "0"
  grid_write no_total%,2,9,s$
  s$ = str$(paypal_total)
  p% = instr(s$,".")
  if p%>0 then s$ = left$(s$,p%-1) + "," + mid$(s$,p%+1,len(s$))
  if instr(s$,",")=0 then s$ = s$ + ",00"
  if instr(s$,",")=len(s$)-1 then s$ = s$ + "0"
  grid_write no_total%,2,10,s$
  s$ = str$(marge_total)
  p% = instr(s$,".")
  if p%>0 then s$ = left$(s$,p%-1) + "," + mid$(s$,p%+1,len(s$))
  if instr(s$,",")=0 then s$ = s$ + ",00"
  if instr(s$,",")=len(s$)-1 then s$ = s$ + "0"
  grid_write no_total%,2,11,s$
end_sub

sub calculer_marge(ind%)
  s$ = grid_read$(no_table%,ind%,6)
  if s$="" then s$ = "0.00"
  s$ = left$(s$,len(s$)-3) + "." + right$(s$,2)
  marge = val(s$)
  s$ = grid_read$(no_table%,ind%,7)
  if s$="" then s$ = "0.00"
  s$ = left$(s$,len(s$)-3) + "." + right$(s$,2)
  marge = marge + val(s$)
  s$ = grid_read$(no_table%,ind%,8)
  if s$="" then s$ = "0.00"
  s$ = left$(s$,len(s$)-3) + "." + right$(s$,2)
  marge = marge - val(s$)
  s$ = grid_read$(no_table%,ind%,9)
  if s$="" then s$ = "0.00"
  s$ = left$(s$,len(s$)-3) + "." + right$(s$,2)
  marge = marge - val(s$)
  s$ = grid_read$(no_table%,ind%,10)
  if s$="" then s$ = "0.00"
  s$ = left$(s$,len(s$)-3) + "." + right$(s$,2)
  marge = marge - val(s$)
  s$ = str$(marge)
  p% = instr(s$,".")
  if p%>0 then s$ = left$(s$,p%-1) + "," + mid$(s$,p%+1,len(s$))
  if instr(s$,",")=0 then s$ = s$ + ",00"
  if instr(s$,",")=len(s$)-1 then s$ = s$ + "0"
  grid_write no_table%,ind%,11,s$
end_sub

#INCLUDE "KGF_SUB.bas"

EDIT

Le code est modifié pour tirer aventage de la toute nouvelle version V0.24i5 avec GRID_ROW_DELETE !
Revenir en haut Aller en bas
Voir le profil de l'utilisateur http://klauspanoramic.comxa.com/index.html
Klaus

avatar

Nombre de messages : 10075
Age : 68
Localisation : Ile de France
Date d'inscription : 29/12/2009

MessageSujet: Re: Gestion des ventes sur eBay   Ven 26 Oct 2012 - 15:09

Et voici une nouvelle version, gérant 2 sites:
- eBay = site principal, affiché par défaut, et regroupant les totaux de tous les sites et les totaux généraux
- LeBonCoi = 1er site annexe

Les totaux des sites annexes seront reportés automatiquement dans le tableau des totaux en bas de la page principale (eBay). On choisit un site par un combo en haut à droite de l'écran.Le choix d'un site annexe cache se site principal et affiche la page de ce site. En fermant la page du site annexe par la croix rouge, la pare principale réapparaît, mais les données ne sont pas perdues.

A la fin, les tableaux de chaque site sont sauvegardés dans des fichiers (ebay_ventes.txt, leboncoin_ventes.txt, ...) et ces fichiers sont rechargés automatiquement au démarrage. Les totaux par site et totaux généraux ne sont pas sauvegardés, mais recalculés après le rechargement des tableaux.
Code:
' ebay_ventes.bas
'
' Ce programme est un gestionnaire de ventes sur le site eBay et
' autres sites de vente. A ce jour, les sites suivants sont gérés:
'    eBay
'    LeBonCoin
' La description qui suit est ciblé sur eBay, de loin le site le plus
' complexe. Pour les autres sites, le principe est le même, mais il y a
' moins d'informations pour chaque produit. On choisit un site par le
' combo en haut à droite de la page. La page du site en cours disparaît
' et la page du site choisi apparaît. La fermeture d'une page d'un site
' autre que eBay ferme cette page et revient sur la page eBay. La
' fermeture de la page eBay sauvegarde les données de TOUS les sites,
' puis termne l'application..
'
' Il est conçu pour mémoriser les ventes réalisées par enchères,
' petites annonces et achat immmédiat. Il mémorise l'essentiel des
' informations: date, heure; numéro d'objet, libellé; prix de vente,
' frais de livraison. Il permet de saisir les frais eBay et les
' frais PayPal. Il calcule le bénéfice net pour chaque vente, et donne
' le total des objets vendus, ainsi que le total des valeurs par catégorie
' y compris le bénéfice net total. Tout est mémorisé dans un fichier
' texte nommé "ebay_ventes.txt". Ce fichier est créé vide au premier
' lancement, et chargé autimatiquement à chaque lancement suivant. Le
' tableau est sauvegardé automatiquement dans ce fichier à la sortie
' du programme.
'
' Ce programme fonctionne à partir de pages eBay mise en mémoire par
' ctrl/A ctrl/C (toute la page). Cette combinaison de touches met dans
' le presse-papier la partie purement "texte" de la page eBay. On utilise
' alors cette chaîne de caractères pour charger un memo caché afin de
' trouver les informations relevantes. Chaque information est recherchée
' selon des critères précis: La variable mode% donne le type de vante:
'  mode% = 0 ==> type indéterminé
'  mode% = 1 ==> vente sur enchères
'  mode% = 2 ==> vente immédiate
'  mode% = 3 ==> petite annonce
'
' Le bouton "Charger" cherche une page eBay dans Firefox (adaptations
' simples à faire pour d'autres explorateurs). Cette page sera entièrement
' copiée dans le presse-papier, puis dans un mémo cachée, afin d'être
' expoitée ligne par ligne. Seule la partie "texte" sera présente, sans
' les images et graphismes.
'
' Les informations relevantes sont affichées dans des champs en haut de
' la page. On peut alors les modifier. Ma fourche "Accepter" crée une
' nouvelle ligne dans le tableau, en calculant la marge nette et les
' totaux globaux. La marge nette est calculée comme suit:
'  marge nette = prix vente + frais livraison - frais réels - frais eBay - frais PayPal
'
' Un clic dans une ligne sélectionnne celle-ci. Les boutons "Mod."
' permettent de modifier les frais réels de livraison, les frais eBay
' et les fraus PaiPal. Le bouton "Supprimer" supprime la ligne de la
' luste. Le bouton "Afficher" recharge la page Web du produit (si elle
' existe encore).
'
'
'

' *** programme initial ***************************************************
labels()
constantes()
variables()
form0()
GUI()
initialisations()

end






' *** routines d'évènements ***********************************************
charger1:
  get_browser()
  if instr(s$, "sur eBay.fr" )=0
    if left$(s$,6)<>"eBay |"
      BringWindowToForeground(handle(0))
      message "Ce n'est pas une page eBay: "+s$
      return
    end_if
  end_if
  get_page_text()
  BringWindowToForeground(handle(0))

  clear no_ebay%
  s_org$ = clipboard_string_paste$
  item_add no_ebay%,s_org$
  text no_num%,""
  text no_lib%,""
  text no_prix%,""
  text no_liv%,""
  text no_lib%,""
  text no_date%,""
  text no_time%,""
  text no_frais_ebay%,""
  text no_frais_paypal%,""
  display

  s$ = item_read$(no_ebay%,1)
  if len(s$)>0
    message "Il faut mémoriser une page produit eBay! ["+s$+"]"
    return
  end_if
  s$ = item_read$(no_ebay%,2)
  if s$<>"Accéder au contenu principal"
    message "Il faut mémoriser une page produit eBay! ["+s$+"]"
    return
  end_if
  s$ = item_read$(no_ebay%,3)
  if left$(s$,5)<>"eBay"+chr$(9)
    message "Il faut mémoriser une page produit eBay! ["+s$+"]"
    return
  end_if
  lib% = 0
  prix% = 0
 
  mode% = 0
  if instr(s_org$,"Les enchères sur cet objet sont terminées.")>0 then mode% = 1
  if instr(s_org$,"Cette vente avec l'option Achat immédiat est terminée.")>0 then mode% = 2
  if instr(s_org$,"Petites Annonces :")>0 then mode% = 3
  if mode%=0
    message "Je n'ai pas pu déterminer le type de vente."
    return
  end_if

for i%=4 to count(no_ebay%)
  s$ = item_read$(no_ebay%,i%)
 
  ' === identifier les frais de livraison
  if mode%<3
    p% = instr(s$,"Livraison :")
    if p%>0
      s$ = mid$(s$,p%+12,len(s$))
      p% = instr(s$," EUR")
      if p%>0
        s$ = left$(s$,p%-1)
        text no_liv%,s$
      end_if
      if instr(s$,"GRATUIT")>0 then text no_liv%,"0,00"
    end_if
  end_if
  if mode%=3 then text no_liv%,"0,00"
 
  ' === identifier le prix de vente
  if mode%<3
    p% = instr(s$," EUR"+chr$(9))
    if p%>0
      s$ = left$(s$,p%+3)
      p% = instr(s$," :")
      if p%>0 then s$ = mid$(s$,p%+2,len(s$))
      if left$(s$,1)=chr$(9) then s$ = mid$(s$,2,len(s$))
      text no_prix%,left$(s$,len(s$)-4)
    end_if
  end_if
  if mode%=3
    if left$(s$,18)="Petites Annonces :"
      prix% = i% + 2
    end_if
    if i%=prix%
      text no_prix%,left$(s$,len(s$)-2)
      prix% = 0
    end_if
  end_if
 
  ' === identifier le libellé de l'objet
  if mode%=1
    if s$="Les enchères sur cet objet sont terminées." then lib% = 1
    if (lib%=1) and (s$=chr$(9)) then lib% = i% + 1
  end_if
  if mode%=2
    if instr(s$,"Ajouté(s) à votre liste d'Affaires à suivre")>0 then lib% = 1
    if (lib%=1) and (s$=chr$(9)) then lib% = i% + 1
  end_if
  if mode%=3
    if instr(s$,"Ajouter à vos Affaires à suivre")>0 then lib% = i% + 1
  end_if
  if i%=lib%
    text no_lib%,s$
    lib% = 0
  end_if

  ' === identifier le numéro d'objet
  p% = instr(s$,"Numéro de l'objet :")
  if p%>0
    s$ = mid$(s$,p%,len(s$))
    p% = instr(s$,":")
    text no_num%,mid$(s$,p%+2,len(s$))
  end_if
 
  ' === identifier date et heure de la fin des enchères
  p% = instr(s$,"Fin :"+chr$(9))
  if p%>0
    text no_date%,mid$(s$,p%+6,12)
    text no_time%,mid$(s$,p%+18,8)
  end_if
 
  ' === frais réels de livraison, frais eBay et frais PayPal
  text no_frais_reel%,"0,00"
  text no_frais_ebay%,"0,00"
  text no_frais_paypal%,"0,00"

next i%
return

accepter1:
  if n_table%>0
    for i%=1 to n_table%
      s$ = grid_read$(no_table%,i%+1,4)
      if s$=text$(no_num%)
        message "Cet objet est déjà dans la liste !"
        return
      end_if
    next i%
  end_if
  n_table% = n_table% + 1
  grid_row no_table%,n_table% + 1
  grid_write no_table%,n_table%+1,1,str$(n_table%)
  grid_write no_table%,n_table%+1,2,text$(no_date%)
  grid_write no_table%,n_table%+1,3,text$(no_time%)
  grid_write no_table%,n_table%+1,4,text$(no_num%)
  grid_write no_table%,n_table%+1,5,text$(no_lib%)
  grid_write no_table%,n_table%+1,6,text$(no_prix%)
  grid_write no_table%,n_table%+1,7,text$(no_liv%)
  grid_write no_table%,n_table%+1,8,text$(no_frais_ebay%)
  grid_write no_table%,n_table%+1,9,text$(no_frais_paypal%)
  calculer_marge(n_table%+1)
  totaux_plus(n_table%+1)
  if n_table%=1 then grid_row_fixed no_table%,1
  return
 
charger2:
  get_browser()
  if instr(s$, "- leboncoin.fr" )=0
    BringWindowToForeground(handle(no_LeBonCoin%))
    message "Ce n'est pas une page LeBonCoin: "+s$
    return
  end_if
  get_page_text()
  BringWindowToForeground(handle(no_LeBonCoin%))
  clear no_ebay%
  s_org$ = clipboard_string_paste$
  item_add no_ebay%,s_org$
  if instr(s_org$,"Mise en ligne par")=0
    message "Ce n'est pas une page produit."
    return
  end_if
  lib% = 0
 
  for i%=4 to count(no_ebay%)
    s$ = item_read$(no_ebay%,i%)

  ' === identifier le prix de vente
  p% = instr(s$,"Prix : "+chr$(9))
  if p%>0
    s$ = mid$(s$,p%+8,len(s$))
    s$ = left$(s$,len(s$)-2)
    p% = instr(s$," ")
    while p%>0
      s$ = left$(s$,p%-1)+mid$(s$,p%+1,len(s$))
      p% = instr(s$," ")
    end_while
    if right$(s$,3)<>",00) then s$ = s$ + ",00"
    text no_prix2%,s$
  end_if

  ' === identifier le libellé de l'objet
  if instr(s$,"Accueil > ")=1 then lib% = i% + 1
  if i%=lib%
    text no_lib2%,s$
    lib% = 0
  end_if

  ' === identifier date et heure de la mie en vente
  ' Mise en ligne par Eric le 25 octobre à 23:49.
  p% = instr(s$,"Mise en ligne par ")
  if p%>0
    p% = instr(s$," le ")
    p1% = instr(s$," à ")
    text no_date2%,mid$(s$,p%+4,p1%-p%-4)
    text no_time2%,mid$(s$,p1%+3,5)
  end_if
next i%
  return
 
accepter2:
  if n_table2%>0
    for i%=1 to n_table2%
      s$ = grid_read$(no_table2%,i%+1,4)
      if s$=text$(no_lib2%)
        s$ = grid_read$(no_table2%,i%+1,5)
          if s$=text$(no_prix2%)
            message "Cet objet est déjà dans la liste !"
            return
          end_if
      end_if
    next i%
  end_if
  n_table2% = n_table2% + 1
  grid_row no_table2%,n_table2% + 1
  grid_write no_table2%,n_table2%+1,1,str$(n_table2%)
  grid_write no_table2%,n_table2%+1,2,text$(no_date2%)
  grid_write no_table2%,n_table2%+1,3,text$(no_time2%)
  grid_write no_table2%,n_table2%+1,4,text$(no_lib2%)
  grid_write no_table2%,n_table2%+1,5,text$(no_prix2%)
  calculer_marge2(n_table2%+1)
  totaux_plus2(n_table2%+1)
  if n_table2%=1 then grid_row_fixed no_table2%,1
  return
 
afficher:
  i% = mouse_y_left_down(no_table%)
  i% = grid_y_to_row(no_table%,i%)
  if i%=1 then return
  s$ = id_browser$
  GetWindowByTitle(1,s$)
  hnd% = GetWindowByTitle%
  BringWindowToForeground(hnd%)
  s$ = chr$(20)+ebay_search$+grid_read$(no_table%,i%,4)+chr$(13)
  SendStringAsText(hnd%,s$)
  return
 
supprimer:
  i% = mouse_y_left_down(no_table%)
  i% = grid_y_to_row(no_table%,i%)
  if i%=1 then return
  s$ = grid_read$(no_table%,i%,4) +": "+ grid_read$(no_table%,i%,5)
  if message_confirmation_yes_no("Vraiment supprimer: "+s$)=1
    totaux_moins(i%)
    grid_row_delete no_table%,i%
    n_table% = n_table% - 1
  end_if
  return
 
supprimer2:
  i% = mouse_y_left_down(no_table2%)
  i% = grid_y_to_row(no_table2%,i%)
  if i%=1 then return
  s$ = grid_read$(no_table2%,i%,4)
  if message_confirmation_yes_no("Vraiment supprimer: "+s$)=1
    totaux_moins2(i%)
    grid_row_delete no_table2%,i%
    n_table2% = n_table2% - 1
  end_if
  return

close0:
  grid_save no_table%,n_table%+1,c_table1%,f_base1$
  grid_save no_table2%,n_table2%+1,c_table2%,f_base2$
  return

click_table:
  col% = mouse_x_left_down(no_table%)
  col% = grid_x_to_column(no_table%,col%)
  if col%=4 then set_focus no_afficher%
  if col%=8 then set_focus no_mod_frais_reel%
  if col%=9 then set_focus no_mod_frais_ebay%
  if col%=10 then set_focus no_mod_frais_paypal%
  return
 
click_table2:
  col% = mouse_x_left_down(no_table2%)
  col% = grid_x_to_column(no_table2%,col%)
  if col%=6 then set_focus no_mod_frais_reel2%
  return

mod_reel:
  i% = mouse_y_left_down(no_table%)
  i% = grid_y_to_row(no_table%,i%)
  if i%=1 then return
  s$ = grid_read$(no_table%,i%,8)
  s1$ = grid_read$(no_table%,i%,5)
  s2$ = grid_read$(no_table%,i%,4)
  if message_input("Frais livraison réels "+s2$,s1$+": "+s$,s$)=1
    s2$ = message_text$
    p% = instr(s2$,",")
    if p%>0 then s2$ = left$(s2$,p%-1) + "." + mid$(s2$,p%+1,len(s2$))
    if s2$="" then s2$ = "0.00"
    if instr(s2$,".")=0 then s2$ = s2$ + ".00"
    if instr(s2$,".")=len(s2$)-1 then s2$ = s2$ + "0"
    if numeric(s2$)=0 then return"
    if s$="" then s$ = "0.00"
    s$ = left$(s$,len(s$)-3) + "." + right$(s$,2)
    reel_total = reel_total - val(s$) + val(s2$)
    marge_total = marge_total + val(s$) - val(s2$)
    grid_write no_table%,i%,8,s2$
    calculer_marge(i%)
    totaux_afficher()
  end_if
  return
 
mod_reel2:
  i% = mouse_y_left_down(no_table2%)
  i% = grid_y_to_row(no_table2%,i%)
  if i%=1 then return
  s$ = grid_read$(no_table2%,i%,6)
  s1$ = grid_read$(no_table2%,i%,4)
  if message_input("Frais livraison réels",s1$+": "+s$,s$)=1
    s2$ = message_text$
    p% = instr(s2$,",")
    if p%>0 then s2$ = left$(s2$,p%-1) + "." + mid$(s2$,p%+1,len(s2$))
    if s2$="" then s2$ = "0.00"
    if instr(s2$,".")=0 then s2$ = s2$ + ".00"
    if instr(s2$,".")=len(s2$)-1 then s2$ = s2$ + "0"
    if numeric(s2$)=0 then return
    if s$="" then s$ = "0.00"
    s$ = left$(s$,len(s$)-3) + "." + right$(s$,2)
    reel_total2 = reel_total2 - val(s$) + val(s2$)
    marge_total2 = marge_total2 + val(s$) - val(s2$)
    grid_write no_table2%,i%,6,s2$
    calculer_marge2(i%)
    totaux_afficher2()
  end_if
  return

mod_ebay:
  i% = mouse_y_left_down(no_table%)
  i% = grid_y_to_row(no_table%,i%)
  if i%=1 then return
  s$ = grid_read$(no_table%,i%,9)
  s1$ = grid_read$(no_table%,i%,5)
  s2$ = grid_read$(no_table%,i%,4)
  if message_input("Frais eBay objet "+s2$,s1$+": "+s$,s$)=1
    s2$ = message_text$
    p% = instr(s2$,",")
    if p%>0 then s2$ = left$(s2$,p%-1) + "." + mid$(s2$,p%+1,len(s2$))
    if s2$="" then s2$ = "0.00"
    if instr(s2$,".")=0 then s2$ = s2$ + ".00"
    if instr(s2$,".")=len(s2$)-1 then s2$ = s2$ + "0"
    if numeric(s2$)=0 then message "x"
    if s$="" then s$ = "0.00"
    s$ = left$(s$,len(s$)-3) + "." + right$(s$,2)
    ebay_total = ebay_total - val(s$) + val(s2$)
    marge_total = marge_total + val(s$) - val(s2$)
    grid_write no_table%,i%,9,s2$
    calculer_marge(i%)
    totaux_afficher()
  end_if
  return

mod_paypal:
  i% = mouse_y_left_down(no_table%)
  i% = grid_y_to_row(no_table%,i%)
  if i%=1 then return
  s$ = grid_read$(no_table%,i%,19)
  s1$ = grid_read$(no_table%,i%,5)
  s2$ = grid_read$(no_table%,i%,4)
  if message_input("Frais PayPal objet "+s2$,s1$+": "+s$,s$)=1
    s2$ = message_text$
    p% = instr(s2$,",")
    if p%>0 then s2$ = left$(s2$,p%-1) + "." + mid$(s2$,p%+1,len(s2$))
    if s2$="" then s2$ = "0.00"
    if instr(s2$,".")=0 then s2$ = s2$ + ".00"
    if instr(s2$,".")=len(s2$)-1 then s2$ = s2$ + "0"
    if numeric(s2$)=0 then message "x"
    if s$="" then s$ = "0.00"
    s$ = left$(s$,len(s$)-3) + "." + right$(s$,2)
    paypal_total = paypal_total - val(s$) + val(s2$)
    marge_total = marge_total + val(s$) - val(s2$)
    grid_write no_table%,i%,10,s2$
    calculer_marge(i%)
    totaux_afficher()
  end_if
  return

change_site1:
  select item_index(no_site1%)
    case 1: ' eBay - on y est
    case 2: ' LeBonCoin
      hide 0
      show no_LeBonCoin%
      text no_site2%,item_read$(no_site2%,2)
  end_select
  return
 
change_site2:
  select item_index(no_site2%)
    case 1: ' eBay
      hide no_LeBonCoin%
      show 0
      text no_site1%,item_read$(no_site1%,1)
    case 2: ' LeBonCoin - on y est
  end_select
  return

close_leboncoin:
  hide no_LeBonCoin%
  show 0
  text no_site1%,item_read$(no_site1%,1)
  to_foreground 0
  return


' *** procédures du programme initial *************************************
sub labels()
  label close0, charger1, accepter1, afficher, supprimer, click_table
  label mod_ebay, mod_paypal, mod_reel, change_site1, close_leboncoin
  label change_site2, charger2, accepter2, mod_reel2, supprimer2
  label click_table2
end_sub

sub constantes()
  dim c_table1% : c_table1% = 11
  dim c_table2% : c_table2% = 7
  dim f_base1$ : f_base1$ = "ebay_ventes.txt"
  dim f_base2$ : f_base2$ = "leboncoin_ventes.txt"
  dim id_browser$ : id_browser$ = " - Mozilla Firefox"
  dim ebay_search$ : ebay_search$ = "http://cgi.ebay.fr/ws/eBayISAPI.dll?ViewItem&item="
end_sub

sub variables()
  dim no%, s$, s1$, s2$, s_org$, i%, p%, p1%, site%
  dim lib%, prix%, i1%, n%, mode%, col%, nom$, hnd%
  dim no_ebay%, no_num%, no_lib%, no_prix%, no_liv%
  dim no_date%, no_time%, no_table%, no_total%, no_frais_reel%
  dim no_mod_frais_ebay%, no_mod_frais_paypal%,  no_mod_frais_reel%
  dim no_frais_ebay%, no_frais_paypal%, no_afficher%, no_site1%, no_site2%
  dim n_table%, marge
  dim prix_total, liv_total, reel_total, ebay_total, paypal_total, marge_total
  dim prix_global, liv_global, reel_global, ebay_global, paypal_global, marge_global
  dim no_LeBonCoin%, no_prix2%, no_lib2%, no_date2%, no_time2%, no_table2%
  dim no_total2%, marge2, n_table2%, prix_total2, reel_total2, marge_total2
  dim no_mod_frais_reel2%
end_sub

sub form0()
  caption 0,"Gestion des ventes eBay"
  width 0,1050 : height 0,800
  on_close 0,close0
end_sub

sub GUI()
  no% = no% + 1 : memo no% : no_ebay% = no% : width no%,900
    hide no%
  no% = no% + 1 : combo no% : top no%,10 : left no%,800
    no_site1% = no% : on_click no%,change_site1
    item_add no%,"eBay"
    item_add no%,"LeBonCoin"
    text no%,item_read$(no%,1)

  ' ****** GUI pour site eBay
  no% = no% + 1 : button no% : top no%,10 : left no%,10
    caption no%,"Charger" : on_click no%,charger1
  no% = no% + 1 : button no% : top no%,70 : left no%,10
    caption no%,"Accepter" : on_click no%,accepter1

  no% = no% + 1 : alpha no%
    top no%,10 : left no%,120 : caption no%,"Objet:"
  no% = no% + 1 : edit no% : no_num% = no%
    top no%,10 : left no%,160
  no% = no% + 1 : alpha no%
    top no%,10 : left no%,300 : caption no%,"Titre:"
  no% = no% + 1 : edit no% : no_lib% = no% : width no%,400
    top no%,10 : left no%,360
  no% = no% + 1 : alpha no%
    top no%,40 : left no%,120 : caption no%,"Prix:"
  no% = no% + 1 : edit no% : no_prix% = no%
    top no%,40 : left no%,160 : width no%,80
  no% = no% + 1 : alpha no%
    top no%,40 : left no%,300 : caption no%,"Livraison:"
  no% = no% + 1 : edit no% : no_liv% = no%
    top no%,40 : left no%,360 : width no%,50
  no% = no% + 1 : alpha no%
    top no%,40 : left no%,430 : caption no%,"Frais réels:"
  no% = no% + 1 : edit no% : no_frais_reel% = no%
    top no%,40 : left no%,510 : width no%,50
  no% = no% + 1 : alpha no%
    top no%,40 : left no%,580 : caption no%,"Date:"
  no% = no% + 1 : edit no% : no_date% = no%
    top no%,40 : left no%,620 : width no%,80
  no% = no% + 1 : alpha no%
    top no%,40 : left no%,730 : caption no%,"Heure:"
  no% = no% + 1 : edit no% : no_time% = no%
    top no%,40 : left no%,780 : width no%,60
  no% = no% + 1 : alpha no%
    top no%,70 : left no%,300 : caption no%,"Frais eBay:"
  no% = no% + 1 : edit no% : no_frais_ebay% = no%
    top no%,70 : left no%,360 : width no%,50
  no% = no% + 1 : alpha no%
    top no%,70 : left no%,430 : caption no%,"Frais PayPal:"
  no% = no% + 1 : edit no% : no_frais_paypal% = no%
    top no%,70 : left no%,510 : width no%,50

   
  no% = no% + 1 : grid no% : no_table% = no%
    top no%,130 : left no%,c_table1% : width no%,1027 : height no%,503
    on_click no%,click_table
    grid_row no%,1 : grid_column no%,c_table1%
    grid_one_column_width no%,1,50
    grid_write no%,1,1,"No."
    grid_one_column_width no%,2,80
    grid_write no%,1,2,"Date"
    grid_one_column_width no%,3,60
    grid_write no%,1,3,"Heure"
    grid_one_column_width no%,4,80
    grid_write no%,1,4,"Objet"
    grid_one_column_width no%,5,400
    grid_write no%,1,5,"Titre"
    grid_one_column_width no%,6,80
    grid_write no%,1,6,"Prix"
    grid_one_column_width no%,7,50
    grid_write no%,1,7,"Livraison"
    grid_one_column_width no%,8,50
    grid_write no%,1,8,"Frais réels"
    grid_one_column_width no%,9,50
    grid_write no%,1,9,"eBay"
    grid_one_column_width no%,10,50
    grid_write no%,1,10,"PayPal"
    grid_one_column_width no%,11,50
    grid_write no%,1,11,"Marge"

  no% = no% + 1 : grid no% : no_total% = no%
    top no%,640 : left no%,10 : width no%,1027 : height no%,105
    grid_row no%,4 : grid_column no%,c_table1%
    grid_one_column_width no%,1,50
    grid_write no%,1,1,"Total"
    grid_write no%,2,1,"eBay"
    grid_write no%,3,1,"LeBonC..."
    Grid_Write no%,4,1,"Total"
    grid_one_column_width no%,2,80
    grid_one_column_width no%,3,60
    grid_one_column_width no%,4,80
    grid_one_column_width no%,5,400
    grid_one_column_width no%,6,80
    grid_write no%,1,6,"Prix"
    grid_one_column_width no%,7,50
    grid_write no%,1,7,"Livraison"
    grid_one_column_width no%,8,50
    grid_write no%,1,8,"Frais réels"
    grid_one_column_width no%,9,50
    grid_write no%,1,9,"eBay"
    grid_one_column_width no%,10,50
    grid_write no%,1,10,"PayPal"
    grid_one_column_width no%,11,50
    grid_write no%,1,11,"Marge"

  no% = no% + 1 : button no% : top no%,100 : left no%,205
    caption no%,"Afficher" : on_click no%,afficher : no_afficher% = no%
  no% = no% + 1 : button no% : top no%,100 : left no%,400
    caption no%,"Supprimer" : on_click no%,supprimer
  no% = no% + 1 : button no% : top no%,100 : left no%,820 : width no%,50
    caption no%,"Mod." : on_click no%,mod_reel : no_mod_frais_reel% = no%
  no% = no% + 1 : button no% : top no%,100 : left no%,870 : width no%,50
    caption no%,"Mod." : on_click no%,mod_ebay : no_mod_frais_ebay% = no%
  no% = no% + 1 : button no% : top no%,100 : left no%,920 : width no%,50
    caption no%,"Mod." : on_click no%,mod_paypal : no_mod_frais_paypal% = no%

  ' ****** GUI pour site LeBonCoin
  no% = no% + 1 : form no% : hide no% : no_LeBonCoin% = no%
    width no%,1050 : height no%,800
    caption no%,"Gestion des ventes LeBonCoin"
    on_close no%,close_leboncoin
    command_target_is no%
  no% = no% + 1 : combo no% : top no%,10 : left no%,800
    no_site2% = no% : on_click no%,change_site2
    item_add no%,"eBay"
    item_add no%,"LeBonCoin"
    text no%,item_read$(no%,2)

  no% = no% + 1 : button no% : top no%,10 : left no%,10
    caption no%,"Charger" : on_click no%,charger2
  no% = no% + 1 : button no% : top no%,70 : left no%,10
    caption no%,"Accepter" : on_click no%,accepter2
  no% = no% + 1 : alpha no%
    top no%,40 : left no%,120 : caption no%,"Prix:"
  no% = no% + 1 : edit no% : no_prix2% = no%
    top no%,40 : left no%,160 : width no%,80
  no% = no% + 1 : alpha no%
    top no%,10 : left no%,300 : caption no%,"Titre:"
  no% = no% + 1 : edit no% : no_lib2% = no% : width no%,400
    top no%,10 : left no%,360
  no% = no% + 1 : alpha no%
    top no%,40 : left no%,580 : caption no%,"Date:"
  no% = no% + 1 : edit no% : no_date2% = no%
    top no%,40 : left no%,620 : width no%,80
  no% = no% + 1 : alpha no%
    top no%,40 : left no%,730 : caption no%,"Heure:"
  no% = no% + 1 : edit no% : no_time2% = no%
    top no%,40 : left no%,780 : width no%,60

  no% = no% + 1 : grid no% : no_table2% = no%
    top no%,130 : left no%,c_table2% : width no%,798 : height no%,503
    on_click no%,click_table2
    grid_row no%,1 : grid_column no%,c_table2%
    grid_one_column_width no%,1,50
    grid_write no%,1,1,"No."
    grid_one_column_width no%,2,80
    grid_write no%,1,2,"Date"
    grid_one_column_width no%,3,60
    grid_write no%,1,3,"Heure"
    grid_one_column_width no%,4,400
    grid_write no%,1,4,"Titre"
    grid_one_column_width no%,5,80
    grid_write no%,1,5,"Prix"
    grid_one_column_width no%,6,50
    grid_write no%,1,6,"Frais réels"
    grid_one_column_width no%,7,50
    grid_write no%,1,7,"Marge"

  no% = no% + 1 : grid no% : no_total2% = no%
    top no%,640 : left no%,10 : width no%,798 : height no%,56
    grid_row no%,2 : grid_column no%,c_table2%
    grid_one_column_width no%,1,50
    grid_write no%,1,1,"Total"
    grid_one_column_width no%,2,80
    grid_one_column_width no%,3,60
    grid_one_column_width no%,4,400
    grid_one_column_width no%,5,80
    grid_write no%,1,5,"Prix"
    grid_one_column_width no%,6,50
    grid_write no%,1,6,"Frais réels"
    grid_one_column_width no%,7,50
    grid_write no%,1,7,"Marge"

  no% = no% + 1 : button no% : top no%,100 : left no%,400
    caption no%,"Supprimer" : on_click no%,supprimer2
  no% = no% + 1 : button no% : top no%,100 : left no%,685 : width no%,50
    caption no%,"Mod." : on_click no%,mod_reel2 : no_mod_frais_reel2% = no%
  command_target_is 0
end_sub

sub initialisations()
  dim_local s1$
  site% = 1 : ' défaut: démarrer abev eBay
  n_table% = 0
  prix_total = 0
  liv_total = 0
  if file_exists(f_base1$)=1 then grid_load no_table%,f_base1$
  if file_exists(f_base2$)=1 then grid_load no_table2%,f_base2$
  n_table% = 1
  repeat
    s1$ = grid_read$(no_table%,n_table%+1,1)
    if s1$="" then exit_repeat
    totaux_plus(n_table%+1)
    n_table% = n_table% + 1
  until s1$=""
  grid_row no_table%, n_table%
  n_table% = n_table% - 1
  if n_table%>0 then grid_row_fixed no_table%,1
  n_table2% = 1
  repeat
    s1$ = grid_read$(no_table2%,n_table2%+1,1)
    if s1$="" then exit_repeat
    totaux_plus2(n_table2%+1)
    n_table2% = n_table2% + 1
  until s1$=""
  grid_row no_table2%, n_table2%
  n_table2% = n_table2% - 1
  if n_table2%>0 then grid_row_fixed no_table2%,1

  KGF_initialize("KGF.dll")
 
  nom$ = "firefox.exe"
  hnd% = dll_call1("GetProcessWindowHandle",adr(nom$))

end_sub






' *** procédures de l'application *****************************************
sub totaux_plus(ind%)
  s$ = grid_read$(no_table%,ind%,6)
  if s$="" then s$ = "0.00"
  s$ = left$(s$,len(s$)-3) + "." + right$(s$,2)
  prix_total = prix_total + val(s$)
  prix_global = prix_global + val(s$)
  s$ = grid_read$(no_table%,ind%,7)
  if s$="" then s$ = "0.00"
  s$ = left$(s$,len(s$)-3) + "." + right$(s$,2)
  liv_total = liv_total + val(s$)
  liv_global = liv_global + val(s$)
  s$ = grid_read$(no_table%,ind%,8)
  if s$="" then s$ = "0.00"
  s$ = left$(s$,len(s$)-3) + "." + right$(s$,2)
  reel_total = reel_total + val(s$)
  reel_global = reel_global + val(s$)
  s$ = grid_read$(no_table%,ind%,9)
  if s$="" then s$ = "0.00"
  s$ = left$(s$,len(s$)-3) + "." + right$(s$,2)
  ebay_total = ebay_total + val(s$)
  ebay_global = ebay_global + val(s$)
  s$ = grid_read$(no_table%,ind%,10)
  if s$="" then s$ = "0.00"
  s$ = left$(s$,len(s$)-3) + "." + right$(s$,2)
  paypal_total = paypal_total + val(s$)
  paypal_global = paypal_global + val(s$)
  s$ = grid_read$(no_table%,ind%,c_table1%)
  if s$="" then s$ = "0.00"
  s$ = left$(s$,len(s$)-3) + "." + right$(s$,2)
  marge_total = marge_total + val(s$)
  marge_global = marge_global + val(s$)
  totaux_afficher()
end_sub

sub totaux_plus2(ind%)
  s$ = grid_read$(no_table2%,ind%,5)
  if s$="" then s$ = "0.00"
  s$ = left$(s$,len(s$)-3) + "." + right$(s$,2)
  prix_total2 = prix_total2 + val(s$)
  prix_global = prix_global + val(s$)
  s$ = grid_read$(no_table2%,ind%,6)
  if s$="" then s$ = "0.00"
  s$ = left$(s$,len(s$)-3) + "." + right$(s$,2)
  reel_total2 = reel_total2 + val(s$)
  reel_global = reel_global + val(s$)
  s$ = grid_read$(no_table2%,ind%,c_table2%)
  if s$="" then s$ = "0.00"
  s$ = left$(s$,len(s$)-3) + "." + right$(s$,2)
  marge_total2 = marge_total2 + val(s$)
  marge_global = marge_global + val(s$)
  totaux_afficher2()
end_sub

sub totaux_moins(ind%)
  s$ = grid_read$(no_table%,ind%,6)
  if s$="" then s$ = "0.00"
  s$ = left$(s$,len(s$)-3) + "." + right$(s$,2)
  prix_total = prix_total - val(s$)
  prix_global = prix_global - val(s$)
  s$ = grid_read$(no_table%,ind%,7)
  if s$="" then s$ = "0.00"
  s$ = left$(s$,len(s$)-3) + "." + right$(s$,2)
  liv_total = liv_total - val(s$)
  liv_global = liv_global - val(s$)
  s$ = grid_read$(no_table%,ind%,8)
  if s$="" then s$ = "0.00"
  s$ = left$(s$,len(s$)-3) + "." + right$(s$,2)
  reel_total = reel_total - val(s$)
  reel_global = reel_global - val(s$)
  s$ = grid_read$(no_table%,ind%,9)
  if s$="" then s$ = "0.00"
  s$ = left$(s$,len(s$)-3) + "." + right$(s$,2)
  ebay_total = ebay_total - val(s$)
  ebay_global = ebay_global - val(s$)
  s$ = grid_read$(no_table%,ind%,10)
  if s$="" then s$ = "0.00"
  s$ = left$(s$,len(s$)-3) + "." + right$(s$,2)
  paypal_total = paypal_total - val(s$)
  paypal_global = paypal_global - val(s$)
'  totaux_afficher()
  s$ = grid_read$(no_table%,ind%,c_table1%)
  if s$="" then s$ = "0.00"
  s$ = left$(s$,len(s$)-3) + "." + right$(s$,2)
  marge_total = marge_total - val(s$)
  marge_global = marge_global - val(s$)
  totaux_afficher()
end_sub

sub totaux_moins2(ind%)
  s$ = grid_read$(no_table2%,ind%,5)
  if s$="" then s$ = "0.00"
  s$ = left$(s$,len(s$)-3) + "." + right$(s$,2)
  prix_total2 = prix_total2 - val(s$)
  prix_global = prix_global - val(s$)
  s$ = grid_read$(no_table2%,ind%,6)
  if s$="" then s$ = "0.00"
  s$ = left$(s$,len(s$)-3) + "." + right$(s$,2)
  reel_total2 = reel_total2 - val(s$)
  reel_global = reel_global - val(s$)
  s$ = grid_read$(no_table2%,ind%,c_table2%)
  if s$="" then s$ = "0.00"
  s$ = left$(s$,len(s$)-3) + "." + right$(s$,2)
  marge_total2 = marge_total2 - val(s$)
  marge_global = marge_global - val(s$)
  totaux_afficher2()
end_sub

sub totaux_afficher()
  grid_write no_total%,2,1,str$(n_table%)
  s$ = str$(prix_total)
  p% = instr(s$,".")
  if p%>0 then s$ = left$(s$,p%-1) + "," + mid$(s$,p%+1,len(s$))
  if instr(s$,",")=0 then s$ = s$ + ",00"
  if instr(s$,",")=len(s$)-1 then s$ = s$ + "0"
  grid_write no_total%,2,6,s$
  s$ = str$(liv_total)
  p% = instr(s$,".")
  if p%>0 then s$ = left$(s$,p%-1) + "," + mid$(s$,p%+1,len(s$))
  if instr(s$,",")=0 then s$ = s$ + ",00"
  if instr(s$,",")=len(s$)-1 then s$ = s$ + "0"
  grid_write no_total%,2,7,s$
  s$ = str$(reel_total)
  p% = instr(s$,".")
  if p%>0 then s$ = left$(s$,p%-1) + "," + mid$(s$,p%+1,len(s$))
  if instr(s$,",")=0 then s$ = s$ + ",00"
  if instr(s$,",")=len(s$)-1 then s$ = s$ + "0"
  grid_write no_total%,2,8,s$
  s$ = str$(ebay_total)
  p% = instr(s$,".")
  if p%>0 then s$ = left$(s$,p%-1) + "," + mid$(s$,p%+1,len(s$))
  if instr(s$,",")=0 then s$ = s$ + ",00"
  if instr(s$,",")=len(s$)-1 then s$ = s$ + "0"
  grid_write no_total%,2,9,s$
  s$ = str$(paypal_total)
  p% = instr(s$,".")
  if p%>0 then s$ = left$(s$,p%-1) + "," + mid$(s$,p%+1,len(s$))
  if instr(s$,",")=0 then s$ = s$ + ",00"
  if instr(s$,",")=len(s$)-1 then s$ = s$ + "0"
  grid_write no_total%,2,10,s$
  s$ = str$(marge_total)
  p% = instr(s$,".")
  if p%>0 then s$ = left$(s$,p%-1) + "," + mid$(s$,p%+1,len(s$))
  if instr(s$,",")=0 then s$ = s$ + ",00"
  if instr(s$,",")=len(s$)-1 then s$ = s$ + "0"
  grid_write no_total%,2,11,s$
  globaux_afficher()
end_sub

sub totaux_afficher2()
  grid_write no_total2%,2,1,str$(n_table2%)
  s$ = str$(prix_total2)
  p% = instr(s$,".")
  if p%>0 then s$ = left$(s$,p%-1) + "," + mid$(s$,p%+1,len(s$))
  if instr(s$,",")=0 then s$ = s$ + ",00"
  if instr(s$,",")=len(s$)-1 then s$ = s$ + "0"
  grid_write no_total2%,2,5,s$
  grid_write no_total%,3,6,s$
  s$ = str$(reel_total2)
  p% = instr(s$,".")
  if p%>0 then s$ = left$(s$,p%-1) + "," + mid$(s$,p%+1,len(s$))
  if instr(s$,",")=0 then s$ = s$ + ",00"
  if instr(s$,",")=len(s$)-1 then s$ = s$ + "0"
  grid_write no_total2%,2,6,s$
  grid_write no_total%,3,8,s$
  s$ = str$(marge_total2)
  p% = instr(s$,".")
  if p%>0 then s$ = left$(s$,p%-1) + "," + mid$(s$,p%+1,len(s$))
  if instr(s$,",")=0 then s$ = s$ + ",00"
  if instr(s$,",")=len(s$)-1 then s$ = s$ + "0"
  grid_write no_total2%,2,c_table2%,s$
  grid_write no_total%,3,c_table1%,s$
  globaux_afficher()
end_sub

sub globaux_afficher()
  s$ = str$(prix_global)
  p% = instr(s$,".")
  if p%>0 then s$ = left$(s$,p%-1) + "," + mid$(s$,p%+1,len(s$))
  if instr(s$,",")=0 then s$ = s$ + ",00"
  if instr(s$,",")=len(s$)-1 then s$ = s$ + "0"
  grid_write no_total%,4,6,s$
  s$ = str$(liv_global)
  p% = instr(s$,".")
  if p%>0 then s$ = left$(s$,p%-1) + "," + mid$(s$,p%+1,len(s$))
  if instr(s$,",")=0 then s$ = s$ + ",00"
  if instr(s$,",")=len(s$)-1 then s$ = s$ + "0"
  grid_write no_total%,4,7,s$
  s$ = str$(reel_global)
  p% = instr(s$,".")
  if p%>0 then s$ = left$(s$,p%-1) + "," + mid$(s$,p%+1,len(s$))
  if instr(s$,",")=0 then s$ = s$ + ",00"
  if instr(s$,",")=len(s$)-1 then s$ = s$ + "0"
  grid_write no_total%,4,8,s$
  s$ = str$(ebay_global)
  p% = instr(s$,".")
  if p%>0 then s$ = left$(s$,p%-1) + "," + mid$(s$,p%+1,len(s$))
  if instr(s$,",")=0 then s$ = s$ + ",00"
  if instr(s$,",")=len(s$)-1 then s$ = s$ + "0"
  grid_write no_total%,4,9,s$
  s$ = str$(paypal_global)
  p% = instr(s$,".")
  if p%>0 then s$ = left$(s$,p%-1) + "," + mid$(s$,p%+1,len(s$))
  if instr(s$,",")=0 then s$ = s$ + ",00"
  if instr(s$,",")=len(s$)-1 then s$ = s$ + "0"
  grid_write no_total%,4,10,s$
  s$ = str$(marge_global)
  p% = instr(s$,".")
  if p%>0 then s$ = left$(s$,p%-1) + "," + mid$(s$,p%+1,len(s$))
  if instr(s$,",")=0 then s$ = s$ + ",00"
  if instr(s$,",")=len(s$)-1 then s$ = s$ + "0"
  grid_write no_total%,4,c_table1%,s$
end_sub

sub calculer_marge(ind%)
  s$ = grid_read$(no_table%,ind%,6)
  if s$="" then s$ = "0.00"
  s$ = left$(s$,len(s$)-3) + "." + right$(s$,2)
  marge = val(s$)
  s$ = grid_read$(no_table%,ind%,7)
  if s$="" then s$ = "0.00"
  s$ = left$(s$,len(s$)-3) + "." + right$(s$,2)
  marge = marge + val(s$)
  s$ = grid_read$(no_table%,ind%,8)
  if s$="" then s$ = "0.00"
  s$ = left$(s$,len(s$)-3) + "." + right$(s$,2)
  marge = marge - val(s$)
  s$ = grid_read$(no_table%,ind%,9)
  if s$="" then s$ = "0.00"
  s$ = left$(s$,len(s$)-3) + "." + right$(s$,2)
  marge = marge - val(s$)
  s$ = grid_read$(no_table%,ind%,10)
  if s$="" then s$ = "0.00"
  s$ = left$(s$,len(s$)-3) + "." + right$(s$,2)
  marge = marge - val(s$)
  s$ = str$(marge)
  p% = instr(s$,".")
  if p%>0 then s$ = left$(s$,p%-1) + "," + mid$(s$,p%+1,len(s$))
  if instr(s$,",")=0 then s$ = s$ + ",00"
  if instr(s$,",")=len(s$)-1 then s$ = s$ + "0"
  grid_write no_table%,ind%,c_table1%,s$
end_sub

sub calculer_marge2(ind%)
  s$ = grid_read$(no_table2%,ind%,5)
  if s$="" then s$ = "0.00"
  s$ = left$(s$,len(s$)-3) + "." + right$(s$,2)
  marge2 = val(s$)
  s$ = grid_read$(no_table2%,ind%,6)
  if s$="" then s$ = "0.00"
  s$ = left$(s$,len(s$)-3) + "." + right$(s$,2)
  marge2 = marge2 - val(s$)
  s$ = str$(marge2)
  p% = instr(s$,".")
  if p%>0 then s$ = left$(s$,p%-1) + "," + mid$(s$,p%+1,len(s$))
  if instr(s$,",")=0 then s$ = s$ + ",00"
  if instr(s$,",")=len(s$)-1 then s$ = s$ + "0"
  grid_write no_table2%,ind%,c_table2%,s$
end_sub

sub get_browser()
  s$ = id_browser$
  GetWindowByTitle(1,s$)
  hnd% = GetWindowByTitle%
  BringWindowToForeground(hnd%)

  s$ = string$(255," ")
  GetActiveWindowTitle()
  s$ = GetActiveWindowTitle$
  s$ = trim$(s$)
end_sub

sub get_page_text()
  s$ = chr$(9)+chr$(9)+chr$(9)+chr$(9)+chr$(9)+chr$(9)+chr$(9)+chr$(9)+chr$(9)
  SendStringAsChars(hnd%,s$)
  s$ = chr$(1)
  SendStringAsText(hnd%,s$)
  pause 300
  s$ = chr$(3)
  SendStringAsText(hnd%,s$)
  CopyToClipboard(hnd%)
end_sub

#INCLUDE "KGF_SUB.bas"
Revenir en haut Aller en bas
Voir le profil de l'utilisateur http://klauspanoramic.comxa.com/index.html
Klaus

avatar

Nombre de messages : 10075
Age : 68
Localisation : Ile de France
Date d'inscription : 29/12/2009

MessageSujet: Re: Gestion des ventes sur eBay   Ven 26 Oct 2012 - 19:05

Et voici le même programme avec un troisième site: VivaStreet.

Pour les besoins, il est complet. Il peut être adapté relativement facilement à d'autres sites, ou à plus de sites. C'est surtout un bon exemple d'extraction de données significatives dans une page Web ouverte dans un browser.
Code:
' ebay_ventes.bas
'
' Ce programme est un gestionnaire de ventes sur le site eBay et
' autres sites de vente. A ce jour, les sites suivants sont gérés:
'    eBay
'    LeBonCoin
'    VivaStreet
'
' La description qui suit est ciblée sur eBay, de loin le site le plus
' complexe. Pour les autres sites, le principe est le même, mais il y a
' moins d'informations pour chaque produit. On choisit un site par le
' combo en haut à droite de la page. La page du site en cours disparaît
' et la page du site choisi apparaît. La fermeture d'une page d'un site
' autre que eBay ferme cette page et revient sur la page eBay. La
' fermeture de la page eBay sauvegarde les données de TOUS les sites,
' puis termne l'application..Les totaux de tous les sites sont repris sur
' la page eBay pour une synthèse et des totaux globaux.
'
' Il est conçu pour mémoriser les ventes réalisées par enchères,
' petites annonces et achat immmédiat. Il mémorise l'essentiel des
' informations: date, heure; numéro d'objet, libellé; prix de vente,
' frais de livraison. Il permet de saisir les frais eBay et les
' frais PayPal. Il calcule le bénéfice net pour chaque vente, et donne
' le total des objets vendus, ainsi que le total des valeurs par catégorie
' y compris le bénéfice net total. Tout est mémorisé dans un fichier
' texte nommé "ebay_ventes.txt". Ce fichier est créé vide au premier
' lancement, et chargé autimatiquement à chaque lancement suivant. Le
' tableau est sauvegardé automatiquement dans ce fichier à la sortie
' du programme.
'
' Ce programme fonctionne à partir de pages eBay mise en mémoire par
' ctrl/A ctrl/C (toute la page). Cette combinaison de touches met dans
' le presse-papier la partie purement "texte" de la page eBay. On utilise
' alors cette chaîne de caractères pour charger un memo caché afin de
' trouver les informations relevantes. Chaque information est recherchée
' selon des critères précis: La variable mode% donne le type de vante:
'  mode% = 0 ==> type indéterminé
'  mode% = 1 ==> vente sur enchères
'  mode% = 2 ==> vente immédiate
'  mode% = 3 ==> petite annonce
'
' Le bouton "Charger" cherche une page eBay dans Firefox (adaptations
' simples à faire pour d'autres explorateurs). Cette page sera entièrement
' copiée dans le presse-papier, puis dans un mémo cachée, afin d'être
' expoitée ligne par ligne. Seule la partie "texte" sera présente, sans
' les images et graphismes.
'
' Les informations relevantes sont affichées dans des champs en haut de
' la page. On peut alors les modifier. Ma fourche "Accepter" crée une
' nouvelle ligne dans le tableau, en calculant la marge nette et les
' totaux globaux. La marge nette est calculée comme suit:
'  marge nette = prix vente + frais livraison - frais réels - frais eBay - frais PayPal
'
' Un clic dans une ligne sélectionnne celle-ci. Les boutons "Mod."
' permettent de modifier les frais réels de livraison, les frais eBay
' et les fraus PaiPal. Le bouton "Supprimer" supprime la ligne de la
' luste. Le bouton "Afficher" recharge la page Web du produit (si elle
' existe encore).
'
'
'

' *** programme initial ***************************************************
labels()
constantes()
variables()
form0()
GUI()
initialisations()

end






' *** routines d'évènements ***********************************************
charger1:
  get_browser()
  if instr(s$, "sur eBay.fr" )=0
    if left$(s$,6)<>"eBay |"
      BringWindowToForeground(handle(0))
      message "Ce n'est pas une page eBay: "+s$
      return
    end_if
  end_if
  get_page_text()
  BringWindowToForeground(handle(0))

  clear no_ebay%
  s_org$ = clipboard_string_paste$
  item_add no_ebay%,s_org$
  text no_num%,""
  text no_lib%,""
  text no_prix%,""
  text no_liv%,""
  text no_lib%,""
  text no_date%,""
  text no_time%,""
  text no_frais_ebay%,""
  text no_frais_paypal%,""
  display

  s$ = item_read$(no_ebay%,1)
  if len(s$)>0
    message "Il faut mémoriser une page produit eBay! ["+s$+"]"
    return
  end_if
  s$ = item_read$(no_ebay%,2)
  if s$<>"Accéder au contenu principal"
    message "Il faut mémoriser une page produit eBay! ["+s$+"]"
    return
  end_if
  s$ = item_read$(no_ebay%,3)
  if left$(s$,5)<>"eBay"+chr$(9)
    message "Il faut mémoriser une page produit eBay! ["+s$+"]"
    return
  end_if
  lib% = 0
  prix% = 0
 
  mode% = 0
  if instr(s_org$,"Les enchères sur cet objet sont terminées.")>0 then mode% = 1
  if instr(s_org$,"Cette vente avec l'option Achat immédiat est terminée.")>0 then mode% = 2
  if instr(s_org$,"Petites Annonces :")>0 then mode% = 3
  if mode%=0
    message "Je n'ai pas pu déterminer le type de vente."
    return
  end_if

for i%=4 to count(no_ebay%)
  s$ = item_read$(no_ebay%,i%)
 
  ' === identifier les frais de livraison
  if mode%<3
    p% = instr(s$,"Livraison :")
    if p%>0
      s$ = mid$(s$,p%+12,len(s$))
      p% = instr(s$," EUR")
      if p%>0
        s$ = left$(s$,p%-1)
        text no_liv%,s$
      end_if
      if instr(s$,"GRATUIT")>0 then text no_liv%,"0,00"
    end_if
  end_if
  if mode%=3 then text no_liv%,"0,00"
 
  ' === identifier le prix de vente
  if mode%<3
    p% = instr(s$," EUR"+chr$(9))
    if p%>0
      s$ = left$(s$,p%+3)
      p% = instr(s$," :")
      if p%>0 then s$ = mid$(s$,p%+2,len(s$))
      if left$(s$,1)=chr$(9) then s$ = mid$(s$,2,len(s$))
      text no_prix%,left$(s$,len(s$)-4)
    end_if
  end_if
  if mode%=3
    if left$(s$,18)="Petites Annonces :"
      prix% = i% + 2
    end_if
    if i%=prix%
      text no_prix%,left$(s$,len(s$)-2)
      prix% = 0
    end_if
  end_if
 
  ' === identifier le libellé de l'objet
  if mode%=1
    if s$="Les enchères sur cet objet sont terminées." then lib% = 1
    if (lib%=1) and (s$=chr$(9)) then lib% = i% + 1
  end_if
  if mode%=2
    if instr(s$,"Ajouté(s) à votre liste d'Affaires à suivre")>0 then lib% = 1
    if (lib%=1) and (s$=chr$(9)) then lib% = i% + 1
  end_if
  if mode%=3
    if instr(s$,"Ajouter à vos Affaires à suivre")>0 then lib% = i% + 1
  end_if
  if i%=lib%
    text no_lib%,s$
    lib% = 0
  end_if

  ' === identifier le numéro d'objet
  p% = instr(s$,"Numéro de l'objet :")
  if p%>0
    s$ = mid$(s$,p%,len(s$))
    p% = instr(s$,":")
    text no_num%,mid$(s$,p%+2,len(s$))
  end_if
 
  ' === identifier date et heure de la fin des enchères
  p% = instr(s$,"Fin :"+chr$(9))
  if p%>0
    text no_date%,mid$(s$,p%+6,12)
    text no_time%,mid$(s$,p%+18,8)
  end_if
 
  ' === frais réels de livraison, frais eBay et frais PayPal
  text no_frais_reel%,"0,00"
  text no_frais_ebay%,"0,00"
  text no_frais_paypal%,"0,00"

next i%
return

accepter1:
  if n_table%>0
    for i%=1 to n_table%
      s$ = grid_read$(no_table%,i%+1,4)
      if s$=text$(no_num%)
        message "Cet objet est déjà dans la liste !"
        return
      end_if
    next i%
  end_if
  n_table% = n_table% + 1
  grid_row no_table%,n_table% + 1
  grid_write no_table%,n_table%+1,1,str$(n_table%)
  grid_write no_table%,n_table%+1,2,text$(no_date%)
  grid_write no_table%,n_table%+1,3,text$(no_time%)
  grid_write no_table%,n_table%+1,4,text$(no_num%)
  grid_write no_table%,n_table%+1,5,text$(no_lib%)
  grid_write no_table%,n_table%+1,6,text$(no_prix%)
  grid_write no_table%,n_table%+1,7,text$(no_liv%)
  grid_write no_table%,n_table%+1,8,text$(no_frais_ebay%)
  grid_write no_table%,n_table%+1,9,text$(no_frais_paypal%)
  calculer_marge(n_table%+1)
  totaux_plus(n_table%+1)
  if n_table%=1 then grid_row_fixed no_table%,1
  return
 
charger2:
  get_browser()
  if instr(s$, "- leboncoin.fr" )=0
    BringWindowToForeground(handle(no_LeBonCoin%))
    message "Ce n'est pas une page LeBonCoin: "+s$
    return
  end_if
  get_page_text()
  BringWindowToForeground(handle(no_LeBonCoin%))
  clear no_ebay%
  s_org$ = clipboard_string_paste$
  item_add no_ebay%,s_org$
  if instr(s_org$,"Mise en ligne par")=0
    message "Ce n'est pas une page produit."
    return
  end_if
  lib% = 0
 
  for i%=4 to count(no_ebay%)
    s$ = item_read$(no_ebay%,i%)

  ' === identifier le prix de vente
  p% = instr(s$,"Prix : "+chr$(9))
  if p%>0
    s$ = mid$(s$,p%+8,len(s$))
    s$ = left$(s$,len(s$)-2)
    p% = instr(s$," ")
    while p%>0
      s$ = left$(s$,p%-1)+mid$(s$,p%+1,len(s$))
      p% = instr(s$," ")
    end_while
    if right$(s$,3)<>",00) then s$ = s$ + ",00"
    text no_prix2%,s$
  end_if

  ' === identifier le libellé de l'objet
  if instr(s$,"Accueil > ")=1 then lib% = i% + 1
  if i%=lib%
    text no_lib2%,s$
    lib% = 0
  end_if

  ' === identifier date et heure de la mise en vente
  ' Mise en ligne par Eric le 25 octobre à 23:49.
  p% = instr(s$,"Mise en ligne par ")
  if p%>0
    p% = instr(s$," le ")
    p1% = instr(s$," à ")
    text no_date2%,mid$(s$,p%+4,p1%-p%-4)
    text no_time2%,mid$(s$,p1%+3,5)
  end_if
next i%
  return
 
accepter2:
  if n_table2%>0
    for i%=1 to n_table2%
      s$ = grid_read$(no_table2%,i%+1,4)
      if s$=text$(no_lib2%)
        s$ = grid_read$(no_table2%,i%+1,5)
          if s$=text$(no_prix2%)
            message "Cet objet est déjà dans la liste !"
            return
          end_if
      end_if
    next i%
  end_if
  n_table2% = n_table2% + 1
  grid_row no_table2%,n_table2% + 1
  grid_write no_table2%,n_table2%+1,1,str$(n_table2%)
  grid_write no_table2%,n_table2%+1,2,text$(no_date2%)
  grid_write no_table2%,n_table2%+1,3,text$(no_time2%)
  grid_write no_table2%,n_table2%+1,4,text$(no_lib2%)
  grid_write no_table2%,n_table2%+1,5,text$(no_prix2%)
  calculer_marge2(n_table2%+1)
  totaux_plus2(n_table2%+1)
  if n_table2%=1 then grid_row_fixed no_table2%,1
  return
 
charger3:
  get_browser()
  if instr(s$, "Vivastreet" )=0
    BringWindowToForeground(handle(no_vivastreet%))
    message "Ce n'est pas une page VivaStreet: "+s$
    return
  end_if
  get_page_text()
  BringWindowToForeground(handle(no_vivastreet%))
  clear no_ebay%
  s_org$ = clipboard_string_paste$
  item_add no_ebay%,s_org$
  if instr(s_org$,"Publiée le ")=0
    message "Ce n'est pas une page produit."
    return
  end_if
  lib% = 0
  prix% = 0
  maj% = 0
 
  for i%=4 to count(no_ebay%)
    s$ = item_read$(no_ebay%,i%)

  ' === identifier le prix de vente
  if s$="Prix" then prix% = i% + 1
  if i%=prix%
    s$ = left$(s$,len(s$)-1)
    p% = instr(s$," ")
    while p%>0
      s$ = left$(s$,p%-1)+mid$(s$,p%+1,len(s$))
      p% = instr(s$," ")
    end_while
    s$ = s$ + ",00"
    prix% = 0
    text no_prix3%,s$
  end_if

  ' === identifier le libellé de l'objet
  if instr(s$,"    Sauvegarder")=1 then lib% = i% + 2
  if i%=lib%
    if left$(s$,18)="Photos Vivastreet " then s$ = mid$(s$,18,len(s$))
    text no_lib3%,s$
    lib% = 0
  end_if
 
  ' === identifier le numéro d'annonce
  if instr(s$,"    Annonce N°")=1
    text no_num3%,mid$(s$,16,len(s$))
  end_if

  ' === identifier date de création et de mise à jour de l'annonce
  ' Mise en ligne par Eric le 25 octobre à 23:49.
  if instr(s$,"Publiée le ")=1 then text no_date3%,mid$(s$,11,10)
  if s$="Mise à jour le" then maj% = i% + 1
  if i%=maj%
    text no_time3%,s$
    maj% = 0
  end_if
next i%
  return

accepter3:
  if n_table3%>0
    for i%=1 to n_table3%
      s$ = grid_read$(no_table3%,i%+1,4)
      if s$=text$(no_num3%)
        message "Cet objet est déjà dans la liste !"
        return
      end_if
    next i%
  end_if
  n_table3% = n_table3% + 1
  grid_row no_table3%,n_table3% + 1
  grid_write no_table3%,n_table3%+1,1,str$(n_table3%)
  grid_write no_table3%,n_table3%+1,2,text$(no_date3%)
  grid_write no_table3%,n_table3%+1,3,text$(no_time3%)
  grid_write no_table3%,n_table3%+1,4,text$(no_num3%)
  grid_write no_table3%,n_table3%+1,5,text$(no_lib3%)
  grid_write no_table3%,n_table3%+1,6,text$(no_prix3%)
  calculer_marge3(n_table3%+1)
  totaux_plus3(n_table3%+1)
  if n_table3%=1 then grid_row_fixed no_table3%,1
  return
 
afficher:
  i% = mouse_y_left_down(no_table%)
  i% = grid_y_to_row(no_table%,i%)
  if i%=1 then return
  s$ = id_browser$
  GetWindowByTitle(1,s$)
  hnd% = GetWindowByTitle%
  BringWindowToForeground(hnd%)
  s$ = chr$(20)+ebay_search$+grid_read$(no_table%,i%,4)+chr$(13)
  SendStringAsText(hnd%,s$)
  return
 
supprimer:
  i% = mouse_y_left_down(no_table%)
  i% = grid_y_to_row(no_table%,i%)
  if i%=1 then return
  s$ = grid_read$(no_table%,i%,4) +": "+ grid_read$(no_table%,i%,5)
  if message_confirmation_yes_no("Vraiment supprimer: "+s$)=1
    totaux_moins(i%)
    grid_row_delete no_table%,i%
    n_table% = n_table% - 1
  end_if
  return
 
supprimer2:
  i% = mouse_y_left_down(no_table2%)
  i% = grid_y_to_row(no_table2%,i%)
  if i%=1 then return
  s$ = grid_read$(no_table2%,i%,4)
  if message_confirmation_yes_no("Vraiment supprimer: "+s$)=1
    totaux_moins2(i%)
    grid_row_delete no_table2%,i%
    n_table2% = n_table2% - 1
  end_if
  return

supprimer3:
  i% = mouse_y_left_down(no_table3%)
  i% = grid_y_to_row(no_table3%,i%)
  if i%=1 then return
  s$ = grid_read$(no_table3%,i%,4)+" "+grid_read$(no_table3%,i%,5)
  if message_confirmation_yes_no("Vraiment supprimer: "+s$)=1
    totaux_moins3(i%)
    grid_row_delete no_table3%,i%
    n_table3% = n_table3% - 1
  end_if
  return

close0:
  grid_save no_table%,n_table%+1,c_table1%,f_base1$
  grid_save no_table2%,n_table2%+1,c_table2%,f_base2$
  grid_save no_table3%,n_table3%+1,c_table3%,f_base3$
  return

click_table:
  col% = mouse_x_left_down(no_table%)
  col% = grid_x_to_column(no_table%,col%)
  if col%=4 then set_focus no_afficher%
  if col%=8 then set_focus no_mod_frais_reel%
  if col%=9 then set_focus no_mod_frais_ebay%
  if col%=10 then set_focus no_mod_frais_paypal%
  return
 
click_table2:
  col% = mouse_x_left_down(no_table2%)
  col% = grid_x_to_column(no_table2%,col%)
  if col%=6 then set_focus no_mod_frais_reel2%
  return

click_table3:
  col% = mouse_x_left_down(no_table3%)
  col% = grid_x_to_column(no_table3%,col%)
  if col%=7 then set_focus no_mod_frais_reel3%
  return

mod_reel:
  i% = mouse_y_left_down(no_table%)
  i% = grid_y_to_row(no_table%,i%)
  if i%=1 then return
  s$ = grid_read$(no_table%,i%,8)
  s1$ = grid_read$(no_table%,i%,5)
  s2$ = grid_read$(no_table%,i%,4)
  if message_input("Frais livraison réels "+s2$,s1$+": "+s$,s$)=1
    s2$ = message_text$
    p% = instr(s2$,",")
    if p%>0 then s2$ = left$(s2$,p%-1) + "." + mid$(s2$,p%+1,len(s2$))
    if s2$="" then s2$ = "0.00"
    if instr(s2$,".")=0 then s2$ = s2$ + ".00"
    if instr(s2$,".")=len(s2$)-1 then s2$ = s2$ + "0"
    if numeric(s2$)=0 then return"
    if s$="" then s$ = "0.00"
    s$ = left$(s$,len(s$)-3) + "." + right$(s$,2)
    reel_total = reel_total - val(s$) + val(s2$)
    marge_total = marge_total + val(s$) - val(s2$)
    grid_write no_table%,i%,8,s2$
    calculer_marge(i%)
    totaux_afficher()
  end_if
  return
 
mod_reel2:
  i% = mouse_y_left_down(no_table2%)
  i% = grid_y_to_row(no_table2%,i%)
  if i%=1 then return
  s$ = grid_read$(no_table2%,i%,6)
  s1$ = grid_read$(no_table2%,i%,4)
  if message_input("Frais livraison réels",s1$+": "+s$,s$)=1
    s2$ = message_text$
    p% = instr(s2$,",")
    if p%>0 then s2$ = left$(s2$,p%-1) + "." + mid$(s2$,p%+1,len(s2$))
    if s2$="" then s2$ = "0.00"
    if instr(s2$,".")=0 then s2$ = s2$ + ".00"
    if instr(s2$,".")=len(s2$)-1 then s2$ = s2$ + "0"
    if numeric(s2$)=0 then return
    if s$="" then s$ = "0.00"
    s$ = left$(s$,len(s$)-3) + "." + right$(s$,2)
    reel_total2 = reel_total2 - val(s$) + val(s2$)
    marge_total2 = marge_total2 + val(s$) - val(s2$)
    grid_write no_table2%,i%,6,s2$
    calculer_marge2(i%)
    totaux_afficher2()
  end_if
  return

mod_reel3:
  i% = mouse_y_left_down(no_table3%)
  i% = grid_y_to_row(no_table3%,i%)
  if i%=1 then return
  s$ = grid_read$(no_table3%,i%,7)
  s1$ = grid_read$(no_table3%,i%,5)
  if message_input("Frais livraison réels",s1$+": "+s$,s$)=1
    s2$ = message_text$
    p% = instr(s2$,",")
    if p%>0 then s2$ = left$(s2$,p%-1) + "." + mid$(s2$,p%+1,len(s2$))
    if s2$="" then s2$ = "0.00"
    if instr(s2$,".")=0 then s2$ = s2$ + ".00"
    if instr(s2$,".")=len(s2$)-1 then s2$ = s2$ + "0"
    if numeric(s2$)=0 then return
    if s$="" then s$ = "0.00"
    s$ = left$(s$,len(s$)-3) + "." + right$(s$,2)
    reel_total3 = reel_total3 - val(s$) + val(s2$)
    marge_total3 = marge_total3 + val(s$) - val(s2$)
    grid_write no_table3%,i%,7,s2$
    calculer_marge3(i%)
    totaux_afficher3()
  end_if
  return

mod_ebay:
  i% = mouse_y_left_down(no_table%)
  i% = grid_y_to_row(no_table%,i%)
  if i%=1 then return
  s$ = grid_read$(no_table%,i%,9)
  s1$ = grid_read$(no_table%,i%,5)
  s2$ = grid_read$(no_table%,i%,4)
  if message_input("Frais eBay objet "+s2$,s1$+": "+s$,s$)=1
    s2$ = message_text$
    p% = instr(s2$,",")
    if p%>0 then s2$ = left$(s2$,p%-1) + "." + mid$(s2$,p%+1,len(s2$))
    if s2$="" then s2$ = "0.00"
    if instr(s2$,".")=0 then s2$ = s2$ + ".00"
    if instr(s2$,".")=len(s2$)-1 then s2$ = s2$ + "0"
    if numeric(s2$)=0 then message "x"
    if s$="" then s$ = "0.00"
    s$ = left$(s$,len(s$)-3) + "." + right$(s$,2)
    ebay_total = ebay_total - val(s$) + val(s2$)
    marge_total = marge_total + val(s$) - val(s2$)
    grid_write no_table%,i%,9,s2$
    calculer_marge(i%)
    totaux_afficher()
  end_if
  return

mod_paypal:
  i% = mouse_y_left_down(no_table%)
  i% = grid_y_to_row(no_table%,i%)
  if i%=1 then return
  s$ = grid_read$(no_table%,i%,19)
  s1$ = grid_read$(no_table%,i%,5)
  s2$ = grid_read$(no_table%,i%,4)
  if message_input("Frais PayPal objet "+s2$,s1$+": "+s$,s$)=1
    s2$ = message_text$
    p% = instr(s2$,",")
    if p%>0 then s2$ = left$(s2$,p%-1) + "." + mid$(s2$,p%+1,len(s2$))
    if s2$="" then s2$ = "0.00"
    if instr(s2$,".")=0 then s2$ = s2$ + ".00"
    if instr(s2$,".")=len(s2$)-1 then s2$ = s2$ + "0"
    if numeric(s2$)=0 then message "x"
    if s$="" then s$ = "0.00"
    s$ = left$(s$,len(s$)-3) + "." + right$(s$,2)
    paypal_total = paypal_total - val(s$) + val(s2$)
    marge_total = marge_total + val(s$) - val(s2$)
    grid_write no_table%,i%,10,s2$
    calculer_marge(i%)
    totaux_afficher()
  end_if
  return

change_site1:
  select item_index(no_site1%)
    case 1: ' eBay - on y est
    case 2: ' LeBonCoin
      hide 0
      show no_LeBonCoin%
      text no_site2%,item_read$(no_site2%,2)
    case 3: ' VivaStreet
      hide 0
      show no_VivaStreet%
      text no_site3%,item_read$(no_site2%,3)
  end_select
  return
 
change_site2:
  select item_index(no_site2%)
    case 1: ' eBay
      hide no_LeBonCoin%
      show 0
      text no_site1%,item_read$(no_site1%,1)
    case 2: ' LeBonCoin - on y est
    case 3: ' VivaStreet
      hide no_LeBonCoin%
      show no_VivaStreet%
      text no_site3%,item_read$(no_site3%,3)
  end_select
  return

change_site3:
  select item_index(no_site3%)
    case 1: ' eBay
      hide no_VivaStreet%
      show 0
      text no_site1%,item_read$(no_site1%,1)
    case 2: ' LeBonCoin
      hide no_VivaStreet%
      show no_LeBonCoin%
      text no_site2%,item_read$(no_site2%,2)
    case 3: ' VivaStreet - on y est
  end_select
  return

close_leboncoin:
  hide no_LeBonCoin%
  show 0
  text no_site1%,item_read$(no_site1%,1)
  to_foreground 0
  return

close_vivastreet:
  hide no_vivastreet%
  show 0
  text no_site1%,item_read$(no_site1%,1)
  to_foreground 0
  return


' *** procédures du programme initial *************************************
sub labels()
  label close0, charger1, accepter1, afficher, supprimer, click_table
  label mod_ebay, mod_paypal, mod_reel, change_site1, close_leboncoin
  label change_site2, charger2, accepter2, mod_reel2, supprimer2
  label click_table2
  label change_site3, charger3, accepter3, mod_reel3, supprimer3
  label click_table3, close_vivastreet
end_sub

sub constantes()
  dim c_table1% : c_table1% = 11
  dim c_table2% : c_table2% = 7
  dim c_table3% : c_table3% = 8
  dim f_base1$ : f_base1$ = "ebay_ventes.txt"
  dim f_base2$ : f_base2$ = "leboncoin_ventes.txt"
  dim f_base3$ : f_base3$ = "vivastreet_ventes.txt"
  dim id_browser$ : id_browser$ = " - Mozilla Firefox"
  dim ebay_search$ : ebay_search$ = "http://cgi.ebay.fr/ws/eBayISAPI.dll?ViewItem&item="
end_sub

sub variables()
  dim no%, s$, s1$, s2$, s_org$, i%, p%, p1%, site%, maj%
  dim lib%, prix%, i1%, n%, mode%, col%, nom$, hnd%
  dim no_ebay%, no_num%, no_lib%, no_prix%, no_liv%
  dim no_date%, no_time%, no_table%, no_total%, no_frais_reel%
  dim no_mod_frais_ebay%, no_mod_frais_paypal%,  no_mod_frais_reel%
  dim no_frais_ebay%, no_frais_paypal%, no_afficher%, no_site1%, no_site2%
  dim n_table%, marge, no_site3%
  dim prix_total, liv_total, reel_total, ebay_total, paypal_total, marge_total
  dim prix_global, liv_global, reel_global, ebay_global, paypal_global, marge_global
  dim no_LeBonCoin%, no_prix2%, no_lib2%, no_date2%, no_time2%, no_table2%
  dim no_total2%, marge2, n_table2%, prix_total2, reel_total2, marge_total2
  dim no_mod_frais_reel2%
  dim no_VivaStreet%, no_prix3%, no_lib3%, no_date3%, no_time3%, no_table3%
  dim no_total3%, marge3, n_table3%, prix_total3, reel_total3, marge_total3
  dim no_mod_frais_reel3%, no_num3%
end_sub

sub form0()
  caption 0,"Gestion des ventes eBay"
  width 0,1050 : height 0,800
  on_close 0,close0
end_sub

sub GUI()
  no% = no% + 1 : memo no% : no_ebay% = no% : width no%,900
    hide no%
  no% = no% + 1 : combo no% : top no%,10 : left no%,800
    no_site1% = no% : on_click no%,change_site1
    item_add no%,"eBay"
    item_add no%,"LeBonCoin"
    item_add no%,"VivaStreet"
    text no%,item_read$(no%,1)

  ' ****** GUI pour site eBay
  no% = no% + 1 : button no% : top no%,10 : left no%,10
    caption no%,"Charger" : on_click no%,charger1
  no% = no% + 1 : button no% : top no%,70 : left no%,10
    caption no%,"Accepter" : on_click no%,accepter1

  no% = no% + 1 : alpha no%
    top no%,10 : left no%,120 : caption no%,"Objet:"
  no% = no% + 1 : edit no% : no_num% = no%
    top no%,10 : left no%,160
  no% = no% + 1 : alpha no%
    top no%,10 : left no%,300 : caption no%,"Titre:"
  no% = no% + 1 : edit no% : no_lib% = no% : width no%,400
    top no%,10 : left no%,360
  no% = no% + 1 : alpha no%
    top no%,40 : left no%,120 : caption no%,"Prix:"
  no% = no% + 1 : edit no% : no_prix% = no%
    top no%,40 : left no%,160 : width no%,80
  no% = no% + 1 : alpha no%
    top no%,40 : left no%,300 : caption no%,"Livraison:"
  no% = no% + 1 : edit no% : no_liv% = no%
    top no%,40 : left no%,360 : width no%,50
  no% = no% + 1 : alpha no%
    top no%,40 : left no%,430 : caption no%,"Frais réels:"
  no% = no% + 1 : edit no% : no_frais_reel% = no%
    top no%,40 : left no%,510 : width no%,50
  no% = no% + 1 : alpha no%
    top no%,40 : left no%,580 : caption no%,"Date:"
  no% = no% + 1 : edit no% : no_date% = no%
    top no%,40 : left no%,620 : width no%,80
  no% = no% + 1 : alpha no%
    top no%,40 : left no%,730 : caption no%,"Heure:"
  no% = no% + 1 : edit no% : no_time% = no%
    top no%,40 : left no%,780 : width no%,60
  no% = no% + 1 : alpha no%
    top no%,70 : left no%,300 : caption no%,"Frais eBay:"
  no% = no% + 1 : edit no% : no_frais_ebay% = no%
    top no%,70 : left no%,360 : width no%,50
  no% = no% + 1 : alpha no%
    top no%,70 : left no%,430 : caption no%,"Frais PayPal:"
  no% = no% + 1 : edit no% : no_frais_paypal% = no%
    top no%,70 : left no%,510 : width no%,50

   
  no% = no% + 1 : grid no% : no_table% = no%
    top no%,130 : left no%,c_table1% : width no%,1027 : height no%,453
    on_click no%,click_table
    grid_row no%,1 : grid_column no%,c_table1%
    grid_one_column_width no%,1,50
    grid_write no%,1,1,"No."
    grid_one_column_width no%,2,80
    grid_write no%,1,2,"Date"
    grid_one_column_width no%,3,60
    grid_write no%,1,3,"Heure"
    grid_one_column_width no%,4,80
    grid_write no%,1,4,"Objet"
    grid_one_column_width no%,5,400
    grid_write no%,1,5,"Titre"
    grid_one_column_width no%,6,80
    grid_write no%,1,6,"Prix"
    grid_one_column_width no%,7,50
    grid_write no%,1,7,"Livraison"
    grid_one_column_width no%,8,50
    grid_write no%,1,8,"Frais réels"
    grid_one_column_width no%,9,50
    grid_write no%,1,9,"eBay"
    grid_one_column_width no%,10,50
    grid_write no%,1,10,"PayPal"
    grid_one_column_width no%,11,50
    grid_write no%,1,11,"Marge"

  no% = no% + 1 : grid no% : no_total% = no%
    top no%,590 : left no%,10 : width no%,1027 : height no%,155
    grid_row no%,5 : grid_column no%,c_table1%
    grid_one_column_width no%,1,50
    grid_write no%,1,1,"Total"
    grid_write no%,2,1,"eBay"
    grid_write no%,3,1,"LeBonC..."
    Grid_Write no%,4,1,"VivaStr..."
    Grid_Write no%,5,1,"Total"
    grid_one_column_width no%,2,80
    grid_one_column_width no%,3,60
    grid_one_column_width no%,4,80
    grid_one_column_width no%,5,400
    grid_one_column_width no%,6,80
    grid_write no%,1,6,"Prix"
    grid_one_column_width no%,7,50
    grid_write no%,1,7,"Livraison"
    grid_one_column_width no%,8,50
    grid_write no%,1,8,"Frais réels"
    grid_one_column_width no%,9,50
    grid_write no%,1,9,"eBay"
    grid_one_column_width no%,10,50
    grid_write no%,1,10,"PayPal"
    grid_one_column_width no%,11,50
    grid_write no%,1,11,"Marge"

  no% = no% + 1 : button no% : top no%,100 : left no%,205
    caption no%,"Afficher" : on_click no%,afficher : no_afficher% = no%
  no% = no% + 1 : button no% : top no%,100 : left no%,400
    caption no%,"Supprimer" : on_click no%,supprimer
  no% = no% + 1 : button no% : top no%,100 : left no%,820 : width no%,50
    caption no%,"Mod." : on_click no%,mod_reel : no_mod_frais_reel% = no%
  no% = no% + 1 : button no% : top no%,100 : left no%,870 : width no%,50
    caption no%,"Mod." : on_click no%,mod_ebay : no_mod_frais_ebay% = no%
  no% = no% + 1 : button no% : top no%,100 : left no%,920 : width no%,50
    caption no%,"Mod." : on_click no%,mod_paypal : no_mod_frais_paypal% = no%

  ' ****** GUI pour site LeBonCoin
  no% = no% + 1 : form no% : hide no% : no_LeBonCoin% = no%
    width no%,1050 : height no%,800
    caption no%,"Gestion des ventes LeBonCoin"
    on_close no%,close_leboncoin
    command_target_is no%
  no% = no% + 1 : combo no% : top no%,10 : left no%,800
    no_site2% = no% : on_click no%,change_site2
    item_add no%,"eBay"
    item_add no%,"LeBonCoin"
    item_add no%,"VivaStreet"
    text no%,item_read$(no%,2)

  no% = no% + 1 : button no% : top no%,10 : left no%,10
    caption no%,"Charger" : on_click no%,charger2
  no% = no% + 1 : button no% : top no%,70 : left no%,10
    caption no%,"Accepter" : on_click no%,accepter2
  no% = no% + 1 : alpha no%
    top no%,40 : left no%,120 : caption no%,"Prix:"
  no% = no% + 1 : edit no% : no_prix2% = no%
    top no%,40 : left no%,160 : width no%,80
  no% = no% + 1 : alpha no%
    top no%,10 : left no%,300 : caption no%,"Titre:"
  no% = no% + 1 : edit no% : no_lib2% = no% : width no%,400
    top no%,10 : left no%,360
  no% = no% + 1 : alpha no%
    top no%,40 : left no%,580 : caption no%,"Date:"
  no% = no% + 1 : edit no% : no_date2% = no%
    top no%,40 : left no%,620 : width no%,80
  no% = no% + 1 : alpha no%
    top no%,40 : left no%,730 : caption no%,"Heure:"
  no% = no% + 1 : edit no% : no_time2% = no%
    top no%,40 : left no%,780 : width no%,60

  no% = no% + 1 : grid no% : no_table2% = no%
    top no%,130 : left no%,c_table2% : width no%,798 : height no%,503
    on_click no%,click_table2
    grid_row no%,1 : grid_column no%,c_table2%
    grid_one_column_width no%,1,50
    grid_write no%,1,1,"No."
    grid_one_column_width no%,2,80
    grid_write no%,1,2,"Date"
    grid_one_column_width no%,3,60
    grid_write no%,1,3,"Heure"
    grid_one_column_width no%,4,400
    grid_write no%,1,4,"Titre"
    grid_one_column_width no%,5,80
    grid_write no%,1,5,"Prix"
    grid_one_column_width no%,6,50
    grid_write no%,1,6,"Frais réels"
    grid_one_column_width no%,7,50
    grid_write no%,1,7,"Marge"

  no% = no% + 1 : grid no% : no_total2% = no%
    top no%,640 : left no%,10 : width no%,798 : height no%,56
    grid_row no%,2 : grid_column no%,c_table2%
    grid_one_column_width no%,1,50
    grid_write no%,1,1,"Total"
    grid_one_column_width no%,2,80
    grid_one_column_width no%,3,60
    grid_one_column_width no%,4,400
    grid_one_column_width no%,5,80
    grid_write no%,1,5,"Prix"
    grid_one_column_width no%,6,50
    grid_write no%,1,6,"Frais réels"
    grid_one_column_width no%,7,50
    grid_write no%,1,7,"Marge"

  no% = no% + 1 : button no% : top no%,100 : left no%,400
    caption no%,"Supprimer" : on_click no%,supprimer2
  no% = no% + 1 : button no% : top no%,100 : left no%,685 : width no%,50
    caption no%,"Mod." : on_click no%,mod_reel2 : no_mod_frais_reel2% = no%

  ' ****** GUI pour site VivaStreet
  no% = no% + 1 : form no% : hide no% : no_VivaStreet% = no%
    width no%,1050 : height no%,800
    caption no%,"Gestion des ventes VivaStreet"
    on_close no%,close_vivastreet
    command_target_is no%
  no% = no% + 1 : combo no% : top no%,10 : left no%,800
    no_site3% = no% : on_click no%,change_site3
    item_add no%,"eBay"
    item_add no%,"LeBonCoin"
    item_add no%,"VivaStreet"
    text no%,item_read$(no%,3)

  no% = no% + 1 : alpha no%
    top no%,10 : left no%,110 : caption no%,"Annonce:"
  no% = no% + 1 : edit no% : no_num3% = no%
    top no%,10 : left no%,160
  no% = no% + 1 : button no% : top no%,10 : left no%,10
    caption no%,"Charger" : on_click no%,charger3
  no% = no% + 1 : button no% : top no%,70 : left no%,10
    caption no%,"Accepter" : on_click no%,accepter3
  no% = no% + 1 : alpha no%
    top no%,40 : left no%,110 : caption no%,"Prix:"
  no% = no% + 1 : edit no% : no_prix3% = no%
    top no%,40 : left no%,160 : width no%,80
  no% = no% + 1 : alpha no%
    top no%,10 : left no%,300 : caption no%,"Titre:"
  no% = no% + 1 : edit no% : no_lib3% = no% : width no%,400
    top no%,10 : left no%,360
  no% = no% + 1 : alpha no%
    top no%,40 : left no%,580 : caption no%,"Publié:"
  no% = no% + 1 : edit no% : no_date3% = no%
    top no%,40 : left no%,620 : width no%,80
  no% = no% + 1 : alpha no%
    top no%,40 : left no%,730 : caption no%,"Mise à jour:"
  no% = no% + 1 : edit no% : no_time3% = no%
    top no%,40 : left no%,800 : width no%,80

  no% = no% + 1 : grid no% : no_table3% = no%
    top no%,130 : left no%,c_table3% : width no%,898 : height no%,503
    on_click no%,click_table3
    grid_row no%,1 : grid_column no%, c_table3%
    grid_one_column_width no%,1,50
    grid_write no%,1,1,"No."
    grid_one_column_width no%,2,80
    grid_write no%,1,2,"Publié"
    grid_one_column_width no%,3,80
    grid_write no%,1,3,"Mise à jour"
    grid_one_column_width no%,4,80
    grid_write no%,1,4,"Annonce"
    grid_one_column_width no%,5,400
    grid_write no%,1,5,"Titre"
    grid_one_column_width no%,6,80
    grid_write no%,1,6,"Prix"
    grid_one_column_width no%,7,50
    grid_write no%,1,7,"Frais réels"
    grid_one_column_width no%,8,50
    grid_write no%,1,8,"Marge"

  no% = no% + 1 : grid no% : no_total3% = no%
    top no%,640 : left no%,10 : width no%,898 : height no%,56
    grid_row no%,2 : grid_column no%,c_table3%
    grid_one_column_width no%,1,50
    grid_write no%,1,1,"Total"
    grid_one_column_width no%,2,80
    grid_one_column_width no%,3,80
    grid_one_column_width no%,4,80
    grid_one_column_width no%,5,400
    grid_one_column_width no%,6,80
    grid_write no%,1,6,"Prix"
    grid_one_column_width no%,7,50
    grid_write no%,1,7,"Frais réels"
    grid_one_column_width no%,8,50
    grid_write no%,1,8,"Marge"

  no% = no% + 1 : button no% : top no%,100 : left no%,400
    caption no%,"Supprimer" : on_click no%,supprimer3
  no% = no% + 1 : button no% : top no%,100 : left no%,785 : width no%,50
    caption no%,"Mod." : on_click no%,mod_reel3 : no_mod_frais_reel3% = no%

  command_target_is 0
end_sub

sub initialisations()
  dim_local s1$
  site% = 1 : ' défaut: démarrer abev eBay
  n_table% = 0
  prix_total = 0
  liv_total = 0
  if file_exists(f_base1$)=1 then grid_load no_table%,f_base1$
  if file_exists(f_base2$)=1 then grid_load no_table2%,f_base2$
  if file_exists(f_base3$)=1 then grid_load no_table3%,f_base3$
  n_table% = 1
  repeat
    s1$ = grid_read$(no_table%,n_table%+1,1)
    if s1$="" then exit_repeat
    totaux_plus(n_table%+1)
    n_table% = n_table% + 1
  until s1$=""
  grid_row no_table%, n_table%
  n_table% = n_table% - 1
  if n_table%>0 then grid_row_fixed no_table%,1
  n_table2% = 1
  repeat
    s1$ = grid_read$(no_table2%,n_table2%+1,1)
    if s1$="" then exit_repeat
    totaux_plus2(n_table2%+1)
    n_table2% = n_table2% + 1
  until s1$=""
  grid_row no_table2%, n_table2%
  n_table2% = n_table2% - 1
  if n_table2%>0 then grid_row_fixed no_table2%,1
  n_table3% = 1
  repeat
    s1$ = grid_read$(no_table3%,n_table3%+1,1)
    if s1$="" then exit_repeat
    totaux_plus3(n_table3%+1)
    n_table3% = n_table3% + 1
  until s1$=""
  grid_row no_table3%, n_table3%
  n_table3% = n_table3% - 1
  if n_table3%>0 then grid_row_fixed no_table3%,1
  KGF_initialize("KGF.dll")
 
  nom$ = "firefox.exe"
  hnd% = dll_call1("GetProcessWindowHandle",adr(nom$))

end_sub






' *** procédures de l'application *****************************************
sub totaux_plus(ind%)
  s$ = grid_read$(no_table%,ind%,6)
  if s$="" then s$ = "0.00"
  s$ = left$(s$,len(s$)-3) + "." + right$(s$,2)
  prix_total = prix_total + val(s$)
  prix_global = prix_global + val(s$)
  s$ = grid_read$(no_table%,ind%,7)
  if s$="" then s$ = "0.00"
  s$ = left$(s$,len(s$)-3) + "." + right$(s$,2)
  liv_total = liv_total + val(s$)
  liv_global = liv_global + val(s$)
  s$ = grid_read$(no_table%,ind%,8)
  if s$="" then s$ = "0.00"
  s$ = left$(s$,len(s$)-3) + "." + right$(s$,2)
  reel_total = reel_total + val(s$)
  reel_global = reel_global + val(s$)
  s$ = grid_read$(no_table%,ind%,9)
  if s$="" then s$ = "0.00"
  s$ = left$(s$,len(s$)-3) + "." + right$(s$,2)
  ebay_total = ebay_total + val(s$)
  ebay_global = ebay_global + val(s$)
  s$ = grid_read$(no_table%,ind%,10)
  if s$="" then s$ = "0.00"
  s$ = left$(s$,len(s$)-3) + "." + right$(s$,2)
  paypal_total = paypal_total + val(s$)
  paypal_global = paypal_global + val(s$)
  s$ = grid_read$(no_table%,ind%,c_table1%)
  if s$="" then s$ = "0.00"
  s$ = left$(s$,len(s$)-3) + "." + right$(s$,2)
  marge_total = marge_total + val(s$)
  marge_global = marge_global + val(s$)
  totaux_afficher()
end_sub

sub totaux_plus2(ind%)
  s$ = grid_read$(no_table2%,ind%,5)
  if s$="" then s$ = "0.00"
  s$ = left$(s$,len(s$)-3) + "." + right$(s$,2)
  prix_total2 = prix_total2 + val(s$)
  prix_global = prix_global + val(s$)
  s$ = grid_read$(no_table2%,ind%,6)
  if s$="" then s$ = "0.00"
  s$ = left$(s$,len(s$)-3) + "." + right$(s$,2)
  reel_total2 = reel_total2 + val(s$)
  reel_global = reel_global + val(s$)
  s$ = grid_read$(no_table2%,ind%,c_table2%)
  if s$="" then s$ = "0.00"
  s$ = left$(s$,len(s$)-3) + "." + right$(s$,2)
  marge_total2 = marge_total2 + val(s$)
  marge_global = marge_global + val(s$)
  totaux_afficher2()
end_sub

sub totaux_plus3(ind%)
  s$ = grid_read$(no_table3%,ind%,6)
  if s$="" then s$ = "0.00"
  s$ = left$(s$,len(s$)-3) + "." + right$(s$,2)
  prix_total3 = prix_total3 + val(s$)
  prix_global = prix_global + val(s$)
  s$ = grid_read$(no_table3%,ind%,7)
  if s$="" then s$ = "0.00"
  s$ = left$(s$,len(s$)-3) + "." + right$(s$,2)
  reel_total3 = reel_total3 + val(s$)
  reel_global = reel_global + val(s$)
  s$ = grid_read$(no_table3%,ind%,c_table3%)
  if s$="" then s$ = "0.00"
  s$ = left$(s$,len(s$)-3) + "." + right$(s$,2)
  marge_total3 = marge_total3 + val(s$)
  marge_global = marge_global + val(s$)
  totaux_afficher3()
end_sub

sub totaux_moins(ind%)
  s$ = grid_read$(no_table%,ind%,6)
  if s$="" then s$ = "0.00"
  s$ = left$(s$,len(s$)-3) + "." + right$(s$,2)
  prix_total = prix_total - val(s$)
  prix_global = prix_global - val(s$)
  s$ = grid_read$(no_table%,ind%,7)
  if s$="" then s$ = "0.00"
  s$ = left$(s$,len(s$)-3) + "." + right$(s$,2)
  liv_total = liv_total - val(s$)
  liv_global = liv_global - val(s$)
  s$ = grid_read$(no_table%,ind%,8)
  if s$="" then s$ = "0.00"
  s$ = left$(s$,len(s$)-3) + "." + right$(s$,2)
  reel_total = reel_total - val(s$)
  reel_global = reel_global - val(s$)
  s$ = grid_read$(no_table%,ind%,9)
  if s$="" then s$ = "0.00"
  s$ = left$(s$,len(s$)-3) + "." + right$(s$,2)
  ebay_total = ebay_total - val(s$)
  ebay_global = ebay_global - val(s$)
  s$ = grid_read$(no_table%,ind%,10)
  if s$="" then s$ = "0.00"
  s$ = left$(s$,len(s$)-3) + "." + right$(s$,2)
  paypal_total = paypal_total - val(s$)
  paypal_global = paypal_global - val(s$)
  s$ = grid_read$(no_table%,ind%,c_table1%)
  if s$="" then s$ = "0.00"
  s$ = left$(s$,len(s$)-3) + "." + right$(s$,2)
  marge_total = marge_total - val(s$)
  marge_global = marge_global - val(s$)
  totaux_afficher()
end_sub

sub totaux_moins2(ind%)
  s$ = grid_read$(no_table2%,ind%,5)
  if s$="" then s$ = "0.00"
  s$ = left$(s$,len(s$)-3) + "." + right$(s$,2)
  prix_total2 = prix_total2 - val(s$)
  prix_global = prix_global - val(s$)
  s$ = grid_read$(no_table2%,ind%,6)
  if s$="" then s$ = "0.00"
  s$ = left$(s$,len(s$)-3) + "." + right$(s$,2)
  reel_total2 = reel_total2 - val(s$)
  reel_global = reel_global - val(s$)
  s$ = grid_read$(no_table2%,ind%,c_table2%)
  if s$="" then s$ = "0.00"
  s$ = left$(s$,len(s$)-3) + "." + right$(s$,2)
  marge_total2 = marge_total2 - val(s$)
  marge_global = marge_global - val(s$)
  totaux_afficher2()
end_sub

sub totaux_moins3(ind%)
  s$ = grid_read$(no_table3%,ind%,6)
  if s$="" then s$ = "0.00"
  s$ = left$(s$,len(s$)-3) + "." + right$(s$,2)
  prix_total3 = prix_total3 - val(s$)
  prix_global = prix_global - val(s$)
  s$ = grid_read$(no_table3%,ind%,7)
  if s$="" then s$ = "0.00"
  s$ = left$(s$,len(s$)-3) + "." + right$(s$,2)
  reel_total3 = reel_total3 - val(s$)
  reel_global = reel_global - val(s$)
  s$ = grid_read$(no_table3%,ind%,c_table3%)
  if s$="" then s$ = "0.00"
  s$ = left$(s$,len(s$)-3) + "." + right$(s$,2)
  marge_total3 = marge_total3 - val(s$)
  marge_global = marge_global - val(s$)
  totaux_afficher3()
end_sub

sub totaux_afficher()
  grid_write no_total%,2,1,str$(n_table%)
  s$ = str$(prix_total)
  p% = instr(s$,".")
  if p%>0 then s$ = left$(s$,p%-1) + "," + mid$(s$,p%+1,len(s$))
  if instr(s$,",")=0 then s$ = s$ + ",00"
  if instr(s$,",")=len(s$)-1 then s$ = s$ + "0"
  grid_write no_total%,2,6,s$
  s$ = str$(liv_total)
  p% = instr(s$,".")
  if p%>0 then s$ = left$(s$,p%-1) + "," + mid$(s$,p%+1,len(s$))
  if instr(s$,",")=0 then s$ = s$ + ",00"
  if instr(s$,",")=len(s$)-1 then s$ = s$ + "0"
  grid_write no_total%,2,7,s$
  s$ = str$(reel_total)
  p% = instr(s$,".")
  if p%>0 then s$ = left$(s$,p%-1) + "," + mid$(s$,p%+1,len(s$))
  if instr(s$,",")=0 then s$ = s$ + ",00"
  if instr(s$,",")=len(s$)-1 then s$ = s$ + "0"
  grid_write no_total%,2,8,s$
  s$ = str$(ebay_total)
  p% = instr(s$,".")
  if p%>0 then s$ = left$(s$,p%-1) + "," + mid$(s$,p%+1,len(s$))
  if instr(s$,",")=0 then s$ = s$ + ",00"
  if instr(s$,",")=len(s$)-1 then s$ = s$ + "0"
  grid_write no_total%,2,9,s$
  s$ = str$(paypal_total)
  p% = instr(s$,".")
  if p%>0 then s$ = left$(s$,p%-1) + "," + mid$(s$,p%+1,len(s$))
  if instr(s$,",")=0 then s$ = s$ + ",00"
  if instr(s$,",")=len(s$)-1 then s$ = s$ + "0"
  grid_write no_total%,2,10,s$
  s$ = str$(marge_total)
  p% = instr(s$,".")
  if p%>0 then s$ = left$(s$,p%-1) + "," + mid$(s$,p%+1,len(s$))
  if instr(s$,",")=0 then s$ = s$ + ",00"
  if instr(s$,",")=len(s$)-1 then s$ = s$ + "0"
  grid_write no_total%,2,11,s$
  globaux_afficher()
end_sub

sub totaux_afficher2()
  grid_write no_total2%,2,1,str$(n_table2%)
  s$ = str$(prix_total2)
  p% = instr(s$,".")
  if p%>0 then s$ = left$(s$,p%-1) + "," + mid$(s$,p%+1,len(s$))
  if instr(s$,",")=0 then s$ = s$ + ",00"
  if instr(s$,",")=len(s$)-1 then s$ = s$ + "0"
  grid_write no_total2%,2,5,s$
  grid_write no_total%,3,6,s$
  s$ = str$(reel_total2)
  p% = instr(s$,".")
  if p%>0 then s$ = left$(s$,p%-1) + "," + mid$(s$,p%+1,len(s$))
  if instr(s$,",")=0 then s$ = s$ + ",00"
  if instr(s$,",")=len(s$)-1 then s$ = s$ + "0"
  grid_write no_total2%,2,6,s$
  grid_write no_total%,3,8,s$
  s$ = str$(marge_total2)
  p% = instr(s$,".")
  if p%>0 then s$ = left$(s$,p%-1) + "," + mid$(s$,p%+1,len(s$))
  if instr(s$,",")=0 then s$ = s$ + ",00"
  if instr(s$,",")=len(s$)-1 then s$ = s$ + "0"
  grid_write no_total2%,2,c_table2%,s$
  grid_write no_total%,3,c_table1%,s$
  globaux_afficher()
end_sub

sub totaux_afficher3()
  grid_write no_total3%,2,1,str$(n_table3%)
  s$ = str$(prix_total3)
  p% = instr(s$,".")
  if p%>0 then s$ = left$(s$,p%-1) + "," + mid$(s$,p%+1,len(s$))
  if instr(s$,",")=0 then s$ = s$ + ",00"
  if instr(s$,",")=len(s$)-1 then s$ = s$ + "0"
  grid_write no_total3%,2,6,s$
  grid_write no_total%,4,6,s$
  s$ = str$(reel_total3)
  p% = instr(s$,".")
  if p%>0 then s$ = left$(s$,p%-1) + "," + mid$(s$,p%+1,len(s$))
  if instr(s$,",")=0 then s$ = s$ + ",00"
  if instr(s$,",")=len(s$)-1 then s$ = s$ + "0"
  grid_write no_total3%,2,7,s$
  grid_write no_total%,4,8,s$
  s$ = str$(marge_total3)
  p% = instr(s$,".")
  if p%>0 then s$ = left$(s$,p%-1) + "," + mid$(s$,p%+1,len(s$))
  if instr(s$,",")=0 then s$ = s$ + ",00"
  if instr(s$,",")=len(s$)-1 then s$ = s$ + "0"
  grid_write no_total3%,2,c_table3%,s$
  grid_write no_total%,4,c_table1%,s$
  globaux_afficher()
end_sub

sub globaux_afficher()
  s$ = str$(prix_global)
  p% = instr(s$,".")
  if p%>0 then s$ = left$(s$,p%-1) + "," + mid$(s$,p%+1,len(s$))
  if instr(s$,",")=0 then s$ = s$ + ",00"
  if instr(s$,",")=len(s$)-1 then s$ = s$ + "0"
  grid_write no_total%,5,6,s$
  s$ = str$(liv_global)
  p% = instr(s$,".")
  if p%>0 then s$ = left$(s$,p%-1) + "," + mid$(s$,p%+1,len(s$))
  if instr(s$,",")=0 then s$ = s$ + ",00"
  if instr(s$,",")=len(s$)-1 then s$ = s$ + "0"
  grid_write no_total%,5,7,s$
  s$ = str$(reel_global)
  p% = instr(s$,".")
  if p%>0 then s$ = left$(s$,p%-1) + "," + mid$(s$,p%+1,len(s$))
  if instr(s$,",")=0 then s$ = s$ + ",00"
  if instr(s$,",")=len(s$)-1 then s$ = s$ + "0"
  grid_write no_total%,5,8,s$
  s$ = str$(ebay_global)
  p% = instr(s$,".")
  if p%>0 then s$ = left$(s$,p%-1) + "," + mid$(s$,p%+1,len(s$))
  if instr(s$,",")=0 then s$ = s$ + ",00"
  if instr(s$,",")=len(s$)-1 then s$ = s$ + "0"
  grid_write no_total%,5,9,s$
  s$ = str$(paypal_global)
  p% = instr(s$,".")
  if p%>0 then s$ = left$(s$,p%-1) + "," + mid$(s$,p%+1,len(s$))
  if instr(s$,",")=0 then s$ = s$ + ",00"
  if instr(s$,",")=len(s$)-1 then s$ = s$ + "0"
  grid_write no_total%,5,10,s$
  s$ = str$(marge_global)
  p% = instr(s$,".")
  if p%>0 then s$ = left$(s$,p%-1) + "," + mid$(s$,p%+1,len(s$))
  if instr(s$,",")=0 then s$ = s$ + ",00"
  if instr(s$,",")=len(s$)-1 then s$ = s$ + "0"
  grid_write no_total%,5,c_table1%,s$
end_sub

sub calculer_marge(ind%)
  s$ = grid_read$(no_table%,ind%,6)
  if s$="" then s$ = "0.00"
  s$ = left$(s$,len(s$)-3) + "." + right$(s$,2)
  marge = val(s$)
  s$ = grid_read$(no_table%,ind%,7)
  if s$="" then s$ = "0.00"
  s$ = left$(s$,len(s$)-3) + "." + right$(s$,2)
  marge = marge + val(s$)
  s$ = grid_read$(no_table%,ind%,8)
  if s$="" then s$ = "0.00"
  s$ = left$(s$,len(s$)-3) + "." + right$(s$,2)
  marge = marge - val(s$)
  s$ = grid_read$(no_table%,ind%,9)
  if s$="" then s$ = "0.00"
  s$ = left$(s$,len(s$)-3) + "." + right$(s$,2)
  marge = marge - val(s$)
  s$ = grid_read$(no_table%,ind%,10)
  if s$="" then s$ = "0.00"
  s$ = left$(s$,len(s$)-3) + "." + right$(s$,2)
  marge = marge - val(s$)
  s$ = str$(marge)
  p% = instr(s$,".")
  if p%>0 then s$ = left$(s$,p%-1) + "," + mid$(s$,p%+1,len(s$))
  if instr(s$,",")=0 then s$ = s$ + ",00"
  if instr(s$,",")=len(s$)-1 then s$ = s$ + "0"
  grid_write no_table%,ind%,c_table1%,s$
end_sub

sub calculer_marge2(ind%)
  s$ = grid_read$(no_table2%,ind%,5)
  if s$="" then s$ = "0.00"
  s$ = left$(s$,len(s$)-3) + "." + right$(s$,2)
  marge2 = val(s$)
  s$ = grid_read$(no_table2%,ind%,6)
  if s$="" then s$ = "0.00"
  s$ = left$(s$,len(s$)-3) + "." + right$(s$,2)
  marge2 = marge2 - val(s$)
  s$ = str$(marge2)
  p% = instr(s$,".")
  if p%>0 then s$ = left$(s$,p%-1) + "," + mid$(s$,p%+1,len(s$))
  if instr(s$,",")=0 then s$ = s$ + ",00"
  if instr(s$,",")=len(s$)-1 then s$ = s$ + "0"
  grid_write no_table2%,ind%,c_table2%,s$
end_sub

sub calculer_marge3(ind%)
  s$ = grid_read$(no_table3%,ind%,6)
  if s$="" then s$ = "0.00"
  s$ = left$(s$,len(s$)-3) + "." + right$(s$,2)
  marge3 = val(s$)
  s$ = grid_read$(no_table3%,ind%,7)
  if s$="" then s$ = "0.00"
  s$ = left$(s$,len(s$)-3) + "." + right$(s$,2)
  marge3 = marge3 - val(s$)
  s$ = str$(marge3)
  p% = instr(s$,".")
  if p%>0 then s$ = left$(s$,p%-1) + "," + mid$(s$,p%+1,len(s$))
  if instr(s$,",")=0 then s$ = s$ + ",00"
  if instr(s$,",")=len(s$)-1 then s$ = s$ + "0"
  grid_write no_table3%,ind%,c_table3%,s$
end_sub

sub get_browser()
  s$ = id_browser$
  GetWindowByTitle(1,s$)
  hnd% = GetWindowByTitle%
  BringWindowToForeground(hnd%)

  s$ = string$(255," ")
  GetActiveWindowTitle()
  s$ = GetActiveWindowTitle$
  s$ = trim$(s$)
end_sub

sub get_page_text()
  s$ = chr$(9)+chr$(9)+chr$(9)+chr$(9)+chr$(9)+chr$(9)+chr$(9)+chr$(9)+chr$(9)
  SendStringAsChars(hnd%,s$)
  s$ = chr$(1)
  SendStringAsText(hnd%,s$)
  pause 300
  s$ = chr$(3)
  SendStringAsText(hnd%,s$)
  CopyToClipboard(hnd%)
end_sub

#INCLUDE "KGF_SUB.bas"
Revenir en haut Aller en bas
Voir le profil de l'utilisateur http://klauspanoramic.comxa.com/index.html
Yannick

avatar

Nombre de messages : 7994
Age : 46
Localisation : Bretagne
Date d'inscription : 15/02/2010

MessageSujet: re   Ven 26 Oct 2012 - 19:53

cheers
Je le garde sous le coude, c'est un très bon exemple !
Revenir en haut Aller en bas
Voir le profil de l'utilisateur
Klaus

avatar

Nombre de messages : 10075
Age : 68
Localisation : Ile de France
Date d'inscription : 29/12/2009

MessageSujet: Re: Gestion des ventes sur eBay   Sam 27 Oct 2012 - 20:38

Nouvelle version, avec les modifications suivantes:
- le programme s'adapte automatiquement aux tailles d'écran inférieurs à 1050x800
- le programme permet de saisir directement des articles et de les "accepter" sans passer par le chargement d'une annonce par page web, simplement en laissant le numéro d'objet vide pour eBay, ou le numéro d'annonce pour VivaStreet. Pour LeBonCoin, c'est possible d'office.
Code:
' ebay_ventes.bas
'
' Ce programme est un gestionnaire de ventes sur le site eBay et
' autres sites de vente. A ce jour, les sites suivants sont gérés:
'    eBay
'    LeBonCoin
'    VivaStreet
'
' La description qui suit est ciblée sur eBay, de loin le site le plus
' complexe. Pour les autres sites, le principe est le même, mais il y a
' moins d'informations pour chaque produit. On choisit un site par le
' combo en haut à droite de la page. La page du site en cours disparaît
' et la page du site choisi apparaît. La fermeture d'une page d'un site
' autre que eBay ferme cette page et revient sur la page eBay. La
' fermeture de la page eBay sauvegarde les données de TOUS les sites,
' puis termne l'application..Les totaux de tous les sites sont repris sur
' la page eBay pour une synthèse et des totaux globaux.
'
' Il est conçu pour mémoriser les ventes réalisées par enchères,
' petites annonces et achat immmédiat. Il mémorise l'essentiel des
' informations: date, heure; numéro d'objet, libellé; prix de vente,
' frais de livraison. Il permet de saisir les frais eBay et les
' frais PayPal. Il calcule le bénéfice net pour chaque vente, et donne
' le total des objets vendus, ainsi que le total des valeurs par catégorie
' y compris le bénéfice net total. Tout est mémorisé dans un fichier
' texte nommé "ebay_ventes.txt". Ce fichier est créé vide au premier
' lancement, et chargé autimatiquement à chaque lancement suivant. Le
' tableau est sauvegardé automatiquement dans ce fichier à la sortie
' du programme.
'
' Ce programme fonctionne à partir de pages eBay mise en mémoire par
' ctrl/A ctrl/C (toute la page). Cette combinaison de touches met dans
' le presse-papier la partie purement "texte" de la page eBay. On utilise
' alors cette chaîne de caractères pour charger un memo caché afin de
' trouver les informations relevantes. Chaque information est recherchée
' selon des critères précis: La variable mode% donne le type de vante:
'  mode% = 0 ==> type indéterminé
'  mode% = 1 ==> vente sur enchères
'  mode% = 2 ==> vente immédiate
'  mode% = 3 ==> petite annonce
'
' Le bouton "Charger" cherche une page eBay dans Firefox (adaptations
' simples à faire pour d'autres explorateurs). Cette page sera entièrement
' copiée dans le presse-papier, puis dans un mémo cachée, afin d'être
' expoitée ligne par ligne. Seule la partie "texte" sera présente, sans
' les images et graphismes.
'
' Les informations relevantes sont affichées dans des champs en haut de
' la page. On peut alors les modifier. Ma fourche "Accepter" crée une
' nouvelle ligne dans le tableau, en calculant la marge nette et les
' totaux globaux. La marge nette est calculée comme suit:
'  marge nette = prix vente + frais livraison - frais réels - frais eBay - frais PayPal
'
' Un clic dans une ligne sélectionnne celle-ci. Les boutons "Mod."
' permettent de modifier les frais réels de livraison, les frais eBay
' et les fraus PaiPal. Le bouton "Supprimer" supprime la ligne de la
' luste. Le bouton "Afficher" recharge la page Web du produit (si elle
' existe encore).
'
' Le programme s'adapte automatiquement aux dimensions de l'écran si
' celles-ci sont inférieures à 1050x800 pixels.
'

' *** programme initial ***************************************************
labels()
constantes()
variables()
form0()
GUI()
initialisations()

end






' *** routines d'évènements ***********************************************
charger1:
  get_browser()
  if instr(s$, "sur eBay.fr" )=0
    if left$(s$,6)<>"eBay |"
      BringWindowToForeground(handle(0))
      message "Ce n'est pas une page eBay: "+s$
      return
    end_if
  end_if
  get_page_text()
  BringWindowToForeground(handle(0))

  clear no_ebay%
  s_org$ = clipboard_string_paste$
  item_add no_ebay%,s_org$
  text no_num%,""
  text no_lib%,""
  text no_prix%,""
  text no_liv%,""
  text no_lib%,""
  text no_date%,""
  text no_time%,""
  text no_frais_ebay%,""
  text no_frais_paypal%,""
  display

  s$ = item_read$(no_ebay%,1)
  if len(s$)>0
    message "Il faut mémoriser une page produit eBay! ["+s$+"]"
    return
  end_if
  s$ = item_read$(no_ebay%,2)
  if s$<>"Accéder au contenu principal"
    message "Il faut mémoriser une page produit eBay! ["+s$+"]"
    return
  end_if
  s$ = item_read$(no_ebay%,3)
  if left$(s$,5)<>"eBay"+chr$(9)
    message "Il faut mémoriser une page produit eBay! ["+s$+"]"
    return
  end_if
  lib% = 0
  prix% = 0
 
  mode% = 0
  if instr(s_org$,"Les enchères sur cet objet sont terminées.")>0 then mode% = 1
  if instr(s_org$,"Cette vente avec l'option Achat immédiat est terminée.")>0 then mode% = 2
  if instr(s_org$,"Petites Annonces :")>0 then mode% = 3
  if mode%=0
    message "Je n'ai pas pu déterminer le type de vente."
    return
  end_if

for i%=4 to count(no_ebay%)
  s$ = item_read$(no_ebay%,i%)
 
  ' === identifier les frais de livraison
  if mode%<3
    p% = instr(s$,"Livraison :")
    if p%>0
      s$ = mid$(s$,p%+12,len(s$))
      p% = instr(s$," EUR")
      if p%>0
        s$ = left$(s$,p%-1)
        text no_liv%,s$
      end_if
      if instr(s$,"GRATUIT")>0 then text no_liv%,"0,00"
    end_if
  end_if
  if mode%=3 then text no_liv%,"0,00"
 
  ' === identifier le prix de vente
  if mode%<3
    p% = instr(s$," EUR"+chr$(9))
    if p%>0
      s$ = left$(s$,p%+3)
      p% = instr(s$," :")
      if p%>0 then s$ = mid$(s$,p%+2,len(s$))
      if left$(s$,1)=chr$(9) then s$ = mid$(s$,2,len(s$))
      text no_prix%,left$(s$,len(s$)-4)
    end_if
  end_if
  if mode%=3
    if left$(s$,18)="Petites Annonces :"
      prix% = i% + 2
    end_if
    if i%=prix%
      text no_prix%,left$(s$,len(s$)-2)
      prix% = 0
    end_if
  end_if
 
  ' === identifier le libellé de l'objet
  if mode%=1
    if s$="Les enchères sur cet objet sont terminées." then lib% = 1
    if (lib%=1) and (s$=chr$(9)) then lib% = i% + 1
  end_if
  if mode%=2
    if instr(s$,"Ajouté(s) à votre liste d'Affaires à suivre")>0 then lib% = 1
    if (lib%=1) and (s$=chr$(9)) then lib% = i% + 1
  end_if
  if mode%=3
    if instr(s$,"Ajouter à vos Affaires à suivre")>0 then lib% = i% + 1
  end_if
  if i%=lib%
    text no_lib%,s$
    lib% = 0
  end_if

  ' === identifier le numéro d'objet
  p% = instr(s$,"Numéro de l'objet :")
  if p%>0
    s$ = mid$(s$,p%,len(s$))
    p% = instr(s$,":")
    text no_num%,mid$(s$,p%+2,len(s$))
  end_if
 
  ' === identifier date et heure de la fin des enchères
  p% = instr(s$,"Fin :"+chr$(9))
  if p%>0
    text no_date%,mid$(s$,p%+6,12)
    text no_time%,mid$(s$,p%+18,8)
  end_if
 
  ' === frais réels de livraison, frais eBay et frais PayPal
  text no_frais_reel%,"0,00"
  text no_frais_ebay%,"0,00"
  text no_frais_paypal%,"0,00"

next i%
return

accepter1:
  if text$(no_num%)<>""
    if n_table%>0
      for i%=1 to n_table%
        s$ = grid_read$(no_table%,i%+1,4)
        if s$=text$(no_num%)
          message "Cet objet est déjà dans la liste !"
          return
        end_if
      next i%
    end_if
  end_if
  n_table% = n_table% + 1
  grid_row no_table%,n_table% + 1
  grid_write no_table%,n_table%+1,1,str$(n_table%)
  grid_write no_table%,n_table%+1,2,text$(no_date%)
  grid_write no_table%,n_table%+1,3,text$(no_time%)
  grid_write no_table%,n_table%+1,4,text$(no_num%)
  grid_write no_table%,n_table%+1,5,text$(no_lib%)
  grid_write no_table%,n_table%+1,6,text$(no_prix%)
  grid_write no_table%,n_table%+1,7,text$(no_liv%)
  grid_write no_table%,n_table%+1,8,text$(no_frais_ebay%)
  grid_write no_table%,n_table%+1,9,text$(no_frais_paypal%)
  calculer_marge(n_table%+1)
  totaux_plus(n_table%+1)
  if n_table%=1 then grid_row_fixed no_table%,1
  return
 
charger2:
  get_browser()
  if instr(s$, "- leboncoin.fr" )=0
    BringWindowToForeground(handle(no_LeBonCoin%))
    message "Ce n'est pas une page LeBonCoin: "+s$
    return
  end_if
  get_page_text()
  BringWindowToForeground(handle(no_LeBonCoin%))
  clear no_ebay%
  s_org$ = clipboard_string_paste$
  item_add no_ebay%,s_org$
  if instr(s_org$,"Mise en ligne par")=0
    message "Ce n'est pas une page produit."
    return
  end_if
  lib% = 0
 
  for i%=4 to count(no_ebay%)
    s$ = item_read$(no_ebay%,i%)

  ' === identifier le prix de vente
  p% = instr(s$,"Prix : "+chr$(9))
  if p%>0
    s$ = mid$(s$,p%+8,len(s$))
    s$ = left$(s$,len(s$)-2)
    p% = instr(s$," ")
    while p%>0
      s$ = left$(s$,p%-1)+mid$(s$,p%+1,len(s$))
      p% = instr(s$," ")
    end_while
    if right$(s$,3)<>",00) then s$ = s$ + ",00"
    text no_prix2%,s$
  end_if

  ' === identifier le libellé de l'objet
  if instr(s$,"Accueil > ")=1 then lib% = i% + 1
  if i%=lib%
    text no_lib2%,s$
    lib% = 0
  end_if

  ' === identifier date et heure de la mise en vente
  ' Mise en ligne par Eric le 25 octobre à 23:49.
  p% = instr(s$,"Mise en ligne par ")
  if p%>0
    p% = instr(s$," le ")
    p1% = instr(s$," à ")
    text no_date2%,mid$(s$,p%+4,p1%-p%-4)
    text no_time2%,mid$(s$,p1%+3,5)
  end_if
next i%
  return
 
accepter2:
  if n_table2%>0
    for i%=1 to n_table2%
      s$ = grid_read$(no_table2%,i%+1,4)
      if s$=text$(no_lib2%)
        s$ = grid_read$(no_table2%,i%+1,5)
          if s$=text$(no_prix2%)
            message "Cet objet est déjà dans la liste !"
            return
          end_if
      end_if
    next i%
  end_if
  n_table2% = n_table2% + 1
  grid_row no_table2%,n_table2% + 1
  grid_write no_table2%,n_table2%+1,1,str$(n_table2%)
  grid_write no_table2%,n_table2%+1,2,text$(no_date2%)
  grid_write no_table2%,n_table2%+1,3,text$(no_time2%)
  grid_write no_table2%,n_table2%+1,4,text$(no_lib2%)
  grid_write no_table2%,n_table2%+1,5,text$(no_prix2%)
  calculer_marge2(n_table2%+1)
  totaux_plus2(n_table2%+1)
  if n_table2%=1 then grid_row_fixed no_table2%,1
  return
 
charger3:
  get_browser()
  if instr(s$, "Vivastreet" )=0
    BringWindowToForeground(handle(no_vivastreet%))
    message "Ce n'est pas une page VivaStreet: "+s$
    return
  end_if
  get_page_text()
  BringWindowToForeground(handle(no_vivastreet%))
  clear no_ebay%
  s_org$ = clipboard_string_paste$
  item_add no_ebay%,s_org$
  if instr(s_org$,"Publiée le ")=0
    message "Ce n'est pas une page produit."
    return
  end_if
  lib% = 0
  prix% = 0
  maj% = 0
 
  for i%=4 to count(no_ebay%)
    s$ = item_read$(no_ebay%,i%)

  ' === identifier le prix de vente
  if s$="Prix" then prix% = i% + 1
  if i%=prix%
    s$ = left$(s$,len(s$)-1)
    p% = instr(s$," ")
    while p%>0
      s$ = left$(s$,p%-1)+mid$(s$,p%+1,len(s$))
      p% = instr(s$," ")
    end_while
    s$ = s$ + ",00"
    prix% = 0
    text no_prix3%,s$
  end_if

  ' === identifier le libellé de l'objet
  if instr(s$,"    Sauvegarder")=1 then lib% = i% + 2
  if i%=lib%
    if left$(s$,18)="Photos Vivastreet " then s$ = mid$(s$,18,len(s$))
    text no_lib3%,s$
    lib% = 0
  end_if
 
  ' === identifier le numéro d'annonce
  if instr(s$,"    Annonce N°")=1
    text no_num3%,mid$(s$,16,len(s$))
  end_if

  ' === identifier date de création et de mise à jour de l'annonce
  ' Mise en ligne par Eric le 25 octobre à 23:49.
  if instr(s$,"Publiée le ")=1 then text no_date3%,mid$(s$,11,10)
  if s$="Mise à jour le" then maj% = i% + 1
  if i%=maj%
    text no_time3%,s$
    maj% = 0
  end_if
next i%
  return

accepter3:
  if text$(no_num3%)<>""
    if n_table3%>0
      for i%=1 to n_table3%
        s$ = grid_read$(no_table3%,i%+1,4)
        if s$=text$(no_num3%)
          message "Cet objet est déjà dans la liste !"
          return
        end_if
      next i%
    end_if
  end_if
  n_table3% = n_table3% + 1
  grid_row no_table3%,n_table3% + 1
  grid_write no_table3%,n_table3%+1,1,str$(n_table3%)
  grid_write no_table3%,n_table3%+1,2,text$(no_date3%)
  grid_write no_table3%,n_table3%+1,3,text$(no_time3%)
  grid_write no_table3%,n_table3%+1,4,text$(no_num3%)
  grid_write no_table3%,n_table3%+1,5,text$(no_lib3%)
  grid_write no_table3%,n_table3%+1,6,text$(no_prix3%)
  calculer_marge3(n_table3%+1)
  totaux_plus3(n_table3%+1)
  if n_table3%=1 then grid_row_fixed no_table3%,1
  return
 
afficher:
  i% = mouse_y_left_down(no_table%)
  i% = grid_y_to_row(no_table%,i%)
  if i%=1 then return
  s$ = id_browser$
  GetWindowByTitle(1,s$)
  hnd% = GetWindowByTitle%
  BringWindowToForeground(hnd%)
  s$ = chr$(20)+ebay_search$+grid_read$(no_table%,i%,4)+chr$(13)
  SendStringAsText(hnd%,s$)
  return
 
supprimer:
  i% = mouse_y_left_down(no_table%)
  i% = grid_y_to_row(no_table%,i%)
  if i%=1 then return
  s$ = grid_read$(no_table%,i%,4) +": "+ grid_read$(no_table%,i%,5)
  if message_confirmation_yes_no("Vraiment supprimer: "+s$)=1
    totaux_moins(i%)
    grid_row_delete no_table%,i%
    n_table% = n_table% - 1
  end_if
  return
 
supprimer2:
  i% = mouse_y_left_down(no_table2%)
  i% = grid_y_to_row(no_table2%,i%)
  if i%=1 then return
  s$ = grid_read$(no_table2%,i%,4)
  if message_confirmation_yes_no("Vraiment supprimer: "+s$)=1
    totaux_moins2(i%)
    grid_row_delete no_table2%,i%
    n_table2% = n_table2% - 1
  end_if
  return

supprimer3:
  i% = mouse_y_left_down(no_table3%)
  i% = grid_y_to_row(no_table3%,i%)
  if i%=1 then return
  s$ = grid_read$(no_table3%,i%,4)+" "+grid_read$(no_table3%,i%,5)
  if message_confirmation_yes_no("Vraiment supprimer: "+s$)=1
    totaux_moins3(i%)
    grid_row_delete no_table3%,i%
    n_table3% = n_table3% - 1
  end_if
  return

close0:
  grid_save no_table%,n_table%+1,c_table1%,f_base1$
  grid_save no_table2%,n_table2%+1,c_table2%,f_base2$
  grid_save no_table3%,n_table3%+1,c_table3%,f_base3$
  return

click_table:
  col% = mouse_x_left_down(no_table%)
  col% = grid_x_to_column(no_table%,col%)
  if col%=4 then set_focus no_afficher%
  if col%=8 then set_focus no_mod_frais_reel%
  if col%=9 then set_focus no_mod_frais_ebay%
  if col%=10 then set_focus no_mod_frais_paypal%
  return
 
click_table2:
  col% = mouse_x_left_down(no_table2%)
  col% = grid_x_to_column(no_table2%,col%)
  if col%=6 then set_focus no_mod_frais_reel2%
  return

click_table3:
  col% = mouse_x_left_down(no_table3%)
  col% = grid_x_to_column(no_table3%,col%)
  if col%=7 then set_focus no_mod_frais_reel3%
  return

mod_reel:
  i% = mouse_y_left_down(no_table%)
  i% = grid_y_to_row(no_table%,i%)
  if i%=1 then return
  s$ = grid_read$(no_table%,i%,8)
  s1$ = grid_read$(no_table%,i%,5)
  s2$ = grid_read$(no_table%,i%,4)
  if message_input("Frais livraison réels "+s2$,s1$+": "+s$,s$)=1
    s2$ = message_text$
    p% = instr(s2$,",")
    if p%>0 then s2$ = left$(s2$,p%-1) + "." + mid$(s2$,p%+1,len(s2$))
    if s2$="" then s2$ = "0.00"
    if instr(s2$,".")=0 then s2$ = s2$ + ".00"
    if instr(s2$,".")=len(s2$)-1 then s2$ = s2$ + "0"
    if numeric(s2$)=0 then return"
    if s$="" then s$ = "0.00"
    s$ = left$(s$,len(s$)-3) + "." + right$(s$,2)
    reel_total = reel_total - val(s$) + val(s2$)
    marge_total = marge_total + val(s$) - val(s2$)
    grid_write no_table%,i%,8,s2$
    calculer_marge(i%)
    totaux_afficher()
  end_if
  return
 
mod_reel2:
  i% = mouse_y_left_down(no_table2%)
  i% = grid_y_to_row(no_table2%,i%)
  if i%=1 then return
  s$ = grid_read$(no_table2%,i%,6)
  s1$ = grid_read$(no_table2%,i%,4)
  if message_input("Frais livraison réels",s1$+": "+s$,s$)=1
    s2$ = message_text$
    p% = instr(s2$,",")
    if p%>0 then s2$ = left$(s2$,p%-1) + "." + mid$(s2$,p%+1,len(s2$))
    if s2$="" then s2$ = "0.00"
    if instr(s2$,".")=0 then s2$ = s2$ + ".00"
    if instr(s2$,".")=len(s2$)-1 then s2$ = s2$ + "0"
    if numeric(s2$)=0 then return
    if s$="" then s$ = "0.00"
    s$ = left$(s$,len(s$)-3) + "." + right$(s$,2)
    reel_total2 = reel_total2 - val(s$) + val(s2$)
    marge_total2 = marge_total2 + val(s$) - val(s2$)
    grid_write no_table2%,i%,6,s2$
    calculer_marge2(i%)
    totaux_afficher2()
  end_if
  return

mod_reel3:
  i% = mouse_y_left_down(no_table3%)
  i% = grid_y_to_row(no_table3%,i%)
  if i%=1 then return
  s$ = grid_read$(no_table3%,i%,7)
  s1$ = grid_read$(no_table3%,i%,5)
  if message_input("Frais livraison réels",s1$+": "+s$,s$)=1
    s2$ = message_text$
    p% = instr(s2$,",")
    if p%>0 then s2$ = left$(s2$,p%-1) + "." + mid$(s2$,p%+1,len(s2$))
    if s2$="" then s2$ = "0.00"
    if instr(s2$,".")=0 then s2$ = s2$ + ".00"
    if instr(s2$,".")=len(s2$)-1 then s2$ = s2$ + "0"
    if numeric(s2$)=0 then return
    if s$="" then s$ = "0.00"
    s$ = left$(s$,len(s$)-3) + "." + right$(s$,2)
    reel_total3 = reel_total3 - val(s$) + val(s2$)
    marge_total3 = marge_total3 + val(s$) - val(s2$)
    grid_write no_table3%,i%,7,s2$
    calculer_marge3(i%)
    totaux_afficher3()
  end_if
  return

mod_ebay:
  i% = mouse_y_left_down(no_table%)
  i% = grid_y_to_row(no_table%,i%)
  if i%=1 then return
  s$ = grid_read$(no_table%,i%,9)
  s1$ = grid_read$(no_table%,i%,5)
  s2$ = grid_read$(no_table%,i%,4)
  if message_input("Frais eBay objet "+s2$,s1$+": "+s$,s$)=1
    s2$ = message_text$
    p% = instr(s2$,",")
    if p%>0 then s2$ = left$(s2$,p%-1) + "." + mid$(s2$,p%+1,len(s2$))
    if s2$="" then s2$ = "0.00"
    if instr(s2$,".")=0 then s2$ = s2$ + ".00"
    if instr(s2$,".")=len(s2$)-1 then s2$ = s2$ + "0"
    if numeric(s2$)=0 then message "x"
    if s$="" then s$ = "0.00"
    s$ = left$(s$,len(s$)-3) + "." + right$(s$,2)
    ebay_total = ebay_total - val(s$) + val(s2$)
    marge_total = marge_total + val(s$) - val(s2$)
    grid_write no_table%,i%,9,s2$
    calculer_marge(i%)
    totaux_afficher()
  end_if
  return

mod_paypal:
  i% = mouse_y_left_down(no_table%)
  i% = grid_y_to_row(no_table%,i%)
  if i%=1 then return
  s$ = grid_read$(no_table%,i%,19)
  s1$ = grid_read$(no_table%,i%,5)
  s2$ = grid_read$(no_table%,i%,4)
  if message_input("Frais PayPal objet "+s2$,s1$+": "+s$,s$)=1
    s2$ = message_text$
    p% = instr(s2$,",")
    if p%>0 then s2$ = left$(s2$,p%-1) + "." + mid$(s2$,p%+1,len(s2$))
    if s2$="" then s2$ = "0.00"
    if instr(s2$,".")=0 then s2$ = s2$ + ".00"
    if instr(s2$,".")=len(s2$)-1 then s2$ = s2$ + "0"
    if numeric(s2$)=0 then message "x"
    if s$="" then s$ = "0.00"
    s$ = left$(s$,len(s$)-3) + "." + right$(s$,2)
    paypal_total = paypal_total - val(s$) + val(s2$)
    marge_total = marge_total + val(s$) - val(s2$)
    grid_write no_table%,i%,10,s2$
    calculer_marge(i%)
    totaux_afficher()
  end_if
  return

change_site1:
  select item_index(no_site1%)
    case 1: ' eBay - on y est
    case 2: ' LeBonCoin
      hide 0
      show no_LeBonCoin%
      text no_site2%,item_read$(no_site2%,2)
    case 3: ' VivaStreet
      hide 0
      show no_VivaStreet%
      text no_site3%,item_read$(no_site2%,3)
  end_select
  return
 
change_site2:
  select item_index(no_site2%)
    case 1: ' eBay
      hide no_LeBonCoin%
      show 0
      text no_site1%,item_read$(no_site1%,1)
    case 2: ' LeBonCoin - on y est
    case 3: ' VivaStreet
      hide no_LeBonCoin%
      show no_VivaStreet%
      text no_site3%,item_read$(no_site3%,3)
  end_select
  return

change_site3:
  select item_index(no_site3%)
    case 1: ' eBay
      hide no_VivaStreet%
      show 0
      text no_site1%,item_read$(no_site1%,1)
    case 2: ' LeBonCoin
      hide no_VivaStreet%
      show no_LeBonCoin%
      text no_site2%,item_read$(no_site2%,2)
    case 3: ' VivaStreet - on y est
  end_select
  return

close_leboncoin:
  hide no_LeBonCoin%
  show 0
  text no_site1%,item_read$(no_site1%,1)
  to_foreground 0
  return

close_vivastreet:
  hide no_vivastreet%
  show 0
  text no_site1%,item_read$(no_site1%,1)
  to_foreground 0
  return


' *** procédures du programme initial *************************************
sub labels()
  label close0, charger1, accepter1, afficher, supprimer, click_table
  label mod_ebay, mod_paypal, mod_reel, change_site1, close_leboncoin
  label change_site2, charger2, accepter2, mod_reel2, supprimer2
  label click_table2
  label change_site3, charger3, accepter3, mod_reel3, supprimer3
  label click_table3, close_vivastreet
end_sub

sub constantes()
  dim c_table1% : c_table1% = 11  : ' eBay
  dim c_table2% : c_table2% = 7  : ' LeBonCoin
  dim c_table3% : c_table3% = 8  : ' VivaStreet
  dim f_base1$ : f_base1$ = "ebay_ventes.txt"
  dim f_base2$ : f_base2$ = "leboncoin_ventes.txt"
  dim f_base3$ : f_base3$ = "vivastreet_ventes.txt"
  dim id_browser$ : id_browser$ = " - Mozilla Firefox"
  dim ebay_search$ : ebay_search$ = "http://cgi.ebay.fr/ws/eBayISAPI.dll?ViewItem&item="
  dim delta_w% : delta_w% = 0
  dim delta_h% : delta_h% = 0
  dim delta_w2% : delta_w2% = 0
  dim delta_w3% : delta_w3% = 0
end_sub

sub variables()
  dim no%, s$, s1$, s2$, s_org$, i%, p%, p1%, site%, maj%
  dim lib%, prix%, i1%, n%, mode%, col%, nom$, hnd%
  dim no_ebay%, no_num%, no_lib%, no_prix%, no_liv%
  dim no_date%, no_time%, no_table%, no_total%, no_frais_reel%
  dim no_mod_frais_ebay%, no_mod_frais_paypal%,  no_mod_frais_reel%
  dim no_frais_ebay%, no_frais_paypal%, no_afficher%, no_site1%, no_site2%
  dim n_table%, marge, no_site3%
  dim prix_total, liv_total, reel_total, ebay_total, paypal_total, marge_total
  dim prix_global, liv_global, reel_global, ebay_global, paypal_global, marge_global
  dim no_LeBonCoin%, no_prix2%, no_lib2%, no_date2%, no_time2%, no_table2%
  dim no_total2%, marge2, n_table2%, prix_total2, reel_total2, marge_total2
  dim no_mod_frais_reel2%
  dim no_VivaStreet%, no_prix3%, no_lib3%, no_date3%, no_time3%, no_table3%
  dim no_total3%, marge3, n_table3%, prix_total3, reel_total3, marge_total3
  dim no_mod_frais_reel3%, no_num3%
end_sub

sub form0()
  if screen_x<1050 then delta_w% = 1050 - screen_y
  if screen_y<800 then delta_w% = 800 - screen_y
  if screen_x<830 then delta_w2% = 830-screen_x
  if screen_x<1030 then delta_w3% = 1030-screen_x
' simuler écran 800x600
'  delta_w% = 1050-800
'  delta_h% = 800-600
'  delta_w2% = 830-800
'  delta_w3% = 1030-900
' fin simulation de 800x600

  caption 0,"Gestion des ventes eBay"
  width 0,1050 - delta_w% : height 0,800 - delta_h%
  on_close 0,close0
end_sub

sub GUI()
  no% = no% + 1 : memo no% : no_ebay% = no% : width no%,900
    hide no%
  ' ****** GUI pour site eBay
  no% = no% + 1 : combo no% : top no%,10 : left no%,10 : width no%,80
    no_site1% = no% : on_click no%,change_site1
    item_add no%,"eBay"
    item_add no%,"LeBonCoin"
    item_add no%,"VivaStreet"
    text no%,item_read$(no%,1)
  no% = no% + 1 : button no% : top no%,40 : left no%,10
    caption no%,"Charger" : on_click no%,charger1
  no% = no% + 1 : button no% : top no%,70 : left no%,10
    caption no%,"Accepter" : on_click no%,accepter1

  no% = no% + 1 : alpha no%
    top no%,10 : left no%,120 : caption no%,"Objet:"
  no% = no% + 1 : edit no% : no_num% = no%
    top no%,10 : left no%,160
  no% = no% + 1 : alpha no%
    top no%,10 : left no%,300 : caption no%,"Titre:"
  no% = no% + 1 : edit no% : no_lib% = no% : width no%,400
    top no%,10 : left no%,360
  no% = no% + 1 : alpha no%
    top no%,40 : left no%,120 : caption no%,"Prix:"
  no% = no% + 1 : edit no% : no_prix% = no%
    top no%,40 : left no%,160 : width no%,80
  no% = no% + 1 : alpha no%
    top no%,40 : left no%,300 : caption no%,"Livraison:"
  no% = no% + 1 : edit no% : no_liv% = no%
    top no%,40 : left no%,360 : width no%,50
  no% = no% + 1 : alpha no%
    top no%,40 : left no%,430 : caption no%,"Frais réels:"
  no% = no% + 1 : edit no% : no_frais_reel% = no%
    top no%,40 : left no%,510 : width no%,50
  no% = no% + 1 : alpha no%
    top no%,40 : left no%,580 : caption no%,"Date:"
  no% = no% + 1 : edit no% : no_date% = no%
    top no%,40 : left no%,620 : width no%,80
  no% = no% + 1 : alpha no%
    top no%,70 : left no%,580 : caption no%,"Heure:"
  no% = no% + 1 : edit no% : no_time% = no%
    top no%,70 : left no%,620 : width no%,60
  no% = no% + 1 : alpha no%
    top no%,70 : left no%,300 : caption no%,"Frais eBay:"
  no% = no% + 1 : edit no% : no_frais_ebay% = no%
    top no%,70 : left no%,360 : width no%,50
  no% = no% + 1 : alpha no%
    top no%,70 : left no%,430 : caption no%,"Frais PayPal:"
  no% = no% + 1 : edit no% : no_frais_paypal% = no%
    top no%,70 : left no%,510 : width no%,50

   
  no% = no% + 1 : grid no% : no_table% = no%
    top no%,130 : left no%,c_table1%
    width no%,1027-delta_w% : height no%,453-delta_h%
    on_click no%,click_table
    grid_row no%,1 : grid_column no%,c_table1%
    grid_one_column_width no%,1,50
    grid_write no%,1,1,"No."
    grid_one_column_width no%,2,80
    grid_write no%,1,2,"Date"
    grid_one_column_width no%,3,60
    grid_write no%,1,3,"Heure"
    grid_one_column_width no%,4,80
    grid_write no%,1,4,"Objet"
    grid_one_column_width no%,5,400-delta_w%
    grid_write no%,1,5,"Titre"
    grid_one_column_width no%,6,80
    grid_write no%,1,6,"Prix"
    grid_one_column_width no%,7,50
    grid_write no%,1,7,"Livraison"
    grid_one_column_width no%,8,50
    grid_write no%,1,8,"Frais réels"
    grid_one_column_width no%,9,50
    grid_write no%,1,9,"eBay"
    grid_one_column_width no%,10,50
    grid_write no%,1,10,"PayPal"
    grid_one_column_width no%,11,50
    grid_write no%,1,11,"Marge"

  no% = no% + 1 : grid no% : no_total% = no%
    top no%,590-delta_h% : left no%,10
    width no%,1027 - delta_w%
    height no%,155
    grid_row no%,5 : grid_column no%,c_table1%
    grid_one_column_width no%,1,50
    grid_write no%,1,1,"Total"
    grid_write no%,2,1,"eBay"
    grid_write no%,3,1,"LeBonC..."
    Grid_Write no%,4,1,"VivaStr..."
    Grid_Write no%,5,1,"Total"
    grid_one_column_width no%,2,80
    grid_one_column_width no%,3,60
    grid_one_column_width no%,4,80
    grid_one_column_width no%,5,400-delta_w%
    grid_one_column_width no%,6,80
    grid_write no%,1,6,"Prix"
    grid_one_column_width no%,7,50
    grid_write no%,1,7,"Livraison"
    grid_one_column_width no%,8,50
    grid_write no%,1,8,"Frais réels"
    grid_one_column_width no%,9,50
    grid_write no%,1,9,"eBay"
    grid_one_column_width no%,10,50
    grid_write no%,1,10,"PayPal"
    grid_one_column_width no%,11,50
    grid_write no%,1,11,"Marge"

  no% = no% + 1 : button no% : top no%,100 : left no%,205
    caption no%,"Afficher" : on_click no%,afficher : no_afficher% = no%
  no% = no% + 1 : button no% : top no%,100 : left no%,400
    caption no%,"Supprimer" : on_click no%,supprimer
  no% = no% + 1 : button no% : top no%,100
    left no%,820-delta_w% : width no%,50
    caption no%,"Mod." : on_click no%,mod_reel : no_mod_frais_reel% = no%
  no% = no% + 1 : button no% : top no%,100
    left no%,870-delta_w% : width no%,50
    caption no%,"Mod." : on_click no%,mod_ebay : no_mod_frais_ebay% = no%
  no% = no% + 1 : button no% : top no%,100
    left no%,920-delta_w% : width no%,50
    caption no%,"Mod." : on_click no%,mod_paypal : no_mod_frais_paypal% = no%

  ' ****** GUI pour site LeBonCoin
  no% = no% + 1 : form no% : hide no% : no_LeBonCoin% = no%
    width no%,1050-delta_w% : height no%,800-delta_h%
    caption no%,"Gestion des ventes LeBonCoin"
    on_close no%,close_leboncoin
    command_target_is no%
  no% = no% + 1 : combo no% : top no%,10 : left no%,10 : width no%,80
    no_site2% = no% : on_click no%,change_site2
    item_add no%,"eBay"
    item_add no%,"LeBonCoin"
    item_add no%,"VivaStreet"
    text no%,item_read$(no%,2)

  no% = no% + 1 : button no% : top no%,40 : left no%,10
    caption no%,"Charger" : on_click no%,charger2
  no% = no% + 1 : button no% : top no%,70 : left no%,10
    caption no%,"Accepter" : on_click no%,accepter2
  no% = no% + 1 : alpha no%
    top no%,40 : left no%,120 : caption no%,"Prix:"
  no% = no% + 1 : edit no% : no_prix2% = no%
    top no%,40 : left no%,160 : width no%,80
  no% = no% + 1 : alpha no%
    top no%,10 : left no%,300 : caption no%,"Titre:"
  no% = no% + 1 : edit no% : no_lib2% = no% : width no%,400
    top no%,10 : left no%,360
  no% = no% + 1 : alpha no%
    top no%,40 : left no%,580 : caption no%,"Date:"
  no% = no% + 1 : edit no% : no_date2% = no%
    top no%,40 : left no%,620 : width no%,80
  no% = no% + 1 : alpha no%
    top no%,70 : left no%,580 : caption no%,"Heure:"
  no% = no% + 1 : edit no% : no_time2% = no%
    top no%,70 : left no%,620 : width no%,60

  no% = no% + 1 : grid no% : no_table2% = no%
    top no%,130 : left no%,c_table2% : width no%,798-delta_w2%
    height no%,503 - delta_h%
    on_click no%,click_table2
    grid_row no%,1 : grid_column no%,c_table2%
    grid_one_column_width no%,1,50
    grid_write no%,1,1,"No."
    grid_one_column_width no%,2,80
    grid_write no%,1,2,"Date"
    grid_one_column_width no%,3,60
    grid_write no%,1,3,"Heure"
    grid_one_column_width no%,4,400-delta_w2%
    grid_write no%,1,4,"Titre"
    grid_one_column_width no%,5,80
    grid_write no%,1,5,"Prix"
    grid_one_column_width no%,6,50
    grid_write no%,1,6,"Frais réels"
    grid_one_column_width no%,7,50
    grid_write no%,1,7,"Marge"

  no% = no% + 1 : grid no% : no_total2% = no%
    top no%,640-delta_h% : left no%,10
    width no%,798-delta_w2% : height no%,56
    grid_row no%,2 : grid_column no%,c_table2%
    grid_one_column_width no%,1,50
    grid_write no%,1,1,"Total"
    grid_one_column_width no%,2,80
    grid_one_column_width no%,3,60
    grid_one_column_width no%,4,400-delta_w2%
    grid_one_column_width no%,5,80
    grid_write no%,1,5,"Prix"
    grid_one_column_width no%,6,50
    grid_write no%,1,6,"Frais réels"
    grid_one_column_width no%,7,50
    grid_write no%,1,7,"Marge"

  no% = no% + 1 : button no% : top no%,100 : left no%,400-delta_w2%
    caption no%,"Supprimer" : on_click no%,supprimer2
  no% = no% + 1 : button no% : top no%,100
    left no%,685-delta_w2% : width no%,50
    caption no%,"Mod." : on_click no%,mod_reel2 : no_mod_frais_reel2% = no%

  ' ****** GUI pour site VivaStreet
  no% = no% + 1 : form no% : hide no% : no_VivaStreet% = no%
    width no%,1050-delta_w% : height no%,800-delta_h%
    caption no%,"Gestion des ventes VivaStreet"
    on_close no%,close_vivastreet
    command_target_is no%
  no% = no% + 1 : combo no% : top no%,10 : left no%,10 : width no%,80
    no_site3% = no% : on_click no%,change_site3
    item_add no%,"eBay"
    item_add no%,"LeBonCoin"
    item_add no%,"VivaStreet"
    text no%,item_read$(no%,3)

  no% = no% + 1 : alpha no%
    top no%,10 : left no%,110 : caption no%,"Annonce:"
  no% = no% + 1 : edit no% : no_num3% = no%
    top no%,10 : left no%,160
  no% = no% + 1 : button no% : top no%,40 : left no%,10
    caption no%,"Charger" : on_click no%,charger3
  no% = no% + 1 : button no% : top no%,70 : left no%,10
    caption no%,"Accepter" : on_click no%,accepter3
  no% = no% + 1 : alpha no%
    top no%,40 : left no%,110 : caption no%,"Prix:"
  no% = no% + 1 : edit no% : no_prix3% = no%
    top no%,40 : left no%,160 : width no%,80
  no% = no% + 1 : alpha no%
    top no%,10 : left no%,300 : caption no%,"Titre:"
  no% = no% + 1 : edit no% : no_lib3% = no% : width no%,400
    top no%,10 : left no%,360
  no% = no% + 1 : alpha no%
    top no%,40 : left no%,580 : caption no%,"Publié:"
  no% = no% + 1 : edit no% : no_date3% = no%
    top no%,40 : left no%,640 : width no%,80
  no% = no% + 1 : alpha no%
    top no%,70 : left no%,580 : caption no%,"Mise à jour:"
  no% = no% + 1 : edit no% : no_time3% = no%
    top no%,70 : left no%,640 : width no%,80

  no% = no% + 1 : grid no% : no_table3% = no%
    top no%,130 : left no%,c_table3%
    width no%,898 - delta_w3%
    height no%,503 - delta_h%
    on_click no%,click_table3
    grid_row no%,1 : grid_column no%, c_table3%
    grid_one_column_width no%,1,50
    grid_write no%,1,1,"No."
    grid_one_column_width no%,2,80
    grid_write no%,1,2,"Publié"
    grid_one_column_width no%,3,80
    grid_write no%,1,3,"Mise à jour"
    grid_one_column_width no%,4,80
    grid_write no%,1,4,"Annonce"
    grid_one_column_width no%,5,400-delta_w3%
    grid_write no%,1,5,"Titre"
    grid_one_column_width no%,6,80
    grid_write no%,1,6,"Prix"
    grid_one_column_width no%,7,50
    grid_write no%,1,7,"Frais réels"
    grid_one_column_width no%,8,50
    grid_write no%,1,8,"Marge"

  no% = no% + 1 : grid no% : no_total3% = no%
    top no%,640-delta_h% : left no%,10
    width no%,898 - delta_w3% : height no%,56
    grid_row no%,2 : grid_column no%,c_table3%
    grid_one_column_width no%,1,50
    grid_write no%,1,1,"Total"
    grid_one_column_width no%,2,80
    grid_one_column_width no%,3,80
    grid_one_column_width no%,4,80
    grid_one_column_width no%,5,400-delta_w3%
    grid_one_column_width no%,6,80
    grid_write no%,1,6,"Prix"
    grid_one_column_width no%,7,50
    grid_write no%,1,7,"Frais réels"
    grid_one_column_width no%,8,50
    grid_write no%,1,8,"Marge"

  no% = no% + 1 : button no% : top no%,100 : left no%,400-delta_w3%
    caption no%,"Supprimer" : on_click no%,supprimer3
  no% = no% + 1 : button no% : top no%,100
    left no%,785-delta_w3% : width no%,50
    caption no%,"Mod." : on_click no%,mod_reel3 : no_mod_frais_reel3% = no%

  command_target_is 0
end_sub

sub initialisations()
  dim_local s1$
  site% = 1 : ' défaut: démarrer abev eBay
  n_table% = 0
  prix_total = 0
  liv_total = 0
  if file_exists(f_base1$)=1 then grid_load no_table%,f_base1$
  if file_exists(f_base2$)=1 then grid_load no_table2%,f_base2$
  if file_exists(f_base3$)=1 then grid_load no_table3%,f_base3$
  n_table% = 1
  repeat
    s1$ = grid_read$(no_table%,n_table%+1,1)
    if s1$="" then exit_repeat
    totaux_plus(n_table%+1)
    n_table% = n_table% + 1
  until s1$=""
  grid_row no_table%, n_table%
  n_table% = n_table% - 1
  if n_table%>0 then grid_row_fixed no_table%,1
  n_table2% = 1
  repeat
    s1$ = grid_read$(no_table2%,n_table2%+1,1)
    if s1$="" then exit_repeat
    totaux_plus2(n_table2%+1)
    n_table2% = n_table2% + 1
  until s1$=""
  grid_row no_table2%, n_table2%
  n_table2% = n_table2% - 1
  if n_table2%>0 then grid_row_fixed no_table2%,1
  n_table3% = 1
  repeat
    s1$ = grid_read$(no_table3%,n_table3%+1,1)
    if s1$="" then exit_repeat
    totaux_plus3(n_table3%+1)
    n_table3% = n_table3% + 1
  until s1$=""
  grid_row no_table3%, n_table3%
  n_table3% = n_table3% - 1
  if n_table3%>0 then grid_row_fixed no_table3%,1
  KGF_initialize("KGF.dll")
 
  nom$ = "firefox.exe"
  hnd% = dll_call1("GetProcessWindowHandle",adr(nom$))

end_sub






' *** procédures de l'application *****************************************
sub totaux_plus(ind%)
  s$ = grid_read$(no_table%,ind%,6)
  if s$="" then s$ = "0.00"
  s$ = left$(s$,len(s$)-3) + "." + right$(s$,2)
  prix_total = prix_total + val(s$)
  prix_global = prix_global + val(s$)
  s$ = grid_read$(no_table%,ind%,7)
  if s$="" then s$ = "0.00"
  s$ = left$(s$,len(s$)-3) + "." + right$(s$,2)
  liv_total = liv_total + val(s$)
  liv_global = liv_global + val(s$)
  s$ = grid_read$(no_table%,ind%,8)
  if s$="" then s$ = "0.00"
  s$ = left$(s$,len(s$)-3) + "." + right$(s$,2)
  reel_total = reel_total + val(s$)
  reel_global = reel_global + val(s$)
  s$ = grid_read$(no_table%,ind%,9)
  if s$="" then s$ = "0.00"
  s$ = left$(s$,len(s$)-3) + "." + right$(s$,2)
  ebay_total = ebay_total + val(s$)
  ebay_global = ebay_global + val(s$)
  s$ = grid_read$(no_table%,ind%,10)
  if s$="" then s$ = "0.00"
  s$ = left$(s$,len(s$)-3) + "." + right$(s$,2)
  paypal_total = paypal_total + val(s$)
  paypal_global = paypal_global + val(s$)
  s$ = grid_read$(no_table%,ind%,c_table1%)
  if s$="" then s$ = "0.00"
  s$ = left$(s$,len(s$)-3) + "." + right$(s$,2)
  marge_total = marge_total + val(s$)
  marge_global = marge_global + val(s$)
  totaux_afficher()
end_sub

sub totaux_plus2(ind%)
  s$ = grid_read$(no_table2%,ind%,5)
  if s$="" then s$ = "0.00"
  s$ = left$(s$,len(s$)-3) + "." + right$(s$,2)
  prix_total2 = prix_total2 + val(s$)
  prix_global = prix_global + val(s$)
  s$ = grid_read$(no_table2%,ind%,6)
  if s$="" then s$ = "0.00"
  s$ = left$(s$,len(s$)-3) + "." + right$(s$,2)
  reel_total2 = reel_total2 + val(s$)
  reel_global = reel_global + val(s$)
  s$ = grid_read$(no_table2%,ind%,c_table2%)
  if s$="" then s$ = "0.00"
  s$ = left$(s$,len(s$)-3) + "." + right$(s$,2)
  marge_total2 = marge_total2 + val(s$)
  marge_global = marge_global + val(s$)
  totaux_afficher2()
end_sub

sub totaux_plus3(ind%)
  s$ = grid_read$(no_table3%,ind%,6)
  if s$="" then s$ = "0.00"
  s$ = left$(s$,len(s$)-3) + "." + right$(s$,2)
  prix_total3 = prix_total3 + val(s$)
  prix_global = prix_global + val(s$)
  s$ = grid_read$(no_table3%,ind%,7)
  if s$="" then s$ = "0.00"
  s$ = left$(s$,len(s$)-3) + "." + right$(s$,2)
  reel_total3 = reel_total3 + val(s$)
  reel_global = reel_global + val(s$)
  s$ = grid_read$(no_table3%,ind%,c_table3%)
  if s$="" then s$ = "0.00"
  s$ = left$(s$,len(s$)-3) + "." + right$(s$,2)
  marge_total3 = marge_total3 + val(s$)
  marge_global = marge_global + val(s$)
  totaux_afficher3()
end_sub

sub totaux_moins(ind%)
  s$ = grid_read$(no_table%,ind%,6)
  if s$="" then s$ = "0.00"
  s$ = left$(s$,len(s$)-3) + "." + right$(s$,2)
  prix_total = prix_total - val(s$)
  prix_global = prix_global - val(s$)
  s$ = grid_read$(no_table%,ind%,7)
  if s$="" then s$ = "0.00"
  s$ = left$(s$,len(s$)-3) + "." + right$(s$,2)
  liv_total = liv_total - val(s$)
  liv_global = liv_global - val(s$)
  s$ = grid_read$(no_table%,ind%,8)
  if s$="" then s$ = "0.00"
  s$ = left$(s$,len(s$)-3) + "." + right$(s$,2)
  reel_total = reel_total - val(s$)
  reel_global = reel_global - val(s$)
  s$ = grid_read$(no_table%,ind%,9)
  if s$="" then s$ = "0.00"
  s$ = left$(s$,len(s$)-3) + "." + right$(s$,2)
  ebay_total = ebay_total - val(s$)
  ebay_global = ebay_global - val(s$)
  s$ = grid_read$(no_table%,ind%,10)
  if s$="" then s$ = "0.00"
  s$ = left$(s$,len(s$)-3) + "." + right$(s$,2)
  paypal_total = paypal_total - val(s$)
  paypal_global = paypal_global - val(s$)
  s$ = grid_read$(no_table%,ind%,c_table1%)
  if s$="" then s$ = "0.00"
  s$ = left$(s$,len(s$)-3) + "." + right$(s$,2)
  marge_total = marge_total - val(s$)
  marge_global = marge_global - val(s$)
  totaux_afficher()
end_sub

sub totaux_moins2(ind%)
  s$ = grid_read$(no_table2%,ind%,5)
  if s$="" then s$ = "0.00"
  s$ = left$(s$,len(s$)-3) + "." + right$(s$,2)
  prix_total2 = prix_total2 - val(s$)
  prix_global = prix_global - val(s$)
  s$ = grid_read$(no_table2%,ind%,6)
  if s$="" then s$ = "0.00"
  s$ = left$(s$,len(s$)-3) + "." + right$(s$,2)
  reel_total2 = reel_total2 - val(s$)
  reel_global = reel_global - val(s$)
  s$ = grid_read$(no_table2%,ind%,c_table2%)
  if s$="" then s$ = "0.00"
  s$ = left$(s$,len(s$)-3) + "." + right$(s$,2)
  marge_total2 = marge_total2 - val(s$)
  marge_global = marge_global - val(s$)
  totaux_afficher2()
end_sub

sub totaux_moins3(ind%)
  s$ = grid_read$(no_table3%,ind%,6)
  if s$="" then s$ = "0.00"
  s$ = left$(s$,len(s$)-3) + "." + right$(s$,2)
  prix_total3 = prix_total3 - val(s$)
  prix_global = prix_global - val(s$)
  s$ = grid_read$(no_table3%,ind%,7)
  if s$="" then s$ = "0.00"
  s$ = left$(s$,len(s$)-3) + "." + right$(s$,2)
  reel_total3 = reel_total3 - val(s$)
  reel_global = reel_global - val(s$)
  s$ = grid_read$(no_table3%,ind%,c_table3%)
  if s$="" then s$ = "0.00"
  s$ = left$(s$,len(s$)-3) + "." + right$(s$,2)
  marge_total3 = marge_total3 - val(s$)
  marge_global = marge_global - val(s$)
  totaux_afficher3()
end_sub

sub totaux_afficher()
  grid_write no_total%,2,1,str$(n_table%)
  s$ = str$(prix_total)
  p% = instr(s$,".")
  if p%>0 then s$ = left$(s$,p%-1) + "," + mid$(s$,p%+1,len(s$))
  if instr(s$,",")=0 then s$ = s$ + ",00"
  if instr(s$,",")=len(s$)-1 then s$ = s$ + "0"
  grid_write no_total%,2,6,s$
  s$ = str$(liv_total)
  p% = instr(s$,".")
  if p%>0 then s$ = left$(s$,p%-1) + "," + mid$(s$,p%+1,len(s$))
  if instr(s$,",")=0 then s$ = s$ + ",00"
  if instr(s$,",")=len(s$)-1 then s$ = s$ + "0"
  grid_write no_total%,2,7,s$
  s$ = str$(reel_total)
  p% = instr(s$,".")
  if p%>0 then s$ = left$(s$,p%-1) + "," + mid$(s$,p%+1,len(s$))
  if instr(s$,",")=0 then s$ = s$ + ",00"
  if instr(s$,",")=len(s$)-1 then s$ = s$ + "0"
  grid_write no_total%,2,8,s$
  s$ = str$(ebay_total)
  p% = instr(s$,".")
  if p%>0 then s$ = left$(s$,p%-1) + "," + mid$(s$,p%+1,len(s$))
  if instr(s$,",")=0 then s$ = s$ + ",00"
  if instr(s$,",")=len(s$)-1 then s$ = s$ + "0"
  grid_write no_total%,2,9,s$
  s$ = str$(paypal_total)
  p% = instr(s$,".")
  if p%>0 then s$ = left$(s$,p%-1) + "," + mid$(s$,p%+1,len(s$))
  if instr(s$,",")=0 then s$ = s$ + ",00"
  if instr(s$,",")=len(s$)-1 then s$ = s$ + "0"
  grid_write no_total%,2,10,s$
  s$ = str$(marge_total)
  p% = instr(s$,".")
  if p%>0 then s$ = left$(s$,p%-1) + "," + mid$(s$,p%+1,len(s$))
  if instr(s$,",")=0 then s$ = s$ + ",00"
  if instr(s$,",")=len(s$)-1 then s$ = s$ + "0"
  grid_write no_total%,2,11,s$
  globaux_afficher()
end_sub

sub totaux_afficher2()
  grid_write no_total2%,2,1,str$(n_table2%)
  s$ = str$(prix_total2)
  p% = instr(s$,".")
  if p%>0 then s$ = left$(s$,p%-1) + "," + mid$(s$,p%+1,len(s$))
  if instr(s$,",")=0 then s$ = s$ + ",00"
  if instr(s$,",")=len(s$)-1 then s$ = s$ + "0"
  grid_write no_total2%,2,5,s$
  grid_write no_total%,3,6,s$
  s$ = str$(reel_total2)
  p% = instr(s$,".")
  if p%>0 then s$ = left$(s$,p%-1) + "," + mid$(s$,p%+1,len(s$))
  if instr(s$,",")=0 then s$ = s$ + ",00"
  if instr(s$,",")=len(s$)-1 then s$ = s$ + "0"
  grid_write no_total2%,2,6,s$
  grid_write no_total%,3,8,s$
  s$ = str$(marge_total2)
  p% = instr(s$,".")
  if p%>0 then s$ = left$(s$,p%-1) + "," + mid$(s$,p%+1,len(s$))
  if instr(s$,",")=0 then s$ = s$ + ",00"
  if instr(s$,",")=len(s$)-1 then s$ = s$ + "0"
  grid_write no_total2%,2,c_table2%,s$
  grid_write no_total%,3,c_table1%,s$
  globaux_afficher()
end_sub

sub totaux_afficher3()
  grid_write no_total3%,2,1,str$(n_table3%)
  s$ = str$(prix_total3)
  p% = instr(s$,".")
  if p%>0 then s$ = left$(s$,p%-1) + "," + mid$(s$,p%+1,len(s$))
  if instr(s$,",")=0 then s$ = s$ + ",00"
  if instr(s$,",")=len(s$)-1 then s$ = s$ + "0"
  grid_write no_total3%,2,6,s$
  grid_write no_total%,4,6,s$
  s$ = str$(reel_total3)
  p% = instr(s$,".")
  if p%>0 then s$ = left$(s$,p%-1) + "," + mid$(s$,p%+1,len(s$))
  if instr(s$,",")=0 then s$ = s$ + ",00"
  if instr(s$,",")=len(s$)-1 then s$ = s$ + "0"
  grid_write no_total3%,2,7,s$
  grid_write no_total%,4,8,s$
  s$ = str$(marge_total3)
  p% = instr(s$,".")
  if p%>0 then s$ = left$(s$,p%-1) + "," + mid$(s$,p%+1,len(s$))
  if instr(s$,",")=0 then s$ = s$ + ",00"
  if instr(s$,",")=len(s$)-1 then s$ = s$ + "0"
  grid_write no_total3%,2,c_table3%,s$
  grid_write no_total%,4,c_table1%,s$
  globaux_afficher()
end_sub

sub globaux_afficher()
  s$ = str$(prix_global)
  p% = instr(s$,".")
  if p%>0 then s$ = left$(s$,p%-1) + "," + mid$(s$,p%+1,len(s$))
  if instr(s$,",")=0 then s$ = s$ + ",00"
  if instr(s$,",")=len(s$)-1 then s$ = s$ + "0"
  grid_write no_total%,5,6,s$
  s$ = str$(liv_global)
  p% = instr(s$,".")
  if p%>0 then s$ = left$(s$,p%-1) + "," + mid$(s$,p%+1,len(s$))
  if instr(s$,",")=0 then s$ = s$ + ",00"
  if instr(s$,",")=len(s$)-1 then s$ = s$ + "0"
  grid_write no_total%,5,7,s$
  s$ = str$(reel_global)
  p% = instr(s$,".")
  if p%>0 then s$ = left$(s$,p%-1) + "," + mid$(s$,p%+1,len(s$))
  if instr(s$,",")=0 then s$ = s$ + ",00"
  if instr(s$,",")=len(s$)-1 then s$ = s$ + "0"
  grid_write no_total%,5,8,s$
  s$ = str$(ebay_global)
  p% = instr(s$,".")
  if p%>0 then s$ = left$(s$,p%-1) + "," + mid$(s$,p%+1,len(s$))
  if instr(s$,",")=0 then s$ = s$ + ",00"
  if instr(s$,",")=len(s$)-1 then s$ = s$ + "0"
  grid_write no_total%,5,9,s$
  s$ = str$(paypal_global)
  p% = instr(s$,".")
  if p%>0 then s$ = left$(s$,p%-1) + "," + mid$(s$,p%+1,len(s$))
  if instr(s$,",")=0 then s$ = s$ + ",00"
  if instr(s$,",")=len(s$)-1 then s$ = s$ + "0"
  grid_write no_total%,5,10,s$
  s$ = str$(marge_global)
  p% = instr(s$,".")
  if p%>0 then s$ = left$(s$,p%-1) + "," + mid$(s$,p%+1,len(s$))
  if instr(s$,",")=0 then s$ = s$ + ",00"
  if instr(s$,",")=len(s$)-1 then s$ = s$ + "0"
  grid_write no_total%,5,c_table1%,s$
end_sub

sub calculer_marge(ind%)
  s$ = grid_read$(no_table%,ind%,6)
  if s$="" then s$ = "0.00"
  s$ = left$(s$,len(s$)-3) + "." + right$(s$,2)
  marge = val(s$)
  s$ = grid_read$(no_table%,ind%,7)
  if s$="" then s$ = "0.00"
  s$ = left$(s$,len(s$)-3) + "." + right$(s$,2)
  marge = marge + val(s$)
  s$ = grid_read$(no_table%,ind%,8)
  if s$="" then s$ = "0.00"
  s$ = left$(s$,len(s$)-3) + "." + right$(s$,2)
  marge = marge - val(s$)
  s$ = grid_read$(no_table%,ind%,9)
  if s$="" then s$ = "0.00"
  s$ = left$(s$,len(s$)-3) + "." + right$(s$,2)
  marge = marge - val(s$)
  s$ = grid_read$(no_table%,ind%,10)
  if s$="" then s$ = "0.00"
  s$ = left$(s$,len(s$)-3) + "." + right$(s$,2)
  marge = marge - val(s$)
  s$ = str$(marge)
  p% = instr(s$,".")
  if p%>0 then s$ = left$(s$,p%-1) + "," + mid$(s$,p%+1,len(s$))
  if instr(s$,",")=0 then s$ = s$ + ",00"
  if instr(s$,",")=len(s$)-1 then s$ = s$ + "0"
  grid_write no_table%,ind%,c_table1%,s$
end_sub

sub calculer_marge2(ind%)
  s$ = grid_read$(no_table2%,ind%,5)
  if s$="" then s$ = "0.00"
  s$ = left$(s$,len(s$)-3) + "." + right$(s$,2)
  marge2 = val(s$)
  s$ = grid_read$(no_table2%,ind%,6)
  if s$="" then s$ = "0.00"
  s$ = left$(s$,len(s$)-3) + "." + right$(s$,2)
  marge2 = marge2 - val(s$)
  s$ = str$(marge2)
  p% = instr(s$,".")
  if p%>0 then s$ = left$(s$,p%-1) + "," + mid$(s$,p%+1,len(s$))
  if instr(s$,",")=0 then s$ = s$ + ",00"
  if instr(s$,",")=len(s$)-1 then s$ = s$ + "0"
  grid_write no_table2%,ind%,c_table2%,s$
end_sub

sub calculer_marge3(ind%)
  s$ = grid_read$(no_table3%,ind%,6)
  if s$="" then s$ = "0.00"
  s$ = left$(s$,len(s$)-3) + "." + right$(s$,2)
  marge3 = val(s$)
  s$ = grid_read$(no_table3%,ind%,7)
  if s$="" then s$ = "0.00"
  s$ = left$(s$,len(s$)-3) + "." + right$(s$,2)
  marge3 = marge3 - val(s$)
  s$ = str$(marge3)
  p% = instr(s$,".")
  if p%>0 then s$ = left$(s$,p%-1) + "," + mid$(s$,p%+1,len(s$))
  if instr(s$,",")=0 then s$ = s$ + ",00"
  if instr(s$,",")=len(s$)-1 then s$ = s$ + "0"
  grid_write no_table3%,ind%,c_table3%,s$
end_sub

sub get_browser()
  s$ = id_browser$
  GetWindowByTitle(1,s$)
  hnd% = GetWindowByTitle%
  BringWindowToForeground(hnd%)

  s$ = string$(255," ")
  GetActiveWindowTitle()
  s$ = GetActiveWindowTitle$
  s$ = trim$(s$)
end_sub

sub get_page_text()
  s$ = chr$(9)+chr$(9)+chr$(9)+chr$(9)+chr$(9)+chr$(9)+chr$(9)+chr$(9)+chr$(9)
  SendStringAsChars(hnd%,s$)
  s$ = chr$(1)
  SendStringAsText(hnd%,s$)
  pause 300
  s$ = chr$(3)
  SendStringAsText(hnd%,s$)
  CopyToClipboard(hnd%)
end_sub

#INCLUDE "KGF_SUB.bas"
Revenir en haut Aller en bas
Voir le profil de l'utilisateur http://klauspanoramic.comxa.com/index.html
Klaus

avatar

Nombre de messages : 10075
Age : 68
Localisation : Ile de France
Date d'inscription : 29/12/2009

MessageSujet: Re: Gestion des ventes sur eBay   Sam 27 Oct 2012 - 23:51

Nouvelle version:
ajout des fonctionnalités de sauvegarde et restauration, par la combo de sélection des sites, qui est complétée ainsi:


EDIT

Le source devient trop grand pour être posté dans un message du forum. Je l'ai donc mis sur MyDrive, dans le dossier "ebay_ventes".
Revenir en haut Aller en bas
Voir le profil de l'utilisateur http://klauspanoramic.comxa.com/index.html
Klaus

avatar

Nombre de messages : 10075
Age : 68
Localisation : Ile de France
Date d'inscription : 29/12/2009

MessageSujet: Re: Gestion des ventes sur eBay   Dim 28 Oct 2012 - 12:31

J'ai mis une version en ligne sur MyDrive, avec les nouveautés suivantes:
- la caption de la form 0 affiche le numéro de version (1.00 maintenant)
- j'ai intégré l'astuce de Bignono pour contourner le problème de la suppression du dernier enregistrement utilie d'un GRID. Pour mémoire, si l'on utilise la ligne 1 comme ligne fixe avec des titres, et si le nombre de lignes du tableau chute à 1 (donc plus de lignes de données), la ligne 1 perd son statut de ligne fixe et devient une simple ligne de données. Ce problème est maintenant contourné grâce à l'aide de Bignono. La variable bug_fixes% conditionne tout lee code nécessaire pour gérer cela, ce qui permet de revenir sur cette modif lorsque Jack aura résolu ce problème.
Revenir en haut Aller en bas
Voir le profil de l'utilisateur http://klauspanoramic.comxa.com/index.html
Klaus

avatar

Nombre de messages : 10075
Age : 68
Localisation : Ile de France
Date d'inscription : 29/12/2009

MessageSujet: Re: Gestion des ventes sur eBay   Lun 29 Oct 2012 - 1:53

Version V1.01:
' V1.01 28/10/2012 correction d'un bug dans l'acceptation d'un objet
' et insertion d'objets eBay en ordre chronologique
Revenir en haut Aller en bas
Voir le profil de l'utilisateur http://klauspanoramic.comxa.com/index.html
Klaus

avatar

Nombre de messages : 10075
Age : 68
Localisation : Ile de France
Date d'inscription : 29/12/2009

MessageSujet: Re: Gestion des ventes sur eBay   Lun 29 Oct 2012 - 12:24

Version V1.02:
' V1.02 29/10/2012 sécurisation des montants et dates saisis pour eBay

au lieu de récupérer une page produit du site eBay, on peut aussi saisir directement les informations. C'est pour cette raison que le programme vérifie tous les montants et la date et en assure un format correct. Tout montant non conforme sera remplacé par "0,00", et toute date non conforme au format jj/mm/aaaa sera remplacée par la date du jour.
Revenir en haut Aller en bas
Voir le profil de l'utilisateur http://klauspanoramic.comxa.com/index.html
Klaus

avatar

Nombre de messages : 10075
Age : 68
Localisation : Ile de France
Date d'inscription : 29/12/2009

MessageSujet: Re: Gestion des ventes sur eBay   Lun 29 Oct 2012 - 16:19

V1.03:
' V1.03 29/10/2012 sécurisation des montants saisis pour LeBonCoin et VivaStreet

C'est la même protection que pour eBay, pour le cas d'une saisie directe d'une vente sans passer par la fonction de chargement d'une page produit du site.
Revenir en haut Aller en bas
Voir le profil de l'utilisateur http://klauspanoramic.comxa.com/index.html
Klaus

avatar

Nombre de messages : 10075
Age : 68
Localisation : Ile de France
Date d'inscription : 29/12/2009

MessageSujet: Re: Gestion des ventes sur eBay   Lun 29 Oct 2012 - 23:42

V1.04:
' V1.04 29/10/2012 impression du tableau de synthèse

Sur la page eBay, il y a un nouveau bouton "Impr. Totaux", à gauche en-dessous de "Accepter".

Ce bouton ouvre le dialogue de sélection d'imprimante, puis imprime un fichier du style:


C'est en même temps un excellent exemple pour la création d'éditions personnalisées.
Revenir en haut Aller en bas
Voir le profil de l'utilisateur http://klauspanoramic.comxa.com/index.html
Klaus

avatar

Nombre de messages : 10075
Age : 68
Localisation : Ile de France
Date d'inscription : 29/12/2009

MessageSujet: Re: Gestion des ventes sur eBay   Mar 30 Oct 2012 - 11:47

V1.05:
' V1.05 30/10/2012 tous les montants sont cadrés à droite

Les tableaux sont beaucoup plus lisibles comme ça. Deux procédures de cadrage sont fournies. Elles retournent la chaîne cadrée dans la variable globale sjust$. m$ est la chaîne à centrer, g% est le numéro d'objet dans lequel la chaîne devra être placée, et w% est la largeur en pixels de l'objet (ou de la cellule du grid).

La procédure de cadrage à droite:
Code:
sub right_justify(m$,g%,w%)
  dim_local x%, sp%, t%
  sp% = text_width(" ",g%)
  t% = text_width(m$,g%)
  x% = int((w%-sp%-t%)/sp%)
  if x%>0
    sjust$ = string$(x%," ")+m$
  else
    sjust$ = m$
  end_if
end_sub

La procédure de centrage:
Code:
sub center_justify(m$,g%,w%)
  dim_local x%,sp%, t%
  sp% = text_width(" ",g%)
  t% = text_width(m$,g%)
' *** bug dans Panoramic ***  x% = int((w%-sp%-t%)/sp%/2)
  x% = int((w%-sp%-t%)/sp%*2)  : ' *** contourner le bug dans PAnoramic ***
  if x%>0
    sjust$ = string$(x%," ")+m$
  else
    sjust$ = m$
  end_if
end_sub


Dernière édition par Klaus le Mer 31 Oct 2012 - 0:54, édité 3 fois
Revenir en haut Aller en bas
Voir le profil de l'utilisateur http://klauspanoramic.comxa.com/index.html
bignono

avatar

Nombre de messages : 1086
Age : 60
Localisation : Val de Marne
Date d'inscription : 13/11/2011

MessageSujet: Re: Gestion des ventes sur eBay   Mar 30 Oct 2012 - 16:02

Klaus,
tes procédures de centrage à droite ou au milieu d'une cellulle fonctionnent super bien et seront très utiles! Par contre dans la procédure de centrage tu as mis dans ton code:
x% = int((w%-sp%-t%)/sp%/2) ce qui ne donne pas le résultat escompté. J'ai mis à la place *2 à la fin de ta formule, et là le texte est bien centré.
cordialement, A+ Wink Wink Wink
Revenir en haut Aller en bas
Voir le profil de l'utilisateur
Klaus

avatar

Nombre de messages : 10075
Age : 68
Localisation : Ile de France
Date d'inscription : 29/12/2009

MessageSujet: Re: Gestion des ventes sur eBay   Mar 30 Oct 2012 - 19:27

Merci pour l'info, Bignono. Mais à mon avis, c'est un bug. Deux divisions successives doivent se dérouler de gauche à droite, et non de droite à gauche. J'ai signalé ce bug dans la rubrique correspondante.

EDIT

J'ai adapté la procédure de centrage dans mon post ci-dessus, en marquant clairement le contournement du problème.
Revenir en haut Aller en bas
Voir le profil de l'utilisateur http://klauspanoramic.comxa.com/index.html
Contenu sponsorisé




MessageSujet: Re: Gestion des ventes sur eBay   

Revenir en haut Aller en bas
 
Gestion des ventes sur eBay
Voir le sujet précédent Voir le sujet suivant Revenir en haut 
Page 1 sur 1
 Sujets similaires
-
» Gestion des ventes sur eBay
» Gestion des cantons en mode hors ligne
» Zumo 660 Gestion des Cartes
» Gestion hasardeuse des fichiers gpx
» Gestion de collisions entre sprites en 2D

Permission de ce forum:Vous ne pouvez pas répondre aux sujets dans ce forum
FORUM DE DISCUSSION SUR LE LANGAGE PANORAMIC :: PANORAMIC :: Vos sources, vos utilitaires à partager-
Sauter vers: