Session du 16 octobre 2025 à 21h00
Développement Web & Frameworks
Librairie Standard & Modules
Session de mentorat Streamlit OpenPyXL Difflib
Nous avons vu la semaine dernière OpenPyXL et Difflib, il est temps de combiner les 2 dans une application Streamlit !
00:00:00 :Niquel, on rebonsoit tout le monde du coup.Je partage mon écran direct.Ce soir on va refaire du streamlit comme vous voyez sur mon écran.
00:00:17 :Je voulais juste voir un truc avant.J'ai Rémi qui me parlait du jeune tout à l'heure.Est-ce que Jérémy tu connais ça ?Oui, il y a quelques lignes de code.
00:00:37 :Tigny en fait.Ouais.Je ne connaissais pas le site.Il y a des lignes de code que je reconnais mais je ne connaissais pas le site en fait.
00:00:47 :C'est vraiment un hybride entre la base de données standard, entre guillemets, du fichier JSON.Ça te permet de te faire une base ultra légère et c'est vraiment cool à utiliser.
00:00:59 :J'ai fait un projet avec ça.Je ne sais pas si les autres vous connaissez ça ou pas à la base.Yes.C'est cool.Ouais, très cool.
00:01:09 :Donc il y a l'API pour Python.Je ne sais pas s'ils ont fait un truc du genre pour PHP Antoine.Si, moi je l'ai utilisé avec PHP il me semble bien.
00:01:19 :Moi aussi.Ouais.Mais c'est vraiment léger, sympa.Le seul risque c'est que du coup tu as tendance à vouloir traiter ça comme du JSON standardmais en fait il y a quand même des méthodes à utiliser avec ça.
00:01:32 :Donc il faut bien respecter la danger.Il n'est pas possible de faire le bourrant en tapant ça comme du JSON normal.Thomas est là.Je l'accepte.
00:01:41 :Il arrive.Salut Thomas.Pour ceux qui veulent au cas où.Après il y a Google, je sais bien.Mais je le mets au cas où dans le chat.
00:02:04 :Je l'appuie.Ouais, si tu veux t'amuser un petit peu.Si tu veux faire autre chose que du JSON ou de la base de données en standard, tu as ça.
00:02:12 :Et c'est vraiment très très bien ça.Je me suis fait un forum en ligne de commande avec ça.Et j'ai utilisé, en plus qu'à aller avec, j'ai pris Typer.
00:02:22 :Donc j'ai combiné ça avec Typer.Et ça c'est pareil, c'est terrible.D'ailleurs, j'ai encore les règles du tab, hop.Je l'étoile.Et Typer c'est terrible.
00:02:35 :Ça permet de faire des scripts vraiment sympathiques genre.Et en fait après il n'y a plus qu'à taper les commandes.Le script il n'y a plus qu'à l'utiliser comme ça quoi en fait en CLI.
00:02:49 :Ça c'est vraiment cool aussi.Voilà.C'est une stack.Ah non c'est TinyWebDB, excuse-moi pour PHP.J'avais utilisé.C'est un équivalent.Pardon.TinyWebDB tu dis ?
00:03:04 :Ouais.Ils ont un site.Ouais c'est ça ouais.TinyWebDB, PHP, un truc comme ça.Ouais ok d'accord.Nickel.Bon bah c'est cool.Le partenaire.Le partenaire.
00:03:24 :Le partenaire.Le partenaire.Le partenaire.Le partenaire.Le partenaire.Le partenaire.Le partenaire.Le partenaire.Partager tout ça c'est sympa.Du coup oui, par here excusez-moi.
00:03:37 :Donc ce soir en fait.Je vais aller jusqu'au pied des fichiers que j'ai créé d'avance.Par ce qu'il n'y a aucun intérêt à les créer devant vous.
00:03:49 :Et je vous explique ce qu'on fait.Donc là.Et je ne sais plus.Je crois que c'est là.Ouais cool.Ok.Donc on repart sur le jour où j'ai mon problème de connexion de MAC je ne sais pas.
00:04:08 :Donc là cette fois par contre on est plus standard.Voilà.Donc on a un fichier.Donc ce qu'on va faire c'est qu'on a un fichier Excel avec 20 produits.
00:04:18 :On a un fichier Excel avec tous les produits on va dire.Voilà.Donc imaginons.Parce que là je refais un peu ce que j'ai vu au boulot.
00:04:25 :Mais on va le faire extrêmement vite.Donc là on imagine que.Ce fichier là c'est les produits que moi entre guillemets j'ai en magasin.Mais que je n'arrive plus à avoir.
00:04:34 :Et ça c'est le fournisseur qui m'envoie une liste de produits.Et qui me dit tu peux commander ça chez moi.Sauf que je n'ai pas envie de m'embêter.
00:04:41 :A tous les cas à la main.Je vais dire à Python.Bah écoute.Tu me prends ça tu me les rapproches.Tu me dis.Tu me dis tel produit.
00:04:50 :Et dans l'autre fichier en face il y a ça qui ressemble.L'autre fichier il y a tel produit qui ressemble.Voilà.Donc moi c'est ce que j'avais fait pour mon boulot.
00:04:57 :Donc par contre j'avais fait ça sur.Là il y a 20 lignes 50 lignes.Sans mentir c'est véridique.J'avais fait ça sur plus de 10 000 lignes.
00:05:06 :Avec un fichier Excel.Donc le script il tournait.Pendant.20 secondes je crois.Le script il faisait 20 secondes à.À tourner.Jacques-Claude Baptiste.Est-ce qu'il arrive à rejoindre.
00:05:23 :Nickel.C'est bon je crois.Salut Baptiste.Ouais t'es là c'est nickel.Salut salut.Ouais du coup avant on parlait de TinyDB Baptiste.Je sais pas si t'es sur TinyDB.
00:05:43 :Je l'ai mis dans le chat.Je sais pas si tu le vois vu que tu viens d'arriver.Ouais.Nickel.Ouais ouais c'est ça.C'est un JSON.
00:05:52 :Je sais pas comment expliquer ça.Un JSON amélioré.On est entre la base classique.Et le JSON quoi.Du coup je disais.Bah je vais reprendre là.
00:06:04 :Je viens juste de commencer.Ce que je voulais faire.Ouais voilà c'est ça.C'est ça.C'est un peu le truc ouais.Ça te donne en plus des méthodes.
00:06:13 :Un peu à la façon de base de données quoi.Et puis tu gères ça avec un JSON derrière.Je sais pas si j'en fais évoluer la ligne d'ailleurs.
00:06:21 :Et du coup là ce soir.Je parlais de TinyDB.Mais en fait on va pas faire ça du tout.C'était juste parce qu'on parlait.Parce que Jérémy a fait un projet de Django.
00:06:29 :Mais avant il l'avait fait avec GDLan.Donc ce qui est vachement intéressant d'ailleurs.Parce que du coup de Jérémy.T'as dû en taper des lignes de code.
00:06:38 :Oui énormément en fait.J'avais vraiment besoin.Pour te comprendre avec les views.Les templates.Vraiment pour apprendre c'est le lien.Pour voir la fluidité en fait.
00:06:51 :J'avais le cerveau qui surchauffait quand même.Ah tu m'étonnes.Ok bah nickel.C'est cool.Et donc pour la petite histoire.C'est parce que du coup à Jérémy.
00:07:04 :Je viens de lui envoyer cet après-midi.J'ai forké son projet.Et je lui ai envoyé une pull request.De je sais plus.Il y a 400 lignes de code différentes.
00:07:12 :Et du coup le pauvre.T'as de quoi lire là.C'est énorme.Je viens de parler.Mais je pense que les pull request.Il y a de quoi les analyser.
00:07:20 :Avec copilot je pense.Faut la regarder.Ça pourrait t'aider à faire un résumé.Je pense.Après moi je t'ai fait un résumé de toute façon.
00:07:28 :Dans le résumé de la pull request.Oui j'ai vu en fait.Nickel.Du coup pour Baptiste.Qui est arrivé.Je disais.Je reprends le contexte.
00:07:39 :J'avais.A mon ancien boulot.Dans le commerce.Un fichier.Où il y avait des articles.Qu'on pouvait commander.En gros.Dès qu'on commandait.En fait.
00:07:50 :Nous.Ça nous renvoyait.En gros.Plus commandable.Et on avait un deuxième fichier.Qui arrivait.D'une autre base de données.Où ça on vous disait.
00:07:58 :Vous pouvez commander tout ça.Sauf que le problème.C'est que.Il n'y avait aucun rapprochement.Entre les deux.Et il y a quelqu'un.Il y a ma directrice.
00:08:05 :Qui venait me voir.Et qui me disait.Est-ce que tu veux prendre ce fichier là.Et à côté.Tu vas noter.Tout ce qui ressemble.
00:08:11 :Qui pourrait ressembler.A ce qu'il y a ici.C'est véridique.Et moi.A l'époque.Je faisais du Python.Et là.Je lui ai dit.Non.
00:08:23 :Attends.Tu me laisses.Je ne sais pas.Une matinée.Il y a moyen de régler ça.Assez vite.Et c'est même les chefs de rayon.
00:08:30 :Qui vont se débrouiller.Je vais leur faire une application.Ils vont.Uploader ce fichier là.Celui-là.Ils vont l'uploader aussi.Et à la fin.Ça leur sortira une synthèse.
00:08:38 :Voilà.Et.Je ne connaissais pas.Disclip à l'époque.Mais je me suis dit.Ça doit exister.C'est possible.Donc.Je me suis dit.Allez.Je vais chercher.
00:08:49 :Du coup.On a parlé au mentorat.Mardi.La semaine dernière.Je me suis dit.Je vais aller chercher.Une librairie.Qui fait de la fichière.
00:08:57 :Tac.Et donc.J'étais tombé là-dessus.Donc.Bien sûr.Pas directement.Parce que je ne sais pas comment faire.Donc.Sur Disclip.Et.Bref.Ça m'a fait le.
00:09:09 :Ça faisait le boulot.Et.Je regarde quelque chose.Ah.Ce que je t'ai envoyé.Ça y est.C'est un exemple.C'est que.J'ai utilisé ça.
00:09:18 :Et en fait.Tout mon skate.Il tourne autour de ça.C'est.C'est cette fonction là.Qui fait.Et donc.Pour ça.J'ai créé une classe.
00:09:27 :Tac.Donc.Je vais reprendre un peu.Ce que j'ai fait à l'époque.Donc.On va pas faire comme ça.On va faire.Ouais.Vous voyez.
00:09:36 :Assez.Je pense là.On va se faire un fichier.Je l'avais appelé un truc.Genre.Matchinator.Tac.Pour matcher.Voilà.Et donc.C'est parti.Donc.
00:09:48 :Le fichier Excel.Euh.Je suis bien dans mon V1.OK.Donc.Déjà.Euh.Difflib.En fait.C'est une librairie standard.Mais.Il fallait installer.OpenPyXL.
00:10:01 :Pour le fichier Excel.Parce que.J'ai testé plusieurs choses.Pour le fichier Excel.Il y en a d'autres.Dans KXX.Il y a même des payantes.
00:10:08 :Je crois.Des payants.Il me semble.Mais OpenPyXL.C'est une librairie complète.Donc.Là.Je vais importer.Donc.OpenPyXL.Importer.Difflib.Alors.Lui.Par contre.
00:10:23 :Il va me faire ce qu'il veut.Je pense.Ouh.Le taux.Il est bientôt à tard.Euh.Difflib.Et.Euh.Ça me paraît pas mal.
00:10:33 :Sauf que.Difflib.Je.Difflib.Je ne sais plus.Une fonction.Hop là.Euh.J'ai un repo.Qui est en public.Sur mon.Profil.Il s'appelle.
00:10:47 :Streamlit tools.Le projet.Tac.Voilà.Et donc.Je me suis dit.Il faut que je fasse une classe.Qui va.Qui aille m'ouvrir.En fait.
00:10:57 :Ces deux fichiers.Qui m'extrait les données.Donc.Euh.J'ai extrait.Dans une liste.En France Français.Une liste.Et à chaque fois.Du coup.Je faisais.
00:11:08 :Matcher cette liste.D'un article.Que j'avais.Dans la liste.Des produits.Qui étaient plus commandables.Avec les articles.En fait.Qui ressemblaient.Qui étaient semblables aussi.
00:11:18 :Donc.En gros.Euh.Tac.Ça vous paraît clair.Pour l'instant.Ou pas.Ou.Peut-être que.Je suis un peu.Dans mon jargon.Commerce.Quoi.Est-ce que ça va.
00:11:32 :Ou pas.Oui.Ouais.Je.Des fois.Professionnel.C'est vrai que.Il y a peine six mois.Donc.Si des fois.Je parle un peu dans mon coin.
00:11:43 :Donc.Nickel.Donc.J'avais créé.Parce que.J'aimais bien.Des petits mots marrants.Euh.Un matchinator.Donc.Pour faire matcher un petit peu.Les fichiers Excel.
00:11:55 :Euh.Je me suis dit.Comment je vais faire.Donc.Donc forcément.À la base.Je me suis dit.Donc.Hop.Je vais me créer un constructeur.
00:12:05 :Tac.Et en fait.Mais en fait.À l'époque.Je n'avais pas.Je n'utilisais pas d'IA.Puis au boulot.Pour avoir Internet.C'est un petit peu chiant.
00:12:14 :C'était une galère.Par contre.Je pouvais passer par PID.Et je pouvais installer ce que je veux.Ça passait.Par contre.Pour aller sur Internet.
00:12:21 :C'était chiant.Donc.Il y avait un peu du feu maison.Et tout.Donc.Je n'avais pas le choix.Que de réfléchir par moi-même.Et l'IA n'était pas trop présente pour moi.
00:12:29 :Et en fait.C'est parti sur le fait.Et je me suis dit.Bon.Bah.Euh.C'est bien de faire ça.Mais là.C'est juste pour s'y retrouver.
00:12:38 :Pour l'exemple.Je me suis dit.Bah.Je vais prendre le fichier.Au lieu de l'appli fichier.Fichier en rejet.Je vais appeler 5.1.Ça suffit.
00:12:46 :Fichier de rejet.Donc.Je vais avoir le premier fichier.Et je vais avoir.Du coup.Le deuxième fichier.En constructeur.Voilà.Donc.Je ne sais plus.
00:12:56 :Je l'avais appelé.Mon constructeur.Je l'avais appelé.Genre.Ici.J'avais mis un truc.Genre.Je rejette.On va.Le nommer comme ça.File.20.Au moins.
00:13:09 :Pour l'exemple.Ce sera parlant.Ici.J'avais File.50.Voilà.Et.Après.Je me suis dit.Par contre.Le problème.C'est qu'il y avait plusieurs chefs de rayon.
00:13:21 :Dans la boîte.Ou directeurs.Ou même.Ce qui.Qui voulaient.Qui avaient accès aux applications.Et du coup.Le problème.C'est que.S'ils créent un fichier.
00:13:31 :Je voulais que le nom soit unique.Et je voulais savoir.Ça me paraissait pas mal.Et puis là.C'était parti.Je me suis dit.Donc.
00:13:41 :Forcément.Les noms sont un peu cons.Je suis d'accord.Mais c'est pour l'exemple.Comme je disais tout à l'heure.Tac.7.20.Tac.7.50.J'ai fait un truc comme ça.
00:13:55 :J'avais mon.User.Ici.7.User.Donc.J'avais un truc comme ça.Et.Et à l'époque.J'avais un mentor.Pardon.J'avais plusieurs mentors.J'avais Thibault.Et j'avais en plus.
00:14:09 :À l'époque.Il y avait son appelé.Sur Docstring.Des.Des événements.Comment on appelle ça déjà.J'ai plus le nom.Absolute skill.Voilà.Et en fait.
00:14:19 :C'est sur différents.Sur différents.C'est sur différents.C'est sur différents.C'est sur différents.C'est sur différents.C'est sur différents.C'est sur différents.C'est sur différents.
00:14:28 :C'est sur différents.Sur différents.fficiers.Et une fois.C'était important.Sur différents différents projets réalisés.C'était gratuit.C'était gratuit.En avait pour tout le monde.
00:14:37 :Et puis donc.J'avais un mentor.Et et une fois.On parlait en disait.Pourquoi tu ne m'écrivais pas directement.Ici en en attribut.Reswater.Le fichier ou mettre le chien au.
00:14:48 :Je me met.Tu mets une méthode.Il va à tout retourner.En fait.Le fichier chargé.OK pourquoi pas donc.Je me décrui et je fais.
00:14:58 :Bon bah.C'est parti.Et là.Je me suis dit.Bon bah.Comment je pourrais faire.Donc.Je me suis dit.On va faire un load.
00:15:07 :Et à la base.Je me suis dit.Ouais.Donc.Faire un.Une méthode par fichier.Donc.Forcément non.Maintenant.Ce n'est pas évident.Mais à l'époque.
00:15:18 :C'est débutant.On va utiliser.Un paramètre.Donc.On va prendre.Le nom du fichier.Et là.On va se faire un.Pour ceux qui se souviennent.
00:15:27 :On peut.Charger un fichier.Voilà.Donc.Qu'est-ce que j'ai fait.Non.J'ai pas envie.Tac.Le fichier en question.Et.Je.Par sécurité.Dans mon boulot.
00:15:40 :Tout était sur le.Comment dire.Le premier.Comment on appelle ça.Sur un.Un fichier Excel.Alors.Je vais l'avoir avec la méthode.Un worksheet.
00:15:49 :Voilà.Désolé.Hop.Et donc.Je l'ai récupéré.Comme ça.Tout le monde est à l'aise.Avec Excel ici.Ou pas.Quand je parle.De.Worksheets.
00:16:01 :De feuilles.De classeurs.Ou.Oui.Oui.Dites-moi.En gros.En fait.Au cas où.Si.Il y en a.Qui ne sont pas.Juste pour visualiser.
00:16:14 :Tac.Là.J'ai mon classeur.On ne voit rien.C'est un petit.J'imagine.C'est génial.Tac.Et en fait.En dessous.On a les feuilles.Les sheets ici.
00:16:26 :Donc.On peut avoir plusieurs feuilles.Et donc.A chaque fois.Moi.J'étais sur la une.Donc.Au moins.Je faisais.Un index.Zéro.Comme ça.
00:16:38 :J'avais ce que je voulais.Bref.C'était assez facile.A extraire.A ce niveau là.Tac.Ok.Donc.J'étais sur l'extraction.Voilà.Donc.Sur l'extraction.Mon fichier.
00:16:51 :Et là.Je me suis dit.Hop.On va charger.En fait.Les méthodes.On va les faire travailler.Directement.A l'ouverture du fichier.Donc.Ici.
00:17:02 :Je prenais mon.File.20.Tac.Et là.Ici.Load.Load.Ici.Tac.Et mon file.A l'époque.Moi.C'était.Reject.C'est commandable.Voilà.Action.Et loser.
00:17:21 :Forcément.Je préfère une méthode pour transformer mon utilisateur.Euh.Voilà.Après.La question que j'avais.En fait.C'était.Comment je vais les faire pour extraire les données en Python.
00:17:32 :Euh.Parce que.Pour DFLIB.Fallait.J'envoie une liste.Ou.Voilà.Une structure Python.Et donc.Pour l'instant.Il n'y a pas de questions.Je regarde sur le chat.
00:17:44 :Ça va.Pour l'instant.Oui.Ok.Donc.Bien pensé.Donc.On a vraiment de vrais débutants ici.Mais.Ça.S'il y a des gens.Enfin.Qui débutent souvent.
00:17:57 :Je suis étonné.Il s'est.Alors.C'est vrai que.Bah.Je l'ai fait moi à l'époque aussi.Mais.On peut très bien charger en attribut ici des méthodes.
00:18:05 :Que l'on a dans nos.Nos classes.Et à la limite.Si je voudrais être plus propre.Ici.Je pourrais dire.Faire une méthode privée quoi.
00:18:12 :Voilà.Euh.Puisque.Cette méthode là.Elle n'est pas faite pour.Être utilisée à l'extérieur de la classe.Elle est faite vraiment pour les.Pour nos.
00:18:20 :Pour nos attributs.Donc.On va laisser comme ça pour l'instant.Je ne sais pas si on va laisser comme ça.Mais je pense que pour moi.
00:18:25 :Pour l'instant.Ça devrait être une méthode privée.Euh.Donc.Voilà.Euh.Ensuite.Je me suis dit.On va aller.Enfin.On va extraire ça.Les données.
00:18:37 :En fait.Sous forme d'une liste.Ce qui me paraissait le mieux.Puisqu'il me fallait.En fait.Le nom des produits.Et encore.Moi.À l'époque.
00:18:46 :Là.Je simplifie.Pourquoi.Parce que j'avais.Ouais.Parce qu'il me fallait en plus le nom.Il me fallait le code barre.Je crois.Non.Là.
00:18:57 :Il me fallait que le nom.Mais c'est celui-là qui me fallait le code barre.Alors.Du coup.J'avais un peu galéré.Euh.Au niveau des structures.
00:19:04 :Bref.C'était un bon exercice.Et donc.Je me suis dit.C'est parti.On va.Euh.Se créer du coup.Une liste.Euh.Avec.Je crois qu'à l'époque.
00:19:16 :J'avais vraiment appelé comme ça.Mais il me semble que j'ai installé dans le genre.Euh.Donc.Là.On va le nommer.Ouais.Ouais.From column.
00:19:25 :Bon.C'est pas flexible de le faire comme ça.Mais.Non.On va laisser comme ça.Enfin.Le nom.Il n'est pas.Il n'est pas génial.
00:19:34 :Je ne l'avais pas nommé comme ça.Je pense.Ça me paraît trop.J'avais fait.Create list.From.Excel file.Dans le genre.Là.On va laisser comme ça.
00:19:44 :Au moins.C'est parlant pour nous.On va mettre.Notre fichier Excel.Et on sera.Ça sera la colonne A.En tous les cas.Donc.On va mettre A.
00:19:53 :Donc.Même si en vrai.On ne ferait pas ça.C'est vraiment juste pour l'exemple du mentorat.Donc.On sait qu'on va chercher ça dans le.
00:19:59 :Dans le.Dans la colonne A.Et du coup.Je me suis dit.Hop.Eh ben.Il va nous falloir du coup.Notre feuille de calcul.
00:20:07 :Voilà.Tac.Et donc.Là.Je me suis dit.Eh ben.Je vais aller faire une autre.Un autre attribut.Ici.Hop.Je me suis dit.
00:20:18 :Il va me falloir du coup.La liste des fichiers.Qu'il y a en rejet.Tac.Donc.Là.On va avoir ici.Notre.Notre.Meta qui.
00:20:28 :Qui transforme ça en liste.Voilà.Tac.Et là.Ça va être.Pareil.Pour.En dessous.Hop.Tac.Et.Euh.J'ai pas fait les 50.OK.
00:20:42 :Et là.Euh.Et là.Du coup.Je prenais mon.J'ai même pas fait.Si mon file.Euh.Attends.Tac.File.J'ai mon shit qui change.
00:20:54 :Mon file va.OK.Là.OK.C'est bon.Est-ce qu'ils ont le même nom.Ouais.C'est bon.Mon file 50.Et donc.Voilà.Donc.Là.Je faisais ça.
00:21:08 :Qu'est-ce qu'on va faire.Du coup.Le but.Euh.Désolé.Je tipe pas.Mais bon.On va récupérer une liste.Ici c'est des fichiers.Euh.On va récupérer des fichiers.
00:21:19 :Là on aura des listes.Et là on aura une somme de caractères.Et donc.Comment je faisais.Donc.Avec OpenPyXL.En fait.Ça c'est.Euh.
00:21:28 :Ça c'est.Euh.C'est assez facile.On l'a vu l'autre fois.Tac.Je vais directement return.Ici.Donc.On va faire une compréhension.On a cherché dans les cellules.
00:21:38 :La valeur.Hop.Donc.Pour chaque cellule.Ici.Dans le classeur.Et.On a cherché la colonne A.Voilà.Et on va se mettre une condition par sécurité.
00:21:48 :Ici.Hop là.Mince.Ici on a une valeur.Tac.Donc.Comme ça.Au moins.On récupère toutes les valeurs.Du coup.De notre colonne A.
00:21:59 :Hop.On la parcourt.Et on l'a extrait ici.Donc.Ça.Euh.Maintenant.On a déjà une bonne chose de faite.Et le but maintenant.C'est.
00:22:09 :Je m'étais dit.Il faut que j'arrive à me créer un dictionnaire.Entre guillemets.Pour avoir.Euh.Le produit.Ici.Qu'on ne peut plus commander.Et à côté.
00:22:18 :Les produits qui ressemblent.Donc.À chaque fois le produit.Produit qui ressemble.Produit.Produit qui ressemble.Voilà.A cette suite.Et donc.Bien sûr.Après.
00:22:29 :On va l'interfacer.Extrêmement vite.Ça.Ça va être suffisant.Donc.On va l'interfacer.Extrêmement vite.Ça.Ça va être suffisant.Une.Une.Une structure.Un script.
00:22:42 :On va l'interfacer.Parce que.J'en avais marre de faire pour.Après.Prendre des fichiers.De faire un.Un play.Tac.Et donc.Après.On a le temps.
00:22:53 :Ça va.Tac.Je suis parti ici.Donc.On va se dire.Hop.On va faire un.Un create ici.Un match.Hop.Et.Comment on faisait.
00:23:05 :Donc.J'avais ici mon.Dictionnaire.Tac.Je l'ai créé.Donc.Surtout là.Pour ceux qui passent au Tosa.Quand on fait ça.On crée bien un dictionnaire.
00:23:15 :Pas un.Pas un set.Ça.C'est le piège au Tosa.Ils vont.Ils vont le faire.Ça.Vous allez avoir le droit.Ils vont vous dire.
00:23:24 :Quelle est une façon de créer un.Un dictionnaire.Ou un set.Je ne sais plus.Ils vont vous mettre ça.Donc.C'est basique.Mais.Donc.
00:23:34 :On crée ici.Un dictionnaire vide.Et là.C'est parti.On va boucler.Sur.Sur chaque item.Ici.Donc.Dans notre.Liste.De rejet.Et là.
00:23:47 :C'est parti.On va se dire.Donc.Ce qui va matcher.On va utiliser la fonction.Get cross-matched.Distrib.Et.Comment ça marche.On s'en a vu une fois.
00:23:57 :On va prendre l'item.Ici.Qui est plus commandable.A chaque fois.On peut le commander.On va prendre.La liste.Des produits.Qui sont commandables.
00:24:06 :Et on va lui dire.Ici.T'as le droit de me donner.T'as le droit de me donner.Jusqu'à trois correspondances.Et le cut-off.Ici.Par défaut.
00:24:14 :Donc.Alors.J'ai.Si on l'a vu aussi.Mais.Par défaut.Il est déjà de 0.6.Je ne l'ai pas explicite.Comme ça.On pourra le régler.
00:24:24 :Si on a besoin.Mais.C'est assez bien équilibré.Parce que du coup.Il y aura.60%.De correspondance.On va dire.Voilà.Donc.Voilà.Donc.
00:24:36 :On récupérait ça.Comme ça.Et là.Ce que je faisais.C'est que je récupérais.Mon match.Ici.Et je disais.Et bien.Mon item.Ici.
00:24:47 :Qui est plus commandable.Voilà.Et bien.Je vais.Ici.Mettre en valeur.Tout ce qu'il a trouvé.Hop.Et là.A la fin.Comme ça.
00:24:58 :On va avoir.On va avoir créé.Un dictionnaire.En fait.Avec toutes les correspondances.Hop.Et ça.Du coup.C'est juste.D flip.Qui me fait tout le boulot.
00:25:09 :Et en fait.Là.On a fini.80% du script.Parce que c'est.Ça qui fait tout.Quasiment.Sauf que là.J'avais un souci.Donc.Je m'en souviens.
00:25:20 :A l'époque.Je débuggais.Donc.J'appelais à chaque fois.Mes méthodes.Ainsi de suite.Je me suis dit.Mais en fait.C'est pas pratique.Et après.
00:25:30 :Du coup.C'est là.Où j'ai appris.A me dire.Enfin.J'ai entendu parler de Stream 8.Et là.Je me suis dit.En fait.Ouais.
00:25:40 :Je vais faire l'interface.Et puis.En plus.L'interface.Et en plus.Je vais.Me transformer.Sans fichier Excel.Est-ce que pour l'instant.C'est bon ?
00:25:50 :Ça va ?Ou pas ?Ou je vais être trop vite ?Ça va.Oui.Ça va.N'hésitez pas.Ok.Donc là.Pour l'instant.On y va au fur et à mesure.
00:26:02 :Donc.Vu comme ça au début.Ça part un peu abstrait.Mais.Si on décortique le truc.Au final.Il n'y a rien de.Il n'y a rien de très violent.
00:26:10 :C'est justement un script.Qui est assez simple.Au final.Quand c'est bien organisé.Et donc.A la fin.Je me suis dit.Bon.Je vais me créer un autre fichier Excel.
00:26:19 :C'est pour ça.Que la dernière fois.Mardi.La semaine dernière.J'avais montré.OpenPyExcel.Parce qu'ici.On va se créer.Ce qu'on appelle.Là.C'est un create.
00:26:30 :On va se faire un matchworkbook.Workbook.Et par contre.J'ai dû oublier un truc.Je pense.Est-ce que j'ai bien.Et voilà.Je m'en doutais.
00:26:38 :Et voilà.Tac.Ça.Ici.Je me suis dit.Pour mon match.Dit.On attribue.C'est beaucoup mieux.Hop.Voilà.Donc.Donc.Donc.Donc.Donc.Donc.
00:26:55 :Hop.Et donc.Voilà.Et donc.En fait.À chaque fois.Je lançais mon script.À partir du moment.Où je me lançais.Où j'initialisais.Avec des fichiers de 10 000 lignes.
00:27:07 :Et bien.Juste le fait d'instancier.Une instance.De cette classe.Matchinator.C'était un petit peu long.En fait.Le plus long.C'était pas.C'était d'instancier la classe.
00:27:17 :Je sais pas.Si c'est vous.Déjà arrivé.Mais.C'était vraiment.Pas plus long.Donc.Voilà.Donc.En fait.Le plus gros.Était fait.Ici.Après.
00:27:31 :Il fallait quand même.Tout réécrire.Dans un fichier Excel.Et donc.Avec.On va.Il fait.Convention d'OpenPageExcel.De la doc.On avait vu.L'autre fois.
00:27:42 :Tout expliqué.Moi.Je reprends un peu.Le même vocabulaire.Enfin.La même façon de faire.Au moins.Avec la doc.Je suis assez raccord.Et même.
00:27:52 :Donc.C'est.Moi.J'aime bien.Beaucoup.Me rapporter.À ce que je fais la doc.Donc.Ici.Mon workbook.Hop.Je veux dire.J'ai instancié.Ici.
00:28:06 :Un workbook.Je vais.Prendre.Comment dire.La.La.La sheet.Comment on appelle ça.La.On fait les calculs.Tac.On va vérifier les calculs.
00:28:18 :Ici.Et c'est parti.Donc.La ligne.Euh.On va partir.De la ligne.L'index et la ligne.Une.Je pense que ça me paraît.Pas mal.
00:28:29 :Sur mon exemple.Je reprends.Non.Dans la doc.Je dois faire un truc.Comme ça.Après.Je reprends.Mon.Fichier.Digitab à l'époque.Donc.J'ai fait un truc.
00:28:42 :Comme ça.J'étais sur mon.Mon gros index.En fait.Et le but.Ici.C'est de me dire.Donc.Pour mes items.Ici.Euh.Donc.Que j'ai récupéré.
00:28:55 :Dans mon.Dans mon matchdict.En fait.Donc.Je vais avoir les fiches.Les.Les enregistres plus commandables.Ici.Tout ce qui a matché avec.Voilà.
00:29:05 :Et.Donc.Forcément.J'ai utilisé.Euh.Voilà.Donc.Mon matchdict.Voilà.Il est là.Mon matchdict.Ici.Point.Items.Ici.Avec.En clé.Euh.Les fichiers.
00:29:24 :Non commandables.De la liste des 20 articles.Et en.En valeur.Tout ce qui est là-dedans.Qui correspond.Donc.Je récupère bien le fichier.Le.
00:29:33 :L'article non commandable.Ici.Tout ce qui.Pourrait correspondre.Et donc.J'étais parti là-dessus.Et là.Alors.J'ai fait un truc comme ça.Tac.Je suis parti sur mon.
00:29:44 :Archi.Et.Je me suis dit.Donc.Ce que je vais prendre.Je vais prendre.Ici.Je commence à la ligne.Une.Ici.OK.On va rester sur la colonne.
00:29:56 :Une.Et.En valeur.On va mettre.Euh.Notre.Euh.L'article qu'on a reçu à commander.Voilà.Et.Sauf qu'on va devoir ça.Du coup.On va le faire en.
00:30:09 :On va le faire en.Deux boucles.Du coup.Ouais.Et on va se dire.Si.On trouve.A chaque fois.Si on n'a pas.Ça ne sert à rien.
00:30:20 :Si on a une correspondance.Hop.On va reboucler.Donc.Pour chaque élément.Dans.La correspondance.Donc.Ce qui va être à chaque fois.Dans notre dictionnaire.
00:30:30 :Ici.Dans les valeurs.Donc.On va boucler sur les valeurs.On avait donc.On prend.La clé.Du dictionnaire.Et on prend les valeurs.Qui sont dedans.
00:30:40 :Et les valeurs.On reboucle dessus.Ça va.Du coup.Enfin.Je sais que je.Mais c'est bon.Pour l'instant.Sur le.Match.S.Attention.Quoi.
00:30:53 :Je dis.S.En bas.Sur.Match.Ah.Oui.Je n'ai pas fini.Pour ça.Là.Je suis.Encore.En train d'oublier.Du coup.Et.Il y aura.
00:31:09 :Il y aura.Donc.Dans le sens.Où.Dès que je trouve un élément.Dans les matchs.Et.Ce qui est matchable.En fait.Ils ont trouvé en correspondance.
00:31:19 :Donc.On va faire une certaine action.Par contre.Ici.Où il y aura bien un S.Où.Je vais dire.Une certaine chose.Comme là-haut.
00:31:29 :Mais je vais dire ici.Je vais dire ici.Puis.Donc.Je vais prendre.Ma ligne.On va donner l'index.La colonne.On va venir sur la colonne 2.
00:31:38 :Parce que la 1.Elle est apprise par la valeur.Et.Ici.Je vais mettre.Hop.Rien trouvé.Donc.Effectivement.Le but.C'est d'avoir.Dès qu'on trouve quelque chose.
00:31:50 :On va le mettre.Dans la colonne 2.Si on ne trouve rien.On le met dans la colonne 2.Mais on ne met rien trouvé.
00:31:55 :Quoi.Entre guillemets.Enfin.On met ce qu'on veut.Quoi.Genre un N.A.Ou un truc dans le genre.Est-ce que c'était ça ta question.Pas Jérémy.
00:32:04 :Ou j'ai mal répondu peut-être.Non.C'était ça.Très bien.OK.Nickel.En gros.Ça va être comme ça.Mais si du coup.Il faut penser à un truc.
00:32:15 :Alors.Je relis mon code.Parce que.Je récupère aussi.OK.Donc là.On a bouclé.Sur chaque.Item.On a les matchs.Voilà.Parce qu'on en récupère ça.
00:32:27 :OK.Oui.Donc.Oui.Voilà.Donc.Sur chaque colonne.On va bien réécrire ça.Chaque fois.Ce qui est non commandable.OK.Sur la colonne 1.
00:32:39 :On va récupérer.Tout ce qui est commandable.Donc.Ce qui est dans le deuxième fichier.Voilà.Donc.Du coup.Ici.Raw Index.Ce qu'on va faire.
00:32:49 :Euh.Ici.Parce que je décale d'une ligne.On va le décaler d'une ligne.Ouais.Ici.OK.On va faire ça.Donc.Vous allez voir la structure à la fin.
00:32:59 :Ici.On va décaler d'une ligne.Donc.On va être à la ligne 1.Ici.On arrive à la ligne 2.Pour ce qui match.Donc.
00:33:07 :Ici.On va avoir.De décalage.De ce qui est non commandable.Et en dessous.Tac.A côté.Ce qui n'est pas commandable.Donc.On va décaler ça.
00:33:17 :Et là.Ici.On va dire.Dans la cellule.Donc.Forcément.Là.Raw.On va mettre.Raw Index.On prend.La colonne 2.Et la valeur.
00:33:30 :Ça sera.Du coup.L'élément.Qui a été trouvé.Et du coup.Ici.Euh.Plus ou moins a 1.Donc on change de.On saute une ligne.
00:33:40 :Je vais réfléchir.Il est vite fait.Euh.Je regarde.Je sais pas.J'espère qu'il y a un effet de bord qui se produise ici.Je ne sais pas pourquoi.
00:33:49 :Euh.Bon.Raw Index.Ouais.Non.Ça devra aller.OK.Je pense que ça devra aller.Ouais.Ça devra le faire.Si quelqu'un voit une erreur potentielle.
00:34:00 :Il dit.On va essayer comme ça.Mais si quelqu'un a une idée.Il note.Et puis.Comme ça.Si j'ai une erreur.On va faire ça ensemble.
00:34:08 :Donc.Après.Le but.C'est de dire.Le problème.C'est que le fichier.Il faut le créer.Il faut avoir une valeur.Et j'avais plusieurs utilisateurs.
00:34:17 :Qui pouvaient.Se connecter.Genre.Ma directrice.Qui a forcément.Le même username.Et qui pouvaient me télécharger.Le fichier.Enfin.Créer un fichier.Qu'elle se gourait.
00:34:28 :Genre.Une seconde après.Et puis.Du coup.Bah.Ça met un peu le bazar.Donc.Et.Je disais.Donc.Comment on va faire.Donc.Je vais mettre ici.
00:34:41 :Le fichier.On va l'appeler match.Voilà.On va mettre un.Génial.Cell.User.Et après.En fait.J'avais.Donc.Forcément.On va mettre l'extension.XLSX.
00:34:55 :En Excel.J'ai bossé avec ça là-bas.Et je me suis dit.Vu que je veux que ça soit différent.Parce que moi.Les fichiers.Ils se nettoyaient.
00:35:02 :Mais pas tout de suite.Donc.Je vais rajouter.Un attribut.L'instance.Où je me disais.Bon.Allez.Hop.On va aller importer.Euh.Date.Time.
00:35:15 :Il est là.Date.Time.Tac.Donc.J'ai pris la date.Time.Ici.Et hop.Je me disais.Comme ça au moins.Il n'y avait pas de problème.
00:35:27 :J'étais sûr.D'avoir un fichier unique.A chaque fois.Date.Time.Point.Donc.La technique aussi.C'est de s'assurer.Alors.Mieux que ça.Vous pouvez.Euh.
00:35:40 :Non.U.U.Ce que je fais souvent.Avec Django.Donc.Il y a tous les idées.Ah.Il y a le 5.Je me fais gaffe.
00:35:50 :C'est récent ça.Bref.Je prenais souvent le 4.Au moins.J'étais sûr.D'avoir un fichier unique.Puisque ça me générait.En fait.A chaque fois.
00:35:59 :Une suite.De caractères.Uniques.Donc.Je faisais ça.Mais.Pour que ce soit.Plus.Facile.A retenir.Enfin.Je voulais savoir.Quand est-ce qu'ils ont fait le fichier.
00:36:12 :Au moins.Je prenais un date.Time.Et ce que je faisais ici.C'est que je disais.Eh.Ben.Je ne m'invêtais même pas.Parce que j'envoyais.
00:36:21 :En fait.Directement.Sans formatage.Je crois.Je faisais un.Hop.Donc.Vu que la.Springs.Transforme ça.En Springs.Hop.Comme ça.Au moins.J'avais un fichier unique.
00:36:36 :Donc.Là.J'avais le.Nom du fichier.Et forcément.Après.Alors.Comment je faisais.Je faisais.Alors.J'utilisais.Passe libre.Je faisais un passe.Mais je ne sais pas.
00:36:50 :Si il y aura besoin du coup.On va prendre.Passe libre.On va prendre.Passe libre.Et.On va l'importer.Directement.Hop.Avec.Passe libre.
00:37:01 :Ce que je faisais.Euh.Est-ce que je vais avoir besoin de.Passe libre au final.Voilà.Je vais le prendre.Ouais.Je vais le prendre.
00:37:09 :Et donc.Je faisais du coup.Mon file.Passe.Ici.Hop.J'utilisais.Je faisais un.Passe libre.Passe.Je prenais mon.File name.Donc.J'avais un.
00:37:23 :Un objet.Passe.Je pense.Que je pourrais en passer.Ce que.On va faire avec.On va faire sans.Euh.Hum.Je réfléchis en même temps.
00:37:33 :Ouais.On va se faire directement.Comme ça.Tac.Hop.Dans mon repo.Je crois que je faisais.Je faisais avec un.Je vais voir si ça passait.
00:37:42 :Avec un file name.Directement.Je pense qu'ils n'ont pas besoin de passe libre.Normalement.Voilà.Hop.Euh.Ça me paraît pas mal.Euh.Tac.On va retourner ça.
00:37:53 :Directement.OK.Euh.Hop.Là.Donc maintenant.En fait.Dans le.On va se prendre.On va aller dans le main.On va le tester un petit peu.
00:38:05 :Sans.Sans.Streamlit.Hein.J'aime pas ça.Voilà.Une ligne.C'est bien.Tac.Donc.On va importer ici.Hop.Un machinator.Import.Voilà.Donc.On va.
00:38:22 :On va.Import.Machinator.Ici.Donc.On avait quoi.Euh.Si on veut.Sauf que.Il s'appelle pas comme ça.Il s'appelle vin.Vin.Hop.Cinquante.
00:38:36 :Tac.Euh.Ah oui.J'ai une faute.Tac.OK.Nickel.Donc ici.A la fin.On a juste à appeler notre.Create match.Orgo.Qui normalement ça va être bon.
00:38:49 :Hop.M.Create.Orgo.On va voir si on a un plantage.On fait une erreur.Voilà.Ah.J'ai fait une erreur.Ah oui.Forcément.Euh.
00:39:01 :Ça n'a pas marché.Matchinator.Tac.Voilà.Hop.On recommence.OK.Donc.Là.En fait.Déjà.Euh.Normalement.OK.Je pense qu'il a réussi.Donc.Là.
00:39:18 :On voit que l'iPhone 15 Pro.Qui est dans ce fichier.De base.Euh.Je le rouvre.Voilà.Voilà.Le Pro Max.Ici.Il m'a trouvé.
00:39:28 :Les correspondances.Donc.J'ai bien le Max avec le.Un autre Ibelle.J'ai bien un autre 15 Pro Max.Donc.Là.Bon.Il y a un décalage.
00:39:37 :En fait.Donc.C'est bien ça.Tac.Tac.Tac.J'ai celui-là qui correspond à ça.Ça.Ça.Celui-là avec ça.Ça.Ça.Donc.C'est pas très grave.
00:39:51 :On pourra rajouter en plus une ligne vide.Enfin.Une ligne vide.Mais bon.Sur le principe.On y est.Donc.Est-ce que pour l'instant.Pour vous.
00:40:00 :Ça vous va.Ça.Ou pas.Jusqu'ici.Oui.Ça va.C'est intéressant.Nickel.Merci.Cool.Et donc.Bon.Voilà.On a créé le fichier.Ici.L'usure 1.
00:40:16 :Et avec la date et l'heure.Ici.Donc.J'ai toutes les correspondances à chaque fois.Le vivo X100.J'ai bien le.Find X.Il est un petit peu trop fermé ici.
00:40:24 :Ah non.J'ai eu peur.Il va avec lui.Le vivo ici.Il n'y a bien que les vivos.OK.Bon.Donc.Nickel.Ça marche bien.
00:40:34 :Sauf que maintenant.Forcément.J'avais la flemme que à chaque fois.Faut rajouter une ligne sur la colonne A en fait.Ouais.Je peux rajouter une ligne en plus.
00:40:44 :Si tu veux.Et.Au moins.Je peux rajouter une ligne là.Tac.Alors.Ça.Juste.Je vais l'effacer.Donc.J'ai bien ma classe qui est terminée.
00:40:55 :OK.Donc.Là.En fait.Sans passe libre.Ça marchait.Puisque j'ai le workbook qui gère ça.OK.Donc.Ça.C'est bon.J'utilise chaque passe libre.
00:41:07 :A l'époque.Je n'utilisais pas de passe libre.Je ne sais pas pourquoi.Du coup.On va le mettre efféché.Pour rien.Je pense que j'avais utilisé pour rien.
00:41:14 :OK.Bon.Euh.Je réfléchis en même temps.Désolé.C'est.Je me souviens que j'avais fait ça.J'avais fait différemment.Du coup.Maintenant.Le but.C'était d'avoir.
00:41:26 :Comme je disais.Quelqu'un.Enfin.Les.Tout le chef de rayon.Qui a accès à l'application.Donc.Là.Hop.Je me suis mis.Streamlit.Alors.Ceux surtout.
00:41:39 :Qui ont.Un.Un.Un.Alors.Ceux surtout.Qui ont.La version de Python 3.14.Je ne sais pas.Streamlit.Ne passe pas encore avec.Faut rester sur la 13.
00:41:51 :J'ai testé.Avant-hier.Hop.Donc là.J'ai streamlit.Et.Donc.Là.Euh.On fait.Comme on.Matchnet.Euh.Qu'est-ce qui me fait.Euh.Si.OK.C'est bon.
00:42:09 :Hop.Alors.Je vais le couper.Parce que.Non.Parce que.Dans ce pourcentage.Ça me saoule.Hop.Là.Matchnet.Et.On va apporter.Streamlit.Ah.
00:42:24 :Parce que.J'avais oublié.Ah.C'est pour ça.Match.Match.Net.Et là.C'est bon.OK.C'est bon.Hop.Alors.Je vais le couper.Parce que.
00:42:39 :Matheur.Et là.On va.Matheur.Voilà.C'est bon.Désolé.Euh.Eh.Maintenant.Ça fonctionne.Euh.Merci.Euh.Du coup.On va respecter la convention Streamlit.
00:42:55 :Et c'est parti.Et en fait.Là vous allez voir à quel point cela va aller.Très vite.On va avoir besoin de.Euh.Peut-être.Quinze lignes de code même pas.
00:43:03 :Donc.L'application.On va lui donner un titre.Quand on va se connecter dessus.On va lui dire on veut un titre.Donc.Ce n'est pas.
00:43:10 :Watchpix.Appelez-moi en montagneuh.Allez.Majeur mode.Sans bagazin montaine primeur.Ici.Tac.Et j'avais appelée.Hop.Et j'ai 203.Ici.Dessiner..Plus.Pourquoi je suis ça parce qu'avec que pétanque.
00:43:25 :Vous avez.Quoi que.C'est.Al.Cool.Et donc.J'avais.Couplat.Ici.Donc, enfin.On peut facilement décerner.Des petits.Euh.Ça n'a aucun intérêt.Voilà.
00:43:40 :C'était juste pour le fun.Pour mes collègues.Ici.Je leur avais dessiné un petit.Euh.Je leur ai fait un petit.Un petit tas de juste en dessous.
00:43:47 :Ok.Donc.Vraiment aucun intérêt.C'est pas.C'est.C'est juste comme ça.Et donc.Je leur ai fait un petit bouton.Ici.Je leur avais dit.
00:43:57 :Vous aurez.Un fichier pour applaudir.Hop.Les articles.En rejet.Et là.Ce qui marche.On vient.Extrait.Minute.C'est.Alors.Je vais le faire après.
00:44:10 :Ce que je vais faire là.Maintenant.Vous avez encore des minutes.Ou pas.Oui.Ok.Hop.Ok.Donc.C'est qu'ici.Du coup.Ils avaient bien un bouton.
00:44:22 :Pour pouvoir télécharger les fichiers.Sauf que.Moi.Je ne voulais pas.Qu'ils mettent n'importe quoi.Parce que.Ils avaient toujours.10 000 fichiers.Sur leur bureau.
00:44:31 :Et donc.Au moins.C'est pour ça.C'est bien.J'adore.Ceux qui sont prévus à tout.On peut leur dire.Le type de fichier.Hop.Et on va leur dire.
00:44:41 :On veut que du.XLSX.Moi.C'est ce que je voulais.À la base.Et si.Je relance.Et là.Ça me vient.Ici.Le fichier que je portais.
00:44:52 :Donc.Si vous pouvez mettre une liste.Ça ne portera plus leur fichier.Donc.Moi.Je voulais vraiment que du.XLSX.Hop.Avant.On n'avait rien.
00:45:02 :OK.Donc.Je vais m'activer.Maintenant.Vous avez compris le principe.On peut faire un bouton.Comme ça.En une ligne.Hyper facilement.Donc.Sur le principe.
00:45:13 :Je voulais avoir.Les.Commandables.Ici.Pareil.Un feuille upload.Et là.Je disais quoi.Donc.Je vais avoir.Ici.Les fichiers.Les articles.Commandables.Hop.
00:45:28 :Et là.C'est ce que j'ai fait.Pareil.Je voulais être type.À chaque fois.Et je leur ai dit.Vu que c'était toujours un même format.
00:45:36 :Ce fichier là.Il l'avait en fait.Sur une base.Sur un.On avait un.Espèce de.On avait un serveur.Où tout était en fichier Excel.
00:45:44 :Ce format là.Donc.En fait.Il n'y avait aucune raison.D'avoir un autre format.Et du coup.Ici.Je disais.Hop.Je veux que vous me rentriez.
00:45:54 :Ici.Votre.L'utilisateur.Tac.Et là.Je mettrais.Bon.Un truc.Ou genre.Votre nom.Et on pourrait d'ailleurs.Avoir un.On pourrait avoir.Un.Comme un.
00:46:09 :Une value par défaut.Mais ça.Je ne voulais pas.Donc là.En fait.Du coup.C'était à eux de les rentrer.Et.Ce que je faisais.
00:46:18 :C'est que j'obligeais.Du coup.À avoir tous.Les champs de rempli.Forcément.Parce que.S'il n'y avait pas d'users.Je ne voulais pas.Que le fichier génère.
00:46:27 :Donc je faisais.Si j'ai les fichiers de rejet.Si j'ai.Les commandables.Et surtout aussi.Du coup.Si j'ai l'utilisateur des renseigners.Après vous pouvez mettre n'importe quoi.
00:46:35 :Mais ce n'était pas le but.Ils étaient responsables.Entre guillemets.Je leur disais.Et bien c'est parti.On va générer.Le fichier Excel.Donc je disais.
00:46:43 :Hop.Pour le.Pour le fun et la classe.Je leur faisais un petit spinner.Ici.Avec.Avec Streamlit.Et hop.Je leur mettais.La science.
00:46:53 :Et.Ça.Arrive.Voilà.Et là je faisais.Du coup.J'avais créé mon fichier Excel.Donc je faisais quoi.Donc.Je faisais un.Donc.Là ici.
00:47:05 :Il va falloir que j'aille.Je vais faire mon fichier Excel.Du coup.Avec un machinateur.Un machinateur.Ouais.Je vais.Faire des actions.Je vais.
00:47:14 :Je vais.Je vais.Je vais.Je vais.Je vais.Je vais.Je vais.Je vais.Je vais.Je vais.Faire directement comme ça.Donc mon machinateur.
00:47:26 :Du coup ils avaient.Des rejets.Ouais.C'était comme ça les commandements.Forcément.Mec là ça desait comme ça.Je crois.J'ai rejet commendable user.Donc ouais.
00:47:35 :Five, user.Ça.User ici.C'était du coup.User.Voilà.Hop.Donc j'avais mon.Non c'est le truc.Je veux faire.Je faisais mon instance.Sauf que j'aurais pu directement faire un.
00:47:47 :Un.Un.Un.Un.Non c'est mieux de faire comme ça.Non.De toute façon je lui avais mis l'instance.Oui je n'ai pas le choix.
00:48:00 :J'ai réfléchis à ce que je pourrais faire.De plus.Non.On va faire comme ça.Hop.Ici.Si j'avais un fichier de créé.Entre guillemets.
00:48:08 :Hop.Je faisais un.Download bouton.Et qu'est-ce que je disais ?Hé beh.Ça va être votre fichier à.télé.chargé.Voilà.Et là c'est parti.
00:48:20 :C'est là où ça va être un peu plus chaud parce qu'avec StreamEat forcément on ne gèrepas ça comme on veut.On a les.Donc ici on va avoir les datas qu'on veut.
00:48:31 :On va faire un open ici de notre fichier.C'est ça.Et il le faut en bytes.Ici.Voilà.Et on va.Euh.Le lire.En même temps que c'est comme ça avec open.
00:48:47 :Open.On ouvre le fichier.On a le mode d'ouverture.Ici on fait le read.C'est ça.Et ensuite ici.Hop.Un fichier.Voilà.Sauf que.
00:48:58 :J'ai fait une connerie.Hop là.Je vais séparer un passage parce que là c'est le bordel.Tac.Hop.Hop.Ici.Le file name.Voilà.Ça sera mieux.
00:49:13 :File.OK.Sauf que là.Si je ne dis pas de conneries.Donc je suis en train de réfléchir à où ça peut planter.Donc.C'est qu'on retourne ici.
00:49:23 :Euh.On va bien créer le matchworkbook ici.Donc forcément je suis bien obligé de le.Euh.Non.OK.Donc il faut que je fasse euh.
00:49:36 :Différemment.Euh.J'ai mon.J'ai mon machinateur ici.Tac.Voilà.Machinateur.Math.Machine.Alors je réfléchis ici.Et donc le file en fait il faut bien que j'appelle ma méthode euh.
00:49:51 :Euh.Euh.Machinateur ici.Tac.Point.Create.Matchworkbook.C'est ça.OK.Voilà.C'est mieux.Hop là.Donc voilà.Donc on a vraiment le fichier qui serait.
00:50:05 :On retourne bien le fichier Excel.Et si je me souviens bien.Ici.J'avais un bug.Je vais essayer de le.On va essayer de le télécharger.
00:50:11 :OK.Donc.Le fichier.Des rejets.Non commandable.Et là.Gab.Et je pense que ça a planté.Bah là.Pourquoi il ne fait rien.Est-ce que j'ai un plan.
00:50:22 :Euh.Il file.J'ai un problème.Euh.Je vais essayer de le télécharger.OK.Donc.Le fichier.Des rejets.Non commandable.Et là.Gab.Et je pense que ça a planté.
00:50:35 :Bah là.Pourquoi il ne fait rien.Est-ce que j'ai un plan.Euh.Il file.J'ai un problème.Euh.Si quelqu'un arrive à le voir avec moi.
00:50:45 :Hum.Alors.Est-ce que j'ai un problème d'input.Euh.J'ai bien manqué.J'ai un text input ici.Si vous le voulez bien là.C'est un text input normal.
00:51:03 :User.Je vais dire rejet commandable user.OK.Euh.J'ai mon spinner ici.Il va peut-être faire sens si ça plante.J'ai mon machinator ici.Euh.
00:51:20 :OK.On crée notre workbook.Ici on a un fichier.On a le bouton de.Est-ce que je trouve bizarre.Ah si.OK.C'est bon.OK.
00:51:33 :Il nous a créé.Il nous a créé à chaque fois.Et.Et.Il n'a pas créé le bouton.OK.Donc au moins ça marche.Et ça c'est exactement le problème que j'avais justement à mon boulot.
00:51:47 :Et c'est là que j'avais trouvé un truc pour pallier à ça.Euh.On va le faire en live hein.Donc.Ici je retourne directement au fichier Excel.
00:51:57 :Et en fait il ne fallait pas faire comme ça.Il fallait directement utiliser en fait une chaîne de caractère ici.Euh.Alors est-ce que j'allais faire.
00:52:08 :Est-ce qu'il fallait utiliser un pass libre.Hum.OK.Donc.Je fiche en même temps.Je faisais un workbook.Euh.Je pense que j'ai besoin de pass libre.
00:52:22 :On va apporter pass libre déjà encore là.OK.Donc peut-être que je faisais.Si.Si.Si.Donc j'ai bien mon file name.Et ici il me fallait un.
00:52:31 :File.Pass.Hop.Donc j'ai le pass libre.Point.Pass.Qui est très pratique.Ici.Hop.Mon objet passe ici.Et ici je faisais un.Workbook.
00:52:46 :Save ici.Euh.File pass.Tac.Et je faisais même un return.Un return directement.Je crois.Euh.Mince.Tac.Je ne sais plus si je faisais un return comme ça.
00:53:02 :On va essayer comme ça.Mais pour moi ça ne marchera toujours pas.Je pense.Je vais retrouver la technique.Parce qu'il y a.Il y a un truc qui voulait absolument.
00:53:09 :Et qui ne.Je vais le recharger.Hop là.OK.Je ne pense pas qu'il marchera comme ça en tous les cas.On va mettre le.
00:53:20 :Viens.50.OK.Il ne marche toujours pas.Mais je pense qu'il m'a créé le fichier.Voilà.OK.Il me semble bien.Qu'il lui.Il voulait.
00:53:34 :Euh.À la base.On est.Notre.Workbook 16.Et en fait.Il voulait qu'on lui retourne.Tac.J'avais galéré.Mais je vais y arriver.Parce que j'ai eu le cas plusieurs fois.
00:53:49 :Que.À Extreme League.J'ai bien mon file name.Mon file name qui est là.Mon file pass.Avec pass.Pass libre.Je sauve mon workbook.
00:53:57 :Et en fait.Ici.Ce que je faisais.Normalement.Ça marche comme ça.Hop.Il voulait enchaîner le caractère.Je crois que c'est ça.Et là.
00:54:06 :Si ça ne fonctionne pas.C'est que j'ai une erreur.Au niveau de Extreme League.Et pas au niveau de mon.Mon machinateur.Je pense.Et voilà.
00:54:17 :C'est bon.Donc là.J'ai bien mon fichier téléchargé.Je clique.Ici.Je vais là.J'ai bien.On voit forcément.On ne voit pas.Tac.Il est bien là.
00:54:30 :Mon fichier.Je peux l'ouvrir.Il n'y a pas de problème.Ça charge.Hop là.C'est bon.Bon.C'est petit.Mais.J'ai bien tous mes.Tous mes.
00:54:41 :Tous mes matchs.Ici.Donc voilà.Donc au moins.J'ai galéré.Comme à l'époque.Mais il faut savoir qu'avec.Quand vous faites un truc.Comme ça.
00:54:50 :Du coup.Si je retourne là.Ici.Alors.En plus.Ça me l'a créé en double.Donc ça.C'était un autre problème.Que j'avais réussi à résoudre.
00:54:59 :Mais au moins.Vous savez.Que du coup.Je peux retourner.Une chaîne de caractère.Voilà.Et voilà.Pourquoi il m'avait.Et du coup.Même.J'ai envie de dire.
00:55:10 :Je pense qu'on pourrait.Très bien ici.S'il retourne.Le file name.Directement.Voilà.Non.Peut-être.On va essayer.Avec le file name.Rapidement.Je pense.
00:55:22 :Que du coup.Il n'y a pas.Ah.J'ai un doute.J'essaie juste.Rapidement.Sinon.Je reviens en arrière.Et je vous montre.Avec.On recommence.
00:55:33 :Les vingt.Cinquante.Non.Ça fonctionne.Ok.Ça fonctionne.Nickel.Je ne vois pas pourquoi.Il y aurait besoin de passe libre.À l'époque.J'avais.Pour moi.
00:55:45 :Même si j'utilisais de passe libre.En fait.Il n'y en a même plus besoin.Enfin.Il n'y en a peut-être même pas besoin.À l'époque.
00:55:51 :Ça.Hop.Une ligne de moins.Un import de moins.C'est toujours mieux.Et donc.Là.Vous avez le problème.C'est qu'à chaque fois.J'avais un contrôle à.
00:56:01 :Très peu d'intervalles.Ok.Au nom de fichier.Ouais.J'ai.Très très peu d'intervalles.Donc.Ce qui se passait.Du coup.C'est que c'est un peu chiant.
00:56:11 :Parce que moi.Ça me pourrissait.En fait.Je partais les sacs.Mon PC.Et ça me pourrissait mon PC à chaque fois.Bien que j'avais un nettoyage que je faisais régulièrement.
00:56:18 :Du coup.Ce que j'avais fait.C'est que j'ai déjà parlé en Montaura.Il y a un truc.Qui est hyper pratique.C'est avec Streamlit.Vous pouvez utiliser.
00:56:25 :En fait.Ça s'appelle un cache.Genre.En gros.Et on va finir là-dessus.Hop.Donc.Là.Jérémy.Tiens.C'est pour toi ça.Un petit décorateur.
00:56:37 :C'est un petit décorateur.Et je m'étonne.Du coup.Ce décorateur.Il lui faut toujours une fonction.Forcément.On ne peut pas l'utiliser comme ça.À l'arrache.
00:56:45 :Donc.On passe tout dans une fonction.Puisqu'un décorateur.Prend.En argument.Une fonction.Donc.Je faisais un Create Workbook.Ici.Et en fait.Ce que je faisais.
00:56:56 :C'est que.En fait.Je prenais.Hop.Commandable.Ici.User.Hop.Et je faisais exactement.Ce que je faisais avec mon.Machinator.Machinator.Non.Je fais une faute.
00:57:10 :Machinator.Ici.On revient.Donc.On va.On va.On va.On va.On va.On va.On va.On va, on va.On va vendre.
00:57:23 :Donc.Ici.On vient de nommer.Hop.Et là.C'est parti.Hop.Les rejets.Les commandables.Utilisateurs.Ici.Et là.Je faisais un.Return ici.Mon machinator.
00:57:38 :Tac.Point.Create.Map workbook.Et en fait dans votre.Ici.Au niveau de votre spinner.Maintenant.Vous vous embêtez plus.Du tout.Hop.Et là.
00:57:52 :C'est.Votre fonction.Et en fait.Votre fonction.Tout ce qu'elle fait.C'est.Utiliser votre.Votre méthode.Sauf qu'en plus.Vous avez le décorateur.Qui va vous gérer le cache.
00:58:03 :Donc.Normalement.Si ça marche.Si ça marche.Tant mieux.Je m'arrête là.Euh.C'était localhost ici.Tac.J'ai qu'un seul fichier.Créé.Moment de vérité.
00:58:15 :Moment de bug.Je ne sais pas.Hop.Gab.Télécharge.Ok.Nickel.Donc là.Vous voyez.J'ai plus de fichiers.J'ai bien un seul fichier.Créé.
00:58:27 :Ok.Donc.Ça fonctionne.Euh.Je ne vais pas pouvoir.Mon pc.Je vais aller.Supprimer tout ce que j'ai téléchargé.Ici.Tac.Hop.Donc.Là.
00:58:40 :J'ai.J'ai.J'ai.Hop.Hop.Nickel.Ça fonctionne.Donc.Ici.Comme bien souvent.Extrême lit.Le cache.Hyper pratique.On va.On va mettre une surcouche.
00:58:55 :Sur notre classe.Pour utiliser le cache.En fait.Avec une fonction.Euh.Donc.Voilà.Euh.Est-ce que.Vous avez bien suivi.Est-ce que c'était.Vous avez trouvé ça sympa.
00:59:07 :Enfin.C'est vraiment une utilisation particulière.Euh.D'un script.Vraiment.Dommage.Pourquoi.Est-ce que quelqu'un peut.Oui.En plus est.Que l'identité.Est-ce que vous voulez que.
00:59:19 :Vous le.Mais aussi.Mais au moins.C'est du concret.Est-ce que ça vous a plu ou pas.Ou ça vous a pris des choses.Ou.
00:59:26 :Non.Ça m'a.ça m'a pris des choses.Je me referai après donc plus tard.Que je dois le refaire.Ça nous apprend des choses.Et puis ça.
00:59:33 :Après la tête nous a montré un cas concret.Que t'as fait toi.Mais on peut le.Transposer sur.Des cas que.Pas avoir à faire.
00:59:39 :Il y a plein.De sujets.C'est.Une mine d'or le truc.Donc voilà.Est-ce qu'il y a des questions ou pas.Merci Baptiste.C'est le plaisir aussi.
01:00:18 :Cool.Cool.Cool.Cool.Cool.Cool.Cool.Cool.Cool.Cool.Cool.Cool.Cool.Cool.Cool.Cool.Cool.Cool.Cool.Cool.C'est ma première fois.Donc la première fois.
01:00:40 :J'avais fait sur le.Sur le chat en fait.Je l'avais fait on va dire.C'est assez bien.Donc là ça.C'est cool.C'est vraiment une librairie qui est très cool.
01:00:47 :Streamlit.Donc.Après.Il y a des concurrences.Pas regarder.Après c'est encore autre chose.Taipei c'est autre chose.C'est plus balèze je trouve à utiliser.
01:00:55 :Et c'est fait.Puis c'est pas le même.C'est plus pour des pipelines ça en fait.C'est.C'est.C'est.C'est.C'est.C'est.C'est.C'est.C'est.C'est.
01:01:09 :C'est.C'est.C'est.C'est.C'est.C'est.C'est.C'est.C'est.C'est.Mais je trouve que là c'est orienté très très les gars et machine learning que streamlitc'est fait à la base pour tout ce qui est data et tout.
01:01:28 :Sauf qu'en fait streamlit on peut le décliner avec tout.Mais vraiment avec tout.Donc.Donc voilà.Nickel.Ecoutez.S'il n'y a pas de questions pour moi c'est OK.
Aucune occurrence trouvée pour « ».
00:00:22
Découverte de TinyDB (hors-sujet du jour)
00:04:12
Script avec openpyxl, difflib et datetime
00:41:33
Interface avec Streamlit
00:53:37
Modifier le retour du Matchinator
00:56:15
Utiliser le cache de Streamlit