IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Access Discussion :

Access / mailing pour carte fidélité


Sujet :

Access

  1. #21
    Rédacteur/Modérateur

    Avatar de ClaudeLELOUP
    Homme Profil pro
    Chercheur de loisirs (ayant trouvé tous les jours !)
    Inscrit en
    Novembre 2006
    Messages
    20 596
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 79
    Localisation : Belgique

    Informations professionnelles :
    Activité : Chercheur de loisirs (ayant trouvé tous les jours !)
    Secteur : Finance

    Informations forums :
    Inscription : Novembre 2006
    Messages : 20 596
    Points : 281 920
    Points
    281 920
    Par défaut
    Bonsoir,

    Concernant une table pour les CP et villes, je n'arrive pas à cerner le but.
    Lorsque tu encodes 74000 dans le champ [code postal], "Annecy" vient automatiquement dans le champ [Localité].
    Ou l'inverse.

    Pour tes données : tout ce qui est calculable, en principe, ne doit pas se trouver dans les tables.
    Exemple : un total ---> les postes détaillés suffisent,
    idem pour une moyenne.

    J'ai vu que tu voulais saisir le nom des vendeurs(vendeuses). Y a-t-il des statistiques à produire ?

  2. #22
    Membre à l'essai
    Profil pro
    Inscrit en
    Novembre 2010
    Messages
    30
    Détails du profil
    Informations personnelles :
    Âge : 34
    Localisation : France, Haute Savoie (Rhône Alpes)

    Informations forums :
    Inscription : Novembre 2010
    Messages : 30
    Points : 12
    Points
    12
    Par défaut Access
    Bonsoir!

    D'accord effectivement cela peut être pratique.

    Oui en faite cela permettrai de mesurer l'efficacité de chaque vendeur, en attribuant un code personnel à chaque employé de la force de vente.

    Ex: Le vendeur X à dégagé xxxx€ de CA sur x semaines.

    J'ai avancé ma base de données mais je rencontre un problème, j'ai créé une requête pour additionner le total des achats d'un client. Hors elle m'affiche le résultat des montants de tout les clients entrés dans la base.

    Comment puis-je individualiser cette requête?

  3. #23
    Rédacteur/Modérateur

    Avatar de ClaudeLELOUP
    Homme Profil pro
    Chercheur de loisirs (ayant trouvé tous les jours !)
    Inscrit en
    Novembre 2006
    Messages
    20 596
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 79
    Localisation : Belgique

    Informations professionnelles :
    Activité : Chercheur de loisirs (ayant trouvé tous les jours !)
    Secteur : Finance

    Informations forums :
    Inscription : Novembre 2006
    Messages : 20 596
    Points : 281 920
    Points
    281 920
    Par défaut
    Bonjour,

    Après avoir relu le fil de la discussion, il me semble que le modèle doit se composer de :

    - une table Clients
    idClient
    les données signalétiques
    Celle proposée par Heureux-oli fera l’affaire.
    Mes réserves sur la date d’anniversaire plutôt que de naissance et sur un N° de portable au lieu de protable)

    - une table Vendeurs
    idVendeur
    données signalétiques éventuelles

    - une table des Ventes
    idVente
    idClient
    idVendeur
    Date
    Montant
    et autres données que tu voudrais utiliser (nombre d’articles, type articles [chaussures, accessoires…]). Sans oublier que chaque encodage demande du temps et qu’utiliser ton système ne doit pas devenir une corvée !

    - une table avec les paramètres du calcul des ristournes
    Palier
    Ristourne

    - une table avec les codes des villes de France
    (à trouver sur Internet éventuellement réduite à ton aire commerciale).

    Tout le reste, c’est du calcul avec les quatre opérations de base (+, - , : , X).

    On verra, à l’usage, s’il convient de stocker des agrégats tels qu’Achat Minimum / Maximum pour des raisons de performance (cela m’étonnerait).

    Si ma proposition te convient encore, fais-moi signe : j’ai du temps.

  4. #24
    Membre à l'essai
    Profil pro
    Inscrit en
    Novembre 2010
    Messages
    30
    Détails du profil
    Informations personnelles :
    Âge : 34
    Localisation : France, Haute Savoie (Rhône Alpes)

    Informations forums :
    Inscription : Novembre 2010
    Messages : 30
    Points : 12
    Points
    12
    Par défaut Access
    Bonjour,

    Je joins une base de données que je viens de créer en fonction des conditions de votre dernier message!

    Pouvez vous me valider si elle est correcte (table, champs, et relations..)?

    Pour la suite les calculs sont effectués via des requêtes donc si j'ai bien compris le fonctionnement?

    Je vous prie de m'excuser de la petite taille de ma réponse mais je dois filer au travail!

    Bonne après midi.

  5. #25
    Rédacteur/Modérateur

    Avatar de ClaudeLELOUP
    Homme Profil pro
    Chercheur de loisirs (ayant trouvé tous les jours !)
    Inscrit en
    Novembre 2006
    Messages
    20 596
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 79
    Localisation : Belgique

    Informations professionnelles :
    Activité : Chercheur de loisirs (ayant trouvé tous les jours !)
    Secteur : Finance

    Informations forums :
    Inscription : Novembre 2006
    Messages : 20 596
    Points : 281 920
    Points
    281 920
    Par défaut
    Tu as, dans ta précipitation, encore oublié que je peux seulement t'aider avec les moyens du bord : ACCESS2000 !

  6. #26
    Membre à l'essai
    Profil pro
    Inscrit en
    Novembre 2010
    Messages
    30
    Détails du profil
    Informations personnelles :
    Âge : 34
    Localisation : France, Haute Savoie (Rhône Alpes)

    Informations forums :
    Inscription : Novembre 2010
    Messages : 30
    Points : 12
    Points
    12
    Par défaut Access
    Re,

    Mince désolé (-_-).

    Je joins sous access 2000 cette fois-ci.

  7. #27
    Rédacteur/Modérateur

    Avatar de ClaudeLELOUP
    Homme Profil pro
    Chercheur de loisirs (ayant trouvé tous les jours !)
    Inscrit en
    Novembre 2006
    Messages
    20 596
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 79
    Localisation : Belgique

    Informations professionnelles :
    Activité : Chercheur de loisirs (ayant trouvé tous les jours !)
    Secteur : Finance

    Informations forums :
    Inscription : Novembre 2006
    Messages : 20 596
    Points : 281 920
    Points
    281 920
    Par défaut Les tables et le formulaire frm_clients
    Bonjour Newby74,


    Evite les accents et les blancs dans le nom des champs.
    Pour te documenter sur les bonnes pratiques, lis (rapidement) ceci :

    - conventions typographiques
    http://argyronet.developpez.com/office/vba/convention/

    Dans tClients, vois :

    - [DateCreation] ---> date du jour à la création ;
    - [Txt_Pays] ---> France.


    Dans frm_Client, ( récup chez Heureux-oli) vois :
    - systématiquement toutes les propriétés des contrôles. Positionne ton curseur sur une propriété et enfonce F1 --> l’aide Access s’affiche à la bonne page. Essaie de comprendre un maximum de la matière qui concerne le formulaire.
    - Enfonce les touches <ctrl> + G ---> tu ouvres la fenêtre de code. L’éditeur Visual Basic (VBE).
    Là aussi, quand tu positionnes ton curseur sur un mot de code, l’aide s’affiche.

    Vois en particulier la zone de liste Txt_CodePostal

    Voici le code qui est associé à l’événement « Après Mise à Jour »

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    Private Sub Txt_CodePostal_AfterUpdate()
    Me.txt_Ville.Requery
    If Me.Txt_CodePostal.Column(1) = 1 Then
         Me.txt_Ville = Me.txt_Ville.ItemData(0)
    Else
         DoCmd.GoToControl "txt_Ville"
         Me.txt_Ville = " "
         Me.txt_Ville.Dropdown
    End If
    End Sub
    Traduction française : (tu parles à ACCESS)
    Quand l’utilisateur a saisi un code postal "after update",

    actualise le contenu du contrôle [txt_Ville] de ce formulaire "Me.txt_Ville.Requery" .

    Si la 2ème colonne de la liste – Access compte à partir de zéro ! – est égale à 1 (en d’autres mots : s’il n’y a qu’une seule ville qui porte ce CP) "If Me.Txt_CodePostal.Column(1) = 1"

    alors indique dans le contrôle [txt_Ville ], le 1er de la liste (s’il est tout seul, il est aussi le 1er !) "Me.txt_Ville = Me.txt_Ville.ItemData(0)"

    Si non (donc s’il y a un choix à faire)
    positionne-toi sur le contrôle [txt_Ville] " DoCmd.GoToControl "txt_Ville"

    efface ce qui s’y trouve " Me.txt_Ville = " " "

    déploie la liste "Me.txt_Ville.Dropdown"


    Examine attentivement la propriété « contenu » de [txt_Ville].
    Affiche la requête en cliquant sur les … au bout de la ligne.
    Tu dois comprendre comment on limite la liste aux villes qui portent le code postal qui a été éventuellement choisi (si aucun choisi, alors la liste n’est pas limitée)

    pour te documenter sur « like » vois ceci :

    - L'opérateur LIKE
    http://loufab.developpez.com/tutorie...operateurlike/

    Examine aussi l’événement après MàJ de [txt_ville]
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    Private Sub txt_Ville_AfterUpdate()
    Me.Txt_CodePostal = Me.txt_Ville.Column(1)
    End Sub
    Si l’utilisateur choisit de d’abord introduire le nom de la ville ---> le code postal s’affichera dans [Txt_CodePostal]

    Le processus CP ----> Ville fonctionne donc dans les deux sens.

    Notre BDD de test pour continuer le dialogue est en pièce jointe.
    Encode quelques exemples et resposte-la.

    NB tu peux supprimer tes pièces jointes précédentes, elles ne sont plus utiles.


    Quelques références si tu rencontres des difficultés :

    - Créer des requêtes simples (Ballat)
    http://jeannot45.developpez.com/arti...tionrequetes1/

    - des zones de listes (combo box) dynamiques
    http://access.developpez.com/faq/?page=zdl#LierZdl


    Essaie d'abord de trouver par toi-même, mais n'hésite pas à me revenir si tu ne trouves pas.

    N'essaie pas d'aller trop vite, cela te fera gagner du temps.

    Y a du boulot !

    Tiens-nous au courant.
    Bon courage.

  8. #28
    Membre expérimenté
    Homme Profil pro
    Indépendant développeur et formateur
    Inscrit en
    Octobre 2007
    Messages
    1 036
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 64
    Localisation : France

    Informations professionnelles :
    Activité : Indépendant développeur et formateur
    Secteur : Conseil

    Informations forums :
    Inscription : Octobre 2007
    Messages : 1 036
    Points : 1 598
    Points
    1 598
    Par défaut
    Hello à tous
    excuse moi ClaudeLELOUP
    Lorsque tu encodes 74000 dans le champ [code postal], "Annecy" vient automatiquement dans le champ [Localité].
    Ou l'inverse.

    Pour tes données : tout ce qui est calculable, en principe, ne doit pas se trouver dans les tables.
    Exemple : un total ---> les postes détaillés suffisent,
    idem pour une moyenne.
    J'ai chargé la liste des comunes de France avec leur code postal et à l'utilisation, je me suis rendu compte que le seul identifiant unique valable est le code INSEE, en effet, plusiurs villes ont le même code postal, et à l'inverse, plusieurs Villes ont le même nom, ce qui fait que dans quelques cas, on riisque la confusion

    Pour le non stockage des données calculées, je suis d'accord sur le principe jusqu'au jour ou j'ai du saisir une facture fourniseur (je tiens même à votre disposition un ticket de parking avec une TVA un peu space) ou les arrondis n'étaient oas les mêmes que les miens ! ! ett comme je ne peut pas changer souvent entre l'arrondi normal, l'arrondi inférieur et l'arrondi supérieur, j'ai décidé de stocker la somme HT la soomme TTC ainsi que la valeur TVA dans l'entête de facture
    Bien sûr cela nécessite de faire des vérifications avant de quitter le formulaire.
    on peut aussi mettre en place des mises à jour automatiques, mais il faut se méfier quand même des mises à jour trop automatiques qui remettent la valeur calculée à la place de la valeur forcée à la main. (il serait envisageable de mettre un petit oui/non pour vérouiller les valeurs forcées à la main)

    Joyeuses fêtes de Noël à tous

  9. #29
    Membre à l'essai
    Profil pro
    Inscrit en
    Novembre 2010
    Messages
    30
    Détails du profil
    Informations personnelles :
    Âge : 34
    Localisation : France, Haute Savoie (Rhône Alpes)

    Informations forums :
    Inscription : Novembre 2010
    Messages : 30
    Points : 12
    Points
    12
    Par défaut Access
    Bonsoir,

    J'ai parcourus les différents liens que vous avez laissé, je pense en avoir saisi le principal.

    Aussi, le code tapé ne semble fonctionner que dans un sens, uniquement en tapant d'abord le code postal. Si je tente de chercher une ville puis d'atteindre le code postal de celle-ci rien ne se passe, la liste déroulante affiche tout les codes postaux.

    N'y à-t-il pas plus simple que le codage pour faire cela? J'ai effectué quelques recherches sur la toile et il semble y avoir une macro pour une telle manipulation. ( J'ai essayé sans succès mais sa me paraissait plus intuitif et moins "barbare"."rechdom")

    Sinon j'ai réessayé la manipulation en créant deux contrôles (vendeur et pseudo) dans un nouveau formulaire mais je ne sais ou taper le code vba. Quand je fais un ctrl-g je n'ai que la fiche de code de l'autre formulaire. Ou frapper celui de mon formulaire essai? J'ai bien créé un module (l'interface est la même que celle ou est inscrit votre code donc j'ai supposé que c'était sa), Mais que faire de ce dernier après pour qu'il s'applique?

    Je pensai écrire cela en partant de votre code:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    Option Compare Database
    Option Explicit
     
    Private Sub Vendeur_AfterUpdate()
    Me.Pseudo.Requery
    If Me.Vendeur.Column(1) = 1 Then
        Me.Pseudo = Me.Pseudo.ItemData(0)
    Else
        DoCmd.GoToControl "Pseudo"
        Me.Pseudo = " "
        Me.Pseudo.Dropdown
     
    End If
    End Sub
    Je joins la BDD. Excusez moi si je suis à coté de la plaque mais j'ai du mal

    Sinon Joyeux Noel!

  10. #30
    Rédacteur/Modérateur

    Avatar de ClaudeLELOUP
    Homme Profil pro
    Chercheur de loisirs (ayant trouvé tous les jours !)
    Inscrit en
    Novembre 2006
    Messages
    20 596
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 79
    Localisation : Belgique

    Informations professionnelles :
    Activité : Chercheur de loisirs (ayant trouvé tous les jours !)
    Secteur : Finance

    Informations forums :
    Inscription : Novembre 2006
    Messages : 20 596
    Points : 281 920
    Points
    281 920
    Par défaut
    Joyeux Noël à tous,

    Quand je fais un ctrl-g je n'ai que la fiche de code de l'autre formulaire
    Nous n’avons pas la même version, j’ignore comment se présente ton écran.

    Lorsque tu enfonces <ctrl>+G tu devrais voir :



    Si tu cliques sur l’icône « Explorateur de projets », tu ouvres une fenêtre supplémentaire :



    Si, dans cette fenêtre, tu double-cliques sur le mon d’un objet, le code associé à cet objet apparaît.

    A bientôt,
    Images attachées Images attachées   

  11. #31
    Rédacteur/Modérateur

    Avatar de ClaudeLELOUP
    Homme Profil pro
    Chercheur de loisirs (ayant trouvé tous les jours !)
    Inscrit en
    Novembre 2006
    Messages
    20 596
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 79
    Localisation : Belgique

    Informations professionnelles :
    Activité : Chercheur de loisirs (ayant trouvé tous les jours !)
    Secteur : Finance

    Informations forums :
    Inscription : Novembre 2006
    Messages : 20 596
    Points : 281 920
    Points
    281 920
    Par défaut Modéle de données et frm_client
    Bonjour Newby74,

    Voici le
    Modèle
    que je te propose actuellement :



    frm_Client

    Présentation


    Fonctionnalités
    - Positionnement direct sur le client recherché.
    - CP et ville aménagés par paire (dans les deux sens) :
    pour les items contenus dans tZoneChalandise, le choix d’un CP, limite le choix des localités, le choix d’une localité impose le CP ;
    pour les autres cas, les deux champs sont indépendants.
    - Pour chaque client, quatre sous-formulaires renseignent
    l’achat du jour ;
    l’historique des achats précédents ;
    les bonus anniversaires octroyés ;
    les utilisations des ristournes.
    - Capital Ristourne = l’achat du jour + les achats précédents + les bonus anniversaires - les utilisations des ristournes.
    - Ristourne potentielle : celle qui correspond au seuil atteint (les seuils et ristournes sont dans tParametresRistourne.
    - Diverses statistiques relatives au client.
    - Clic sur le bouton « Bénéficier de la ristourne » ---> procède à l’émargement à concurrence de la ristourne qui était affichée (NB plusieurs émargements sont possibles jusqu’à ce que tout le potentiel de ristournes soit épuisé.

    Particularités de la programmation

    Quelques fonctions

    Déterminer l’anniversaire le plus récent

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    Public Function DernierAnniversaire(DateNaissance As Date) As Date
     DernierAnniversaire = Format(DateNaissance, "dd/mm/" & Format(Date, "yy"))
     If DernierAnniversaire > Date Then DernierAnniversaire = Format(DateNaissance, "dd/mm/" & Format(Date, "yy") - 1)
    End Function
    Explication de l’algorithme
    On compose l’anniversaire de cette année : jj/mm/ de la date de naissance et aa de l’année courante.
    On compare avec la date du jour. Si on constate que l’anniversaire est futur, le dernier anniversaire date de l’an passé.

    Déterminer le calcul du Capital Ristournes
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    Public Function Capital(Id_client As Long, Dat As Date) As Double
    Capital = Nz(DSum("Num_MontantAchat", "tVentes", _
              "Id_client=" & Id_client _
              & " and format(Dte_DateAchat,""yyyymmdd"")<=""" _
              & Format(Dat, "yyyymmdd") & """"), 0) _
              + Nz(DSum("MtBonus", "tBonusAnniv", _
              "Id_client=" & Id_client _
              & " and format(DateBonus,""yyyymmdd"")<=""" _
              & Format(Dat, "yyyymmdd") & """"), 0) _
              - Nz(DSum("CapitalUtilise", "tRistournes", _
              "Id_client=" & Id_client _
              & " and format(DateRistourne,""yyyymmdd"")<=""" _
              & Format(Dat, "yyyymmdd") & """"), 0)
    End Function
    On utilise pour chacune des tables concernées (tVentes, tBonusAnniv, tRistourne) une fonction de domaine (somme).
    NB si la table ne contient pas d’élément pour l’id_client courant, le résultat est la valeur Null ---> d’où utilisation de Nz() pour substituer zéro à Null.

    Calcul de la ristourne potentielle
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    Public Function RistournePotentielle(TotalAchats As Long) As Double
    Dim SeuilMax As Double
    SeuilMax = DMax("Num_palier", "tParametresRistourne")
    If TotalAchats > SeuilMax Then
           'plafond dépassé
        RistournePotentielle = DMax("Num_ristourne", "tParametresRistourne")
        Exit Function
    Else
           'cas banal
        RistournePotentielle = Nz(DMax("Num_ristourne", "tParametresRistourne", _
                                "Num_palier<=" & TotalAchats), 0)
    End If
    End Function
    L’algorithme est simple
    On voit si le Capital Ristournes a dépassé le plafond ---> prime maximale.
    Si non, on cherche le plus haut seuil, inférieur ou égal au Capital Ristournes et on attribue la ristourne prévue pour ce seuil.

    Le code associé à l’événement sur activation
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    Public Sub Form_Current()
    Dim sql As String, DateBonus As Date, MtBonus As Double, DatDernAchat As Date
    'Réinitialiser le sfrm_Clients01
       Me.sfrm_Clients01!zdlVendeurs = " "
       DoCmd.GoToControl "sfrm_Clients01"
       DoCmd.GoToRecord , , acNewRec
    'Aménager les données statistiques
       If IsNull(Me.txt_Nom) Then  'C'est donc un nouveau client à créer
            Me.ZdtMin = ""
            Me.zdtDateMin = ""
            Me.zdtMax = ""
            Me.zdtDateMax = ""
            Me.zdtTotalAchats = ""
            Me.zdtNbreAchats = ""
            Me.zdtAchatMoyen = ""
       Else                        'C'est un client ancien (déjà enregistré)
            Me.ZdtMin = DMin("Num_MontantAchat", "tventes", "Id_client=" & Me.Id_client)
            Me.zdtDateMin = DLookup("Dte_DateAchat", "tventes", "Id_client=" & Me.Id_client _
                            & " And Num_MontantAchat=" & Replace(Me.ZdtMin, ",", "."))
            Me.zdtMax = DMax("Num_MontantAchat", "tventes", "Id_client=" & Me.Id_client)
            Me.zdtDateMax = DLookup("Dte_DateAchat", "tventes", "Id_client=" & Me.Id_client _
                            & " And Num_MontantAchat=" & Replace(Me.zdtMax, ",", "."))
            Me.zdtTotalAchats = DSum("Num_MontantAchat", "tventes", "Id_client=" & Me.Id_client)
            Me.zdtNbreAchats = DCount("Num_MontantAchat", "tventes", "Id_client=" & Me.Id_client)
            Me.zdtAchatMoyen = Me.zdtTotalAchats / Me.zdtNbreAchats
     
       End If
    'Aménager BonusAnniv
           'S'il n'y a jamais eu d'achat --> pas de bonus
       If DCount("*", "tventes", "Id_client=" & Nz(Me.Id_client, 0)) = 0 Then GoTo FinCalculBonusAnniv
           'Y a-t-il eu un anniversaire depuis dernier achat, si oui  ---> bonus
           DatDernAchat = DMax("Dte_DateAchat", "tventes", "Id_client=" & Me.Id_client)
           If DatDernAchat < DernierAnniversaire(Nz(Me.Dte_DateNaissance, #1/1/2000#)) Then
              'créer un bonus
                 'chercher le 1er anniversaire qui a suivi le dernier achat
           DateBonus = Format(Nz(Me.Dte_DateNaissance, #1/1/2000#), "dd/mm/") _
                    & Format(DatDernAchat, "yy")
     
           If DateBonus < DatDernAchat Then DateBonus = Format(DateBonus, "dd/mm/") _
                                       & Format(DateBonus, "yy") + 1
    Reboucler:
           If DateBonus > DernierAnniversaire(Nz(Me.Dte_DateNaissance, #1/1/2000#)) _
                          Then GoTo FinCalculBonusAnniv
           MtBonus = Capital(Me.Id_client, DateBonus) * DLookup("ResultatNum", "tAutresParametres", "Argument=""TauxBonus""")
           sql = "INSERT INTO tBonusAnniv ( id_Client, DateBonus, MtBonus ) SELECT " _
                   & Me.Id_client & " AS Expr1, " _
                   & """" & DateBonus & """ AS Expr2, " _
                   & Replace(MtBonus, ",", ".") & " AS Expr3;"
           DoCmd.SetWarnings False
           DoCmd.RunSQL (sql)
           DoCmd.SetWarnings True
           Me.sfrm_Clients03.Requery
               'reboucler si plusieurs anniversaires depuis dernier achat
           If DateBonus <= DernierAnniversaire(Nz(Me.Dte_DateNaissance, #1/1/2000#)) Then
              DateBonus = Format(DateBonus, "dd/mm/") & Format(DateBonus, "yy") + 1
              GoTo Reboucler
           End If
       End If
    FinCalculBonusAnniv:
    'Positionner le curseur sur recherche
    DoCmd.GoToControl "zdlRechercheClient"
    'montrer ou cacher le bouton Bénéficier Ristourne selon les circonstances
    If Me.zdtRistournePotentielle <> 0 Then
        Me.BtBeneficier.Visible = True
    Else
        Me.BtBeneficier.Visible = False
    End If
    End Sub
    Explication des blocs successifs

    'Réinitialiser le sfrm_Clients01
    On force le formulaire à se positionner sur un nouvel enregistrement de la table tVentes.

    'Aménager les données statistiques
    S’il s’agit d’un nouveau client (en cours d’enregistrement) ---> toutes les données statistiques à blanc.
    S’il s’agit d’un client déjà enregistré, on aménage les montants à l’aide de fonctions de domaine.

    'Aménager BonusAnniv
    Description de l’algorithme
    On détermine si le client a eu son anniversaire depuis son dernier achat. (On utilise la fonction DernierAnniversaire() décrite plus haut. Remarquez que si la date anniversaire manque (par ex, le client a refusé de la donner), on considère une date de naissance « par défaut » le 1/1/2000.
    On détermine alors la date du premier anniversaire qui suit le dernier achat.
    On collecte les données pour calculer le bonus.
    On calcule le Capital Ristournes à cette date. Le bonus = n% de ce montant. (n logé dans tAutresPamametres)
    On ajoute l’enregistrement dans la table tBonusAnniv.
    On réactualise le formulaire (---> Capital Ristournes est augmenté de ce bonus).
    On détermine si le client n’a pas encore eu un autre anniversaire depuis. Si oui, on reboucle à la collecte des données pour l’anniversaire suivant.
    On sort de la boucle lorsque le bonus du dernier anniversaire a été octroyé.
    On construit le sql qui équivaut à l’exécution d’une requête dont voici la représentation graphique :



    'montrer ou cacher le bouton Bénéficier Ristourne selon les circonstances
    Selon l’existence ou non d’une réduction potentielle.


    Code associé au clic sur « Bénéficier de la ristourne »
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    Private Sub BtBeneficier_Click()
    Dim sql As String, CapitalUtilise As Long
      'recherche du capital correspondant à la valeur de la ristourne
    CapitalUtilise = DLookup("Num_palier", "tParametresRistourne", _
                          "Num_ristourne=" & Me.zdtRistournePotentielle)
      'ajout dans la tRistournes
    sql = "INSERT INTO tRistournes ( id_Client, DateRistourne, CapitalUtilise, Ristourne ) "
    sql = sql & "SELECT " & Me.Id_client & " AS Expr1, """ & Date & """ AS Expr2, "
    sql = sql & CapitalUtilise & " AS Expr3, " & Me.zdtRistournePotentielle & " AS Expr4;"
    DoCmd.SetWarnings False
    DoCmd.RunSQL (sql)
    DoCmd.SetWarnings True
    Me.sfrm_Clients04.Requery
    Form_Current
    End Sub
    Explication de l’algorithme
    On recherche le montant du seuil qui correspond à la ristourne potentielle.
    On construit le sql qui équivaut à l’exécution d’une requête dont voici la représentation graphique :




    Ensuite, on réactualise les données du formulaire.



    Examine attentivement le code et les explications. Reviens si ce n’est pas clair ou si tu vois des erreurs, quel qu’en soit le type.
    Le but : être capable de lire le code et de décrire, avec tes mots, les mécanismes déclenchés.
    Et, à chaque occasion : <F1> !

    La suite, lorsque tu auras testé ceci et fait émerger les erreurs et améliorations souhaitées.

    Tu devrais également repenser au sujet initial : l’automatisation de l’envoi d’un courriel.
    Images attachées Images attachées     

  12. #32
    Membre à l'essai
    Profil pro
    Inscrit en
    Novembre 2010
    Messages
    30
    Détails du profil
    Informations personnelles :
    Âge : 34
    Localisation : France, Haute Savoie (Rhône Alpes)

    Informations forums :
    Inscription : Novembre 2010
    Messages : 30
    Points : 12
    Points
    12
    Par défaut Access
    Bonsoir,

    Excusez moi du temps de réponse je voulais prendre correctement le temps d'essayer cette BDD avec les données du travail que j'ai acquise.

    Tout d'abord une grosse partie de la base est impec!
    Il y tout ce qu'il faut à l'exception de quelques détails que voici:

    - une possibilité d'annulation à tout moment d'une manipulation par un bouton. (retour en arrière)
    - un bouton permettant de créer un nouveau fichier client.
    - un bouton permettant de entrer le montant de la ristourne à utiliser, un client doit pouvoir choisir le montant de l'avoir qu'il utilise.

    Au niveau des bugs voici ceux que j'ai noté:

    - Erreur 94 lors de l'ouverture du formulaire, lorsque je clique sur débogage voici ce qui est surligné ( je n'y ai trouvé aucune erreur):

    Me.zdtDateMax = DLookup("Dte_DateAchat", "tventes", "Id_client=" & Me.Id_client _
    & " And Num_MontantAchat=" & Replace(Me.zdtMax, ",", "."))

    - Erreur 2110 lors de l'utilisation de la barre de recherche client.
    Ceci est surligné dans le débogage :

    DoCmd.GoToControl "id_client"

    Ensuite il y un point que j'aimerai modifié, dans le calcul de la ristourne. Il y à le capital ristourne et la ristourne potentielle que je ne saisi pas très bien. A quoi correspond réellement le capital ristourne? Pour moi ce capital signifierai le montant total des avoirs disponible au client. Je réfléchi peut être à l'envers?

    Serait-il pas plus simple de faire figurer la date et le montant de la ristourne utilisé dans le sous formulaire? (et de ne pas faire figurer le "capital ristourne" dans le formulaire.)

    NB: Je dois garder les palliers et réductions prévues à la base, c'est à dire:

    100€ = 5€
    250€ = 15€
    500€ = 20€
    1000€ = 35€
    1500€ = 50€
    2000€ = 75€

    Ordre du chef!

    Je les aies déjà changés mais vous tiens au courant tout de même.


    Enfin oui on peut revenir à la question de l'automatisation des mails lors du franchissement d'un palier par le client.
    Aussi j'aimerais créer un bouton qui permet d'extraire toutes les adresses mails pour un envoi massif commun.


    Encore une fois merci de m'aider, j'apprends en même temps qu'on avance c'est génial

  13. #33
    Rédacteur/Modérateur

    Avatar de ClaudeLELOUP
    Homme Profil pro
    Chercheur de loisirs (ayant trouvé tous les jours !)
    Inscrit en
    Novembre 2006
    Messages
    20 596
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 79
    Localisation : Belgique

    Informations professionnelles :
    Activité : Chercheur de loisirs (ayant trouvé tous les jours !)
    Secteur : Finance

    Informations forums :
    Inscription : Novembre 2006
    Messages : 20 596
    Points : 281 920
    Points
    281 920
    Par défaut
    Erreur 94 lors de l'ouverture du formulaire, lorsque je clique sur débogage voici ce qui est surligné ( je n'y ai trouvé aucune erreur):

    Me.zdtDateMax = DLookup("Dte_DateAchat", "tventes", "Id_client=" & Me.Id_client _
    & " And Num_MontantAchat=" & Replace(Me.zdtMax, ",", "."))
    Je n’ai pas cette erreur sur mon PC

    Vérifie ceci :

    <Ctrl> + G ---> afficher l’éditeur VBE ---> Outils /Références tu devrais voir quelque chose qui ressemble à ceci




    N’as-tu pas de messages « Manquant » ?

    Si oui pour quelle référence ?
    ---------------------
    Erreur 2110 lors de l'utilisation de la barre de recherche client.
    Ceci est surligné dans le débogage :

    DoCmd.GoToControl "id_client"
    Ooops !
    La propriété Visible du contrôle Id_client était positionnée à NON.
    C’est corrigé en annexe.
    -------------------------
    Il y a le capital ristourne et la ristourne potentielle que je ne saisis pas très bien. A quoi correspond réellement le capital ristournes ? Pour moi ce capital signifierait le montant total des avoirs disponibles au client.
    Tel que tu l’expliques, le système de fidélisation est basé sur le montant cumulé des achats (ce que j’ai appelé « Capital Ristournes »). Un barème renseigne la correspondance entre les différents cumuls atteints (que tu appelles « paliers ») et le montant de la ristourne qui correspond à ce palier.

    Dans mon exemple (voir table tParametresRistourne)

    Num_palier Num_ristourne
    250,00 ..........20,00
    500,00 ..........45,00
    1.000,00 ......100,00
    2.000,00 ......250,00

    Imagine qu’un client ait atteint 452,98.
    Il se dit : au prochain achat, j’arriverai à 500 et comme 45, c’est mieux que 2 X 20, j’ai intérêt à encore attendre.
    Il est probable qu’il reviendra pour profiter de sa ristourne.
    Pour ton patron, ce n’est pas plus mal : il ne débourse pas tout de suite et en plus le client est fidélisé (c’est le but du système).

    Si au contraire on a le barème suivant

    100€ = 5€
    250€ = 15€
    500€ = 20€

    Le "client-qui-réfléchit" prendra tout de suite sa ristourne car il préfère 15 € tout de suite et 15 € au prochain achat, plutôt que 20 € la prochaine fois... s’il revient.

    Quoi qu’il en soit, lorsque ton client décide de prendre la ristourne à laquelle il a droit, il me semble normal qu’il conserve le reliquat de cumul d’achats non utilisé.

    Je reviens à mon exemple : le client a un capital ristournes de 1.300 et il décide de bénéficier de sa ristourne de 100 €, son capital ristournes retombe à 300.
    … Et s’il ne compte plus revenir, il va prendre immédiatement la ristourne de 20 € à laquelle il a encore droit.
    Un deuxième clic sur le bouton « Bénéficier de la ristourne » est c’est fait !
    ----------
    Ne serait-il pas plus simple de faire figurer la date et le montant de la ristourne utilisée dans le sous-formulaire? (et de ne pas faire figurer le "capital ristournes" dans le formulaire.)
    J’ai mentionné le capital Ristournes par souci de transparence (par exemple pour pouvoir expliquer le mécanisme à un client soucieux de ses droits de consommateur).
    A mon avis cette notion est indispensable pour que le système soit équitable.
    Libre à toi de supprimer.
    -------------
    une possibilité d'annulation à tout moment d'une manipulation par un bouton. (retour en arrière)
    Quoi par exemple ?
    Envisage de pouvoir supprimer une ligne dans les sous-formulaires.
    Essaie de trouver toi-même comment y arriver ( une poste : revoie les propriétés des formulaires concernés).
    Si le vendeur s'est trompé, il supprime et il recommence.
    A mon avis cela devrait suffire.
    ----------------
    un bouton permettant de créer un nouveau fichier client.
    C’est l’astérisque qui se trouve au pied du formulaire (standard ACCESS)
    ----------------
    un bouton permettant d’entrer le montant de la ristourne à utiliser
    Je crois que j’ai tout dit plus haut.
    -------------------
    Aussi j'aimerais créer un bouton qui permet d'extraire toutes les adresses mails pour un envoi massif commun
    C’est une requête sur tClients avec un test sur [Txt_Email] pour vérifier qu’il n’est pas null.
    ---------------------
    Enfin oui on peut revenir à la question de l'automatisation des mails lors du franchissement d'un palier par le client.
    Je ne comprends pas bien l’utilité d’un courriel: le client est devant toi !
    Images attachées Images attachées  

  14. #34
    Membre à l'essai
    Profil pro
    Inscrit en
    Novembre 2010
    Messages
    30
    Détails du profil
    Informations personnelles :
    Âge : 34
    Localisation : France, Haute Savoie (Rhône Alpes)

    Informations forums :
    Inscription : Novembre 2010
    Messages : 30
    Points : 12
    Points
    12
    Par défaut Access
    Bonsoir,

    Alors le bug de la liste des noms est réglé je confirme.

    En revanche l'erreur 94 persiste. Celle-ci ne se déclenche qu'après avoir copier les données des clients (réels) dans la base. Si je laisse la BDD tel que je la télécharge tout se passe bien.

    Voici ce qui m’apparaît quand je clique sur aide:

    Utilisation incorrecte de Null (erreur 94)
    Voir aussi Particularités

    Null est un sous-type Variant indiquant qu'un élément de données ne contient aucune donnée valide. Cause et solution de cette erreur :

    "Vous tentez d'obtenir la valeur d'une variable Variant ou d'une expression dont la valeur est Null. Par exemple :
    MyVar = Null
    For Count = 1 To MyVar
    . . .
    Next Count

    Vérifiez que la variable contient une valeur correcte.

    Pour plus d'informations, sélectionnez l'élément en question et appuyez sur F1 (sous Windows) ou AIDE (sur Macintosh)."


    Pour le système de récompense ce sont les avoirs que l'on cumule et non les montant des achats.

    Ex: Mr. x a acheter pour 1325€ depuis la création de son fichier.
    Si on suit mon barème:

    100€ = 5€
    250€ = 15€
    500€ = 20€
    1000€ = 35€
    1500€ = 50€
    2000€ = 75€

    Il aura donc 5 + 15 + 20 + 35 soit 75€ d'avoir utilisable.


    Je pense m'être mal exprimé précédemment. J'aimerais qu'il puisse choisir combien il utilise de son capital d' "avoir".

    Ex: - client: Je souhaite utiliser 50€ de mes 75€ sur mon achat d'aujourd'hui.

    Ainsi il lui restera 25€ pour plus tard, la prochaine fois qu'il vient acheter si il dépasse le seuil de 1500 il aura les 25€ qui lui reste plus les 50€ du pallier 1500.

    Ensuite tout les 500€ dépensé (soit 2500,3000,3500...) il gagne 20€ d'avoir.

    Est-ce plus claire?


    Pour le nouveau client, j'aimerai le bouton "nouveau" car je souhaite que les caissière n'utilise que le formulaire comme interface. L'asterix dont vous me parlez est seulement sur les table.

    Pourquoi du mailing?
    Tout simplement pour avoir une communication avec le client régulière, lui montrer qu'on ne l'oubli pas en lui envoyé un mail disant qu'il à tant de bon d'achat. En gros c'est comme marquer "revenez".
    C'est comme la carte fidélité physique que tout le monde à dans son porte feuille c'est un outil de communication.

  15. #35
    Rédacteur/Modérateur

    Avatar de ClaudeLELOUP
    Homme Profil pro
    Chercheur de loisirs (ayant trouvé tous les jours !)
    Inscrit en
    Novembre 2006
    Messages
    20 596
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 79
    Localisation : Belgique

    Informations professionnelles :
    Activité : Chercheur de loisirs (ayant trouvé tous les jours !)
    Secteur : Finance

    Informations forums :
    Inscription : Novembre 2006
    Messages : 20 596
    Points : 281 920
    Points
    281 920
    Par défaut
    Bonjour,

    En revanche l'erreur 94 persiste. Celle-ci ne se déclenche qu'après avoir copié les données des clients (réels) dans la base. Si je laisse la BDD tel que je la télécharge tout se passe bien.
    Ok erreur dans mon programme : le test pour un client qui n’a encore rien acheté était incorrect.

    Ex: Mr. x a acheté pour 1325€ depuis la création de son fichier.
    Si on suit mon barème:

    100€ = 5€
    250€ = 15€
    500€ = 20€
    1000€ = 35€
    1500€ = 50€
    2000€ = 75€

    Il aura donc 5 + 15 + 20 + 35 soit 75€ d'avoir utilisable.
    Ce n’est effectivement pas cela que j’avais compris au départ !

    Ex: - client: Je souhaite utiliser 50€ de mes 75€ sur mon achat d'aujourd'hui.

    Ainsi il lui restera 25€ pour plus tard, la prochaine fois qu'il vient acheter s’il dépasse le seuil de 1500 il aura les 25€ qui lui reste plus les 50€ du palier 1500.
    OK c’est clair pour la méthode d’émargement.

    Par contre :

    Ensuite tous les 500€ dépensés (soit 2500,3000,3500...) il gagne 20€ d'avoir.
    Cela, je ne suis pas sûr de bien comprendre.

    Pour reprendre ton barème, serait-ce :

    100€ = 5€
    250€ = 15€
    500€ = 20€
    1000€ = 35€
    1500€ = 50€
    2000€ = 75€
    2500€ = 20€
    3000€ = 20€
    3500€ = 20€


    NB , je ne comprends pas la logique du système :

    paliers....barème...avoirs utilisables....% de la tranche
    ..100...........5.................5........................5%
    ..250..........15...............20......................10%
    ..500..........20...............40........................8%
    1000..........35...............75........................7%
    1500..........50..............125......................10%
    2000..........75..............200......................15%
    2500..........20..............220........................4%
    3000..........20..............240........................4%

    L'astérisque dont vous me parlez est seulement sur les tables.
    Non , je te parle de celui-ci :



    Pourquoi du mailing ?
    Tu prêches un convaincu !
    Ma question était : pourquoi lui envoyer un mail pour lui dire qu’il vient d’atteindre un palier alors que cette info il peut la connaître immédiatement ?

    Tu devrais donner quelques exemples pour décrire le genre de communication que tu veux envoyer.

    ex :
    Bonjour Madame UneTelle,

    Notre nouvelle collection …
    Grâce à votre fidélité, vous pouvez actuellement bénéficier d’une ristourne de …

    avec un dépliant en pièce jointe

    Cela aiderait à mettre au point un outil pour
    1° préparer les éléments à envoyer (texte du message, pièces jointes...)
    2° sélectionner les clients concernés (tous, ceux qui ont une ristourne > à x €, ceux qu'on n'a plus vus...)
    3° envoyer les mails.

    Mais d'abord, vidons le problème de la ristourne.

    Ensuite, nous devrions scinder la DB en frontale et dorsale.

    Veux- tu me dire si tu comprends ce que j’explique ici :

    http://www.developpez.net/forums/d10...s/#post5648531
    Images attachées Images attachées  

  16. #36
    Membre à l'essai
    Profil pro
    Inscrit en
    Novembre 2010
    Messages
    30
    Détails du profil
    Informations personnelles :
    Âge : 34
    Localisation : France, Haute Savoie (Rhône Alpes)

    Informations forums :
    Inscription : Novembre 2010
    Messages : 30
    Points : 12
    Points
    12
    Par défaut Access
    Bonjour,

    D'accord pour l'astérisque je ne l'avais pas vu.
    Oublions le bouton "nouveau" alors.

    Pour la récompense j'ai du mal m'exprimer avant!
    J'ai aussi oublier d'expliquer que l'avoir de l'achat d'aujourd'hui est valable sur celui de la prochaine fois. C'est pour cela que les mails deviennent utiles, ils permettent de dire au client qu'il à obtenu un avoir, ou dans l'idéal l'informer du total de son capital avoir disponible après chaque modification.

    Ex:
    Jour 1 ( il y a une semaine)

    Une cliente à acheté pour 500€. Elle à donc cumulé 20+5+15 soit 40€ pour son prochain achat.

    Un mail doit donc lui être envoyé pour l'informer de son capital ou plusieurs mails avec chacun des avoirs correspondants.

    Jour 8 (aujourd'hui)

    La cliente revient et achète pour 800€, elle souhaite bénéficier de son total avoir.

    On déduit donc les 40€ qu'elle à cumulé sur cet achat et vide son capital avoir.
    Ensuite puisqu'elle a atteint 1300€ d'achat total elle bénéficie de 35€ (pallier de mille euros) d'avoir sur son prochain achat.
    Un mail doit donc lui être envoyé pour l'informer de son capital pour qu'elle revienne l'utilisé ou le cumulé avec de futurs achats.



    Pour après 2000€ d'achats je ne sais pas trop comment faire, j'ai pensé offrir un bon tout les 500€ ( 20, 30 ou 40€ je ne sais pas). Rien n'a encore été validé à se niveau.

    Aussi oublions l'idée de partitionnement du capital, le client l'utilise en totalité ou non. Se sera plus simple.

    Pour les notions de dorsale ou frontale, ce que j'ai compris c'est qu'il y à deux BDD dans un même dossier, l'une pour tester l'intégrité de la BDD et l'autre pour tester avec les données réelles de la base définitive. Une pour travailler la forme simplement et l'autre pour la tester avec le fond de la BDD.
    Ainsi on peu travailler sur une BDD vide donc facilement manipulable et
    la vérifié en situation réelle.

    Est-ce cela?

  17. #37
    Rédacteur/Modérateur

    Avatar de ClaudeLELOUP
    Homme Profil pro
    Chercheur de loisirs (ayant trouvé tous les jours !)
    Inscrit en
    Novembre 2006
    Messages
    20 596
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 79
    Localisation : Belgique

    Informations professionnelles :
    Activité : Chercheur de loisirs (ayant trouvé tous les jours !)
    Secteur : Finance

    Informations forums :
    Inscription : Novembre 2006
    Messages : 20 596
    Points : 281 920
    Points
    281 920
    Par défaut
    Voilà encore une nouvelle info : la ristourne engendrée par l’achat d’aujourd’hui est seulement valable dans le futur !


    Vérifie ce scénario, pour une nouvelle cliente :

    le 3/1
    1er achat de 575 €
    pas de possibilité de ristourne.
    On envoie un mail qui annonce qu’elle peut à l’avenir bénéficier d’une ristourne de 40 €

    le 14/2
    achat de 600 €
    elle dit : c’est mon mec qui paie, je ne prends pas ma ristourne cette fois-ci.
    On envoie un mail qui annonce qu’elle peut à l’avenir bénéficier d’une ristourne de 75 €

    le 28/2
    achat de 69,90 €
    elle dit : j’utilise ma ristourne.
    On lui envoie un mail qui annonce qu’elle peut à l’avenir bénéficier d’une ristourne de 5.10 €
    (cumul 575 + 600 + 69.9 = 1244.9 ---> 75 - 69.9 ---> 5.10)


    le 15/3
    achat de 800 €
    elle dit : c’est mon nouveau mec qui paie, je ne prends pas ma ristourne cette fois-ci.
    On lui envoie un mail qui annonce qu’elle peut à l’avenir bénéficier d’une ristourne de 80.10 €
    (cumul 575 + 600 + 69.9 + 800 = 2044.9 ---> 150 - 69.9 ---> 80.10)

    le 3/5
    achat de 600
    elle dit : prenez 50 sur mon avoir.
    A toi pour la suite.

  18. #38
    Membre à l'essai
    Profil pro
    Inscrit en
    Novembre 2010
    Messages
    30
    Détails du profil
    Informations personnelles :
    Âge : 34
    Localisation : France, Haute Savoie (Rhône Alpes)

    Informations forums :
    Inscription : Novembre 2010
    Messages : 30
    Points : 12
    Points
    12
    Par défaut Access
    "le 3/1
    1er achat de 575 €
    pas de possibilité de ristourne.
    On envoie un mail qui annonce qu’elle peut à l’avenir bénéficier d’une ristourne de 40 €

    le 14/2
    achat de 600 €
    elle dit : c’est mon mec qui paie, je ne prends pas ma ristourne cette fois-ci.
    On envoie un mail qui annonce qu’elle peut à l’avenir bénéficier d’une ristourne de 75 €

    le 28/2
    achat de 69,90 €
    elle dit : j’utilise ma ristourne.
    On lui envoie un mail qui annonce qu’elle peut à l’avenir bénéficier d’une ristourne de 5.10 €
    (cumul 575 + 600 + 69.9 = 1244.9 ---> 75 - 69.9 ---> 5.10)"

    Jusqu'ici d'accord, en revanche pour la suite:

    le 15/3
    achat de 800 € (soit 2044.90€ cumulé à ce jour.)

    Cas 1) elle utilise les 5.10€ qu'elle à cumulé avant
    Cas 2) elle ajoute les 5.10€ au 50 +75 des deux pallier qu'elle franchis ce jour (1500 et 2000) pour la prochaine fois.

    Cas 1) On lui envoie un mail qui annonce qu’elle peut à l’avenir bénéficier d’une ristourne de 125€.
    Cas 2) On lui envoie un mail qui annonce qu’elle peut à l’avenir bénéficier d’une ristourne de 130.10€ si elle a tout cumulé.

    le 3/5
    achat de 600€ (donc 2644.90€)

    elle dit : prenez 50 sur mon avoir.
    On déduit 50€ de 125 ou 130.10 selon on choix précédent puis on lui envoi un mail qui annonce quelle peut à l’avenir bénéficier d’une ristourne de 75+40=115€ ou 80.10+40=120.10€ lors de son prochain achat.
    ( Je pars du principe qu’après 2000€ tout les 500€ on accorde 40€ d'avoir.)

    Je pense qu'ainsi on voit tout les cas de figure possible.

    NB: Excusez moi de ce changement de paramètre, sa vient d'être décidé définitivement. Une ristourne immédiate serait plus simple mais une ristourne future oblige le client à revenir.

    Encore merci de votre patience.

  19. #39
    Rédacteur/Modérateur

    Avatar de ClaudeLELOUP
    Homme Profil pro
    Chercheur de loisirs (ayant trouvé tous les jours !)
    Inscrit en
    Novembre 2006
    Messages
    20 596
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 79
    Localisation : Belgique

    Informations professionnelles :
    Activité : Chercheur de loisirs (ayant trouvé tous les jours !)
    Secteur : Finance

    Informations forums :
    Inscription : Novembre 2006
    Messages : 20 596
    Points : 281 920
    Points
    281 920
    Par défaut
    Bonjour,
    En résumé, le système de ristourne.

    Un barème donne les ristournes à chaque seuil franchi.
    Si le montant des achats est supérieur au seuil maximum renseigné, on octroie un montant fixe par tranche excédentaire.

    Le montant de la ristourne disponible est égal à la ristourne calculée sur les achats précédents MOINS les ristournes éventuelles déjà utilisées dans le passé.

    Dans le magasin, les achats du jour n’entrent en ligne de compte que lors de l’achat suivant.

  20. #40
    Membre à l'essai
    Profil pro
    Inscrit en
    Novembre 2010
    Messages
    30
    Détails du profil
    Informations personnelles :
    Âge : 34
    Localisation : France, Haute Savoie (Rhône Alpes)

    Informations forums :
    Inscription : Novembre 2010
    Messages : 30
    Points : 12
    Points
    12
    Par défaut Access
    Oui c'est cela!
    C'est un résumé que je n'aurai pas su faire si facilement !

Discussions similaires

  1. Réponses: 1
    Dernier message: 25/11/2005, 23h30
  2. Driver pour carte reseau d`un portable toshiba
    Par redabadache3 dans le forum Dépannage et Assistance
    Réponses: 2
    Dernier message: 24/11/2005, 18h47
  3. Programme audio (microphone) pour carte Embarquée
    Par littlesquall dans le forum C
    Réponses: 9
    Dernier message: 20/10/2005, 10h16
  4. [Mail] Pour faire une newsletter ?
    Par Thierry8 dans le forum Langage
    Réponses: 1
    Dernier message: 19/09/2005, 22h59
  5. table acces champ mail pour mailing ???
    Par jockey1 dans le forum Access
    Réponses: 3
    Dernier message: 17/09/2005, 22h19

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo