Automatisation calcule marge via entrée de données - userform

40benchvba2.xlsm (25.14 Ko)

Bonjour,

J’ai commencé une formation par moi-même en VBA il y a de ça 3 semaines avec le livre « Macros et language VBA » mais voilà je suis devant un problème où je n’arrive pas à trouver la solution via le livre donc je me suis dit pourquoi ne pas demander à la communauté (première fois que je poste sur un forum hihi)

En espérant que vous saurez m’aider 😊

Le problème :

Voir fichier ci-joint.

Concrètement, j’aimerai mettre en place un fichier excel où je fais un benchmarking de plusieurs sites de paris en ligne pour une étude que je réalise. Pour un même évènement (par exemple : Real Madrid vs PSG), j’aimerais comparé la marge que prenne chaque sites sur différent outcomes (nombre de buts dans le matchs, victoire de l’équipe à domicile match nul, défaites,…). Cependant, pour certains outcomes du basket par exemple, il existe seulement 2 outcomes (victoire à domicile et victorie à l’extérieur) tandis qu’au football il y a 3 outcomes (+match nul) => voir tableau feuille 2.

J’avais pensé à un process comme celui-ci :

1) On double clique sur la cellule où l'on désire mettre la marge

2) Un optionbutton s'ouvre avec le choix --> calcul avec deux cotes ou trois cotes

3) Un userform s’ouvre où l'on doit inscrire les cotes

4) Une fois qu'on appuye sur OK --> la marge se calcule automatiquement et s’affiche sur la cellule sélectionnée et on peut passer à la cellule suivante

5) Les deux tableaux en feuille 1 sont là uniquement pour comprendre ce que j’aimerai que le userform fasse implicitement. J’aimerai changer dans le code de ceux-ci les cellules pour que la marge se calcule directement et se mette directement dans la cellule que j’ai séléctionné préalablement.

Le tableau dans le fichier est un exemple mais j’aimerai faire ça pour des dizaines de sites, avec des dizaines d’évènements différents sur une période de plusieurs semaines (chaque jour) donc un programme VBA m’aiderait grandement.

Pour l’instant je vais sur un site (ghostbetting / margin calculator) qui me calcule la marge directement dès que je mets les cotes et ensuite je fais copier-coller dans la cellule que je veux mais j’aimerais passer à un programme vba qui me ferait gagner du temps.

Les deux tableaux de formules sur la feuille 1 sont là uniquement afin de comprendre ce que je recherche

Voilà, je pense que c’est tout.

Un énorme merci d’avance aux personnes qui se pencheront sur le problème, je ne sais pas si j’ai été suffisamment clair dans mes explications mais n’hésitez pas à revenir vers moi si jamais vous avez besoin d’éclaircissement.

Merci, merci, merci.

Bonjour,

Je pense avoir compris ton sujet, et je me pose déjà plusieurs questions:

1. Es-tu sûr de vouloir partir sur ce format pour stocker tes données? avoir les choses suivantes est très peu recommandé:

  • cellules fusionnées
  • plusieurs colonnes pour une même donnée
  • un tableau avec des trous

Ce que je propose c'est plutôt:

  • pas de cellules fusionnées
  • une colonne évènement, sites, outcomes, marge, jour
  • aucun trou dans le tableau

Avoir un tableau construit de la sorte rendra le traitement des informations beaucoup plus simple, je suppose que le but à long terme c'est de réaliser des statistiques qui seront faites avec des tableaux croisés dynamiques, c'est ça?

2. Comment comptes-tu utiliser les données que tu rentres? ça pourrait servir à construire le tableau

3. Sur quoi as-tu besoin d'aide? J'imagine que pour ta formation ça ne serait pas intéressant de te proposer une solution clé en main, et ça demanderait beaucoup de temps de travail aux membres.

4. Enfin plus une remarque qu'une question, passer par une feuille permettant de saisir les informations au lieu de passer par un userform qui sera appelé en double cliquant sur des cellules sera plus pratique, d'un côté de ton fichier tu vas avoir un gros tableau servant à stocker tes données, et d'un autre une feuille permettant d'interagir avec, ajouter des données surtout, et enfin une partie utilisation des données.

Bonjour,

Tout d’abord, je tiens à te remercier pour ta réponse et m’excuser pour le retard de la mienne.

  1. Concernant les fusions des cellules, c’était plutôt dans le but de faciliter la visualisation des différentes marges étant donné qu’il y en a un nombre assez conséquent, j’ai peur de ne pas savoir m’y retrouver sans ça mais je vais voir si je peux arriver à faire quelque chose 😉. Pour être honnête, je n’avais pas pensé aux tableaux croisés dynamiques mais je vais creusée l’idée, merci !
  2. C’est simplement de faire un petit recap toutes les semaines sur les différences de marges présentent sur chaque event.
  3. Tu as tout à fait raisons. En fait, je recherche surtout une piste pour continuer. Je suis un peu bloqué et je suis à la recherche de tous conseils mais ta remarque du point 4 est très intéressante.
  4. Je pense aussi que ça sera plus simple car avec le userform, j’ai peur que ça soit beaucoup trop compliqué à mettre en place et je ne sais pas si ça sera vraiment plus pratique que d’utiliser le site internet et de faire bêtement copier-coller. Mais je t’avoue que je ne sais pas vraiment par quoi commencer pour mettre ça en place… Je ne comprends pas bien comment le fait d’inscrire des données d’un un premier tableau complétera le second tableau de la seconde feuille ou ai-je mal compris ta remarque ?

Merci beaucoup à toi déjà

Bonjour,

Super, un membre qui prend le temps de répondre! (je ne parle pas du "retard" mais de la longueur du message et du nombre d'infos qu'il contient).

Si le but est de faire un recap par semaine pour chaque event alors je me pencherais clairement sur des tableaux croisés dynamiques, si on rajoute une date aux informations que l'on a déjà on pourra alors grouper par lot de 7 jours les informations, côté visibilité il sera possible de filtrer les évènements, les dates etc...

Tu es bloqué par la construction de ton fichier pour moi, repartir sur une base saine avec une ligne par information, et en colonnes:

  • date
  • evenement
  • site
  • outcome
  • marge

Pour l'interaction entre une feuille de saisie et ton tableau de stockage des données, et un tableau croisé dynamique, le plus simple serait de déclarer ton tableau en utilisant mettre sou forme de tableau pour que sa taille soit dynamique, les tableaux croisés dynamiques se mettront à jour avec le bouton "Actualiser tout" de "Données". Pour l'interaction je dirais qu'un tout petit peu de VBA basique ferait l'affaire, copier les données saisies dans le tableau puis effacer la zone de saisie pour préparer la prochaine. Si tu n'es pas fort en VBA on pourra t'expliquer, le codage n'est pas difficile à faire, il revient à dire: "cet endroit là est égale à celui ici" et donc en gros à faire "A = B". On peut appeler le programme en appuyant sur un bouton Valider.

Bonjour,

Si je comprends bien:

J'aurais une feuille de saisie sur la sheet1 avec deux "tableaux" -> un lorsqu'il y a deux cotes et un pour trois cotes. Une fois que j'ai mis les cotes et appuyer sur OK, elles iront automiquement se mettre dans le tableau - colone marge ? mais étant donné que la marge change à chaque fois, comment est-ce que le programme va comprendre que la marge calculée à partir des cotes que j'aurais inscrite dans le tableau de saisie doit aller dans la bonne cellule ?

Je n'ai jamais travailler avec des tableaux croisés dynamiques, je vais essayer de me pencher la dessus les jours à venir si je trouve un peu de temps et je reviens vers toi pour une update.

Merci pour ton temps

Bonjour,

petite question car il y a peut-être quelque chose que j'avais manqué, pour chaque outcome tu dois mettre 3 ou 2 cotes en fonction de si c'est du foot ou du basket, et ça va te calculer la marge? tu dois faire ça pour chaque outcome? tu as 3 outcomes à chaque fois peu importe le type de match?

Bonjour,

C'est tout à fait ça: je compare 3 outcomes d'un même match mais sur plusieurs sites. Je fais ça chaque matin et chaque soir pour comparer si il y a eu un changement de marge pour chaque site. Et la formule de la marge change en fonction de si il y a 2 ou 3 cotes a insérer...

Rebonjour,

donc si j'ai bien compris une zone de saisie comme celle en pièce jointe pourrait faire l'affaire.

L'idée c'est d'avoir la même zone pour 2 cotes et 3 cotes avec une formule qui s'adapte pour le calcul des marges, la zone du dessus servirait seulement à recopier les données dans le tableau de stockage et serait masquée en permanence.

Bonjour,

Concernant la zone de saisie, c'est exactement ça.

Ce que je tentais d'expliquer dans mon premier post c'est d'avoir ce tableau de saisie sous forme d'un userform "que je pourrais balader un peu partout" sur ma Sheet2 et dès que je double clique sur une cellule ou je dois noter la marge, j'ai un tableau comme celui que tu m'a gentillement proposé qui apparait d'une seule colone du coup où j'insère les cotes (2 ou 3 selon l'outcomes) et le calcul se fait directement et se glisse dans la cellule préalablement double cliqué.

Je ne pense pas avoir bien compris la seconde partie de ta réponse: ""...la zone du dessus servirait seulement à recopier les données dans le tableau de stockage et serait masquée en permanence."

Bon dimanche à toi

Bonjour,

dernièrement j'avais proposé d'abandonner le format de la feuil2 pour avoir un tableau de stockage standardisé afin de le combiner à des tableaux croisés dynamiques par la suite, ce tableau a pour but d'être quasiment invisible pour l'utilisateur, car il passera par la feuil1 pour l'alimenter avec la zone de saisie que je propose. La zone au dessus avec les formules qui reprennent la date, l'evenement etc sur plusieurs lignes a pour unique but de pouvoir copier ces données dans le tableau qui les stockera par un clic sur un bouton.

Bonjour et désolé du retard,

Oui oui et j’étais d’accord avec toi. Ici, j’essayais simplement de réepliquer mon premier post de manière plus claire.

Donc, concrètement, il me suffit d’insérer mes données dans le tableau de saisie et celle-ci s’ajouteront automatiquement via un bouton au tableau au dessus ? C’est bien ça ? il faudra à chaque que fois que j’inscrive l’event, le site et la date ? Car le plus souvent, je prépare mon calendrier à l’avance. Concrètement, je préremplis les colonnes event+date+site+outcomes pour toutes la semaine et ensuite je viens ajouter quotidiennement les marges.

Pensez-vous qu’il soit possible de mettre ça en place ? Je remplis mon tableau à l’avance avec les events que j’ai choisis, le site et les outcomes. Ensuite je n’ai plus qu’à y ajouter les marges correspondantes mais comment rendre ça plus simple ?

Merci et bonne journée,

Bonjour,

le tableau au dessus fonctionne avec des formules qui viennent chercher leurs infos dans la zone de saisie plus bas, il ne sert qu'à simplifier l'export de la saisie dans le tableau de stockage. Pour le fait de devoir tout saisir à nouveau à chaque fois ça dépend, si en effet c'est rentré tous les jours la date ne sera mise qu'une fois, en revanche il faudra renseigner l'évènement et le site manuellement ou via des listes.

Mettre en place une zone de saisie pour chaque site et chaque outcome serait possible j'imagine mais présenterait de gros inconvénients, une grosse zone de saisie qui n'est pas flexible du tout, le problème de la flexibilité c'est que dès que tu voudras ajouter un site, un évènement, ou modifier quoi que ce soit ça va être source de pas mal de modifications et de problématiques.

Bonjour,

Un grand merci pour votre aide, je vais de mettre vos conseils à profit et je reviens vers vous pour vous donnez une update :)

Re-Bonjour,

Après si longtemps, jespère que tu vas bien.

Je reviens vers toi avec une petite question: est-il possible de mettre ça en place:

Simplement avoir un userform toujours apparent et qu'on peut balader sur la feuille?

1) Je selectionne ma cellule

2) Je remplis les champs dans mon userform

3)Je clique sur valider et la marge vient d'inscrire dans la cellule préselectionnée?

Merci à toi et bon dimanche :)

vbaforum

Bonjour,

Oui c'est possible,

il faut afficher le formulaire avec .Show et préciser False pour la propriété vbModal qui est par défaut True, ça permet de ne pas verrouiller la sélection sur le formulaire et donc de le balader, pour la modification il est possible d'utiliser l'objet Selection qui sera modifié vis-à-vis du formulaire.

L'autre solution ne convenait pas? ça fait un mois environ que le sujet a été créé, la solution n'est pas pratique à la longue?

Rechercher des sujets similaires à "automatisation calcule marge via entree donnees userform"