Tableau/Graphique Prévisionnel...

Fermé
Changrenoir - 16 nov. 2016 à 11:34
yg_be Messages postés 22777 Date d'inscription lundi 9 juin 2008 Statut Contributeur Dernière intervention 10 mai 2024 - 22 nov. 2016 à 19:14
Bonjour à tous,

Je viens aujourd'hui partager mon souci ici, car je commence à caler sérieusement de mon côté.

Voilà, j'ai fait une Base de Données Access pour mon patron, ou j'ai enregistré un portefeuille client, et pour chacun de ces clients, les commandes qu'ils ont passés et à quelle date. Ensuite, j'ai utilisé ces données pour établir un graphique croisé dynamique afin d'avoir un visuel sur la periodicité des commandes de clients. ( Leurs commandes ne sont pas forcément régulières, ça nous donne donc un indice sur la santé de l'entreprise )
Jusque ici, je m'en sors, même si c'est pas super beau.
Par contre, il vient de me demander de faire un nouveau truc, et là je suis LARGUÉ, même si je comprends le principe, je n'arrive pas à le reproduire sur Access.
Il s'agirait d'établir un planning prévisionnel, en se basant sur la fréquence des commandes déjà passées pour chacun des clients, qui nous indiquerais quelles entreprises serait susceptible de nous appeler pour une livraison , et à quelle dates. Je pense qu'il doit s'agir d'un équivalent de la fonction TENDANCE d'excel, sur Access, mais je ne trouve rien de précis malgré déjà trois bonnes heures de recherches ( Je ne dois pas utiliser les bons mots clefs :s)

Si jamais quelqu'un passant par là avait une bonne idée... Merci d'avance!
A voir également:

5 réponses

yg_be Messages postés 22777 Date d'inscription lundi 9 juin 2008 Statut Contributeur Dernière intervention 10 mai 2024 1 481
16 nov. 2016 à 19:45
Tu pourrais calculer pour chaque client le délai moyen entre ses commandes (ou ses N dernières commandes, ou ses commandes des N derniers mois), et ensuite, pour chaque client, ajouter ce délai à la date de sa dernière commande. Cela te donnerait la date "probable" de sa prochaine commande.
0
Changrenoir
17 nov. 2016 à 09:19
Bonjour!
Merci beaucoup pour ta réponse yg_be, je t'avoue que maintenant que tu le dis ça me parait évident, je vais chercher comment mettre ça en place dans access.
Eventuellement si tu as un lien vers un tuto ou une idée, ces derniers temps ce que je fait est assez laborieux avec la crève...

Merci encore!
0
Changrenoir
17 nov. 2016 à 10:58
Tant que j'y suis, je te montre comment j'ai structuré ma base; et ce que je veux faire exactement:
http://www.cjoint.com/c/FKrjvOX2TG5 ( Un screen des relations et de la compo des deux tables )
J'ai une table entreprises, avec leurs nom, adresse, etc, et une "RamLiv" parce que ces entreprises, on les livres et on récupère des choses chez eux.
J'ai déjà d'enregistré la liste de tous nos passages dans "RamLiv", avec une case à cocher si on livre, et si la case est cochée, alors je rentre le nombre de livraisons effectuées. J'en ai une autre pour ce qu'on récupère, avec si oui ou non quelque chose à été récupéré, et si oui combien de fois.

Je suis pas sûr que ce soit si simple que ça avec Access, parce que tous mes enregistrements sont dans la table RamLiv, et que j'ai besoin qu'Access me calcule la différence de passage entre plusieurs dates (Au moins deux ou trois si possible... Sans pour autant que ça bug salement si je n'ai qu'une seule date (Pour les nouveaux clients ) afin d'en faire une moyenne, pour avoir une petite idée de la moyenne du nombre de jours avant le prochain passage. Bien évidemment, c'est entreprise par entreprises, vu que c'est pour faire du prévisionnel...

Voilà, si quelqu'un y voit quelque chose...
0
yg_be Messages postés 22777 Date d'inscription lundi 9 juin 2008 Statut Contributeur Dernière intervention 10 mai 2024 1 481
17 nov. 2016 à 17:58
Pour calculer, pour chaque entreprise, le délai moyen entre ses commandes, tu recherches :
- la date la plus ancienne, date1
- la date la plus récente, date2
- le nombre de commandes, ncomm
La moyenne c'est, si ncomm>1, (date2-date1)/(ncomm-1)
0
Changrenoir
18 nov. 2016 à 09:21
Bonjour!
C'est pas tant faire une moyenne qui me pose problème, mais plutôt comment faire en sorte qu'access me la fasse ressortir.
Là toutes mes dates sont dans une même colonne... ( Ce qui est logique, car sinon ça impliquerais une nouvelle colonne à chaque livraisons, ou bien de les enregistrer à chaque fois dans une nouvelle table. )
Je ne sais même pas si c'est vraiment possible en fait :s
0
yg_be Messages postés 22777 Date d'inscription lundi 9 juin 2008 Statut Contributeur Dernière intervention 10 mai 2024 1 481
18 nov. 2016 à 13:13
Suggestion de requête donnant une estimation de la date des prochaines commandes (table comm avec deux colonnes, entreprise et date_comm) :
SELECT entreprise, 
iif (count(date_comm)>1,max(date_comm)+( max(comm.date_comm)-min(date_comm))/(count(date_comm)-1),0) as prochaine_date
FROM comm
group by entreprise;

0
Changrenoir > yg_be Messages postés 22777 Date d'inscription lundi 9 juin 2008 Statut Contributeur Dernière intervention 10 mai 2024
21 nov. 2016 à 11:52
Salut yg_be!
Merci pour les lignes de code, mais le problème c'est que ça ne peut pas coller à la structure que j'ai déjà organisé dans ma base de données:
Tu me demande de crééer une nouvelle table pour y coller ta requête, or comme montré dans mon document Cijoint, plus haut; je peux pas faire une table "Table comm" avec une ligne "Entreprises_nom" et une ligne "RamLiv_date" correspondant à ce que tu as écrit ( ça corresponds aux nominations déjà faites au sein de ma BDD. )
J'ai créé une requete depuis ma table "RamLiv" directement, ou j'ai collé ce code, directement modifié de celui que tu m'as fait :

SELECT RamLiv.[RamLiv_date], RamLiv.[Entreprises_nom],
IIf(count(RamLiv_date)>1,max(RamLiv_date)+(max(date.RamLiv_date)-min(RamLiv_date))/(count(RamLiv_date)-1),0) AS prochaine_date
FROM comm
GROUP BY Entreprises_nom;

ça c'est le code de ma requete. Il s'avère que déjà, j'arrive à l'enregistrer ( donc pas d'erreurs de syntaxe ) mais elle ne fonctionne pas plus que ça.
Quand je l'ouvre, elle me demande une date, ensuite un nom d'entreprise, ensuite une autre date... Ensuite ça m'ouvre une page avec les trois colonnes, vides.
L'idée serait que la requete aille chercher, pour une entreprise donnée, toutes les Ramasses qu'elle a eu, que la requete calcule le délais moyen entre chaque ramasses puis qu'elle calcule, à partir de la ramasse la plus récente, quelles devraient être les dates des suivantes. Le fait qu'elle puisse faire ressortir des dates antécédentes à celle du jour n'est pas bien important, en effet, ça me permettrait d'avoir une idée des entreprises chez lesquelles nous devrons appeler afin de savoir pourquoi nous n'avons plus de commandes
J'ai pourtant l'impression d'être sur la bonne voie... Je ne comprends pas.
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
yg_be Messages postés 22777 Date d'inscription lundi 9 juin 2008 Statut Contributeur Dernière intervention 10 mai 2024 1 481
21 nov. 2016 à 12:07
Mon exemple de requête était fait pour une table s'appelant "comm".
Je propose ceci :
SELECT Entreprises_nom, 
iif (count(RamLiv_date)>1,max(RamLiv_date)+( max(RamLiv_date)-min(RamLiv_date))/(count(RamLiv_date)-1),0) as prochaine_date
FROM RamLiv
group by Entreprises_nom;
0
Changrenoir
22 nov. 2016 à 10:43
Ben zut, ma réponse d'hier a pas marché... J'recommence:

JE T'AIME§§§
C'est excellent, ça fonctionne! Du coup j'ai plus vraiment besoin d'aide urgente, du moins pour l'instant, en revanche j'aimerais comprendre pourquoi mon code ne fonctionne pas. Si tu te sent l'âme d'un prof... :')
0
Changrenoir
22 nov. 2016 à 13:18
(Si un modo passe par là, j'aimerais passer ce topic en "résolu", même si j'aimerais continuer à parler avec yg_be, la trame principale de mon souci à étée réglée par ce dernier.)
0
yg_be Messages postés 22777 Date d'inscription lundi 9 juin 2008 Statut Contributeur Dernière intervention 10 mai 2024 1 481
22 nov. 2016 à 19:14
Ta question, c'est pourquoi ceci ne marche pas?
SELECT RamLiv.[RamLiv_date], RamLiv.[Entreprises_nom], 
IIf(count(RamLiv_date)>1,max(RamLiv_date)+(max(date.RamLiv_date)-min(RamLiv_date))/(count(RamLiv_date)-1),0) AS prochaine_date 
FROM comm 
GROUP BY Entreprises_nom; 

Je ne l'ai pas testé, mais je vois deux choses à corriger :
- il faut mettre le nom de ta table après FROM (donc pas FROM comm)
- tu ne peux pas mettre RamLiv.[RamLiv_date] dans le SELECT, c'est en contradiction avec la demande d'avoir un seul résultat par entreprise (comme demandé dans le GROUP BY). Qu'essayes-tu d'obtenir en mettant cela? Il y a sans doute une autre technique qui permet d'y arriver.
0