Comment établir le classement des équipes de la Ligue 1 sur Excel ?
Vous avez déjà été nombreux à me demander sur l’espace des commentaires YouTube ou encore par mail comment automatiser la mise en place du classement des équipes du championnat de Ligue 1 sur Excel. Chose promise, chose due, c’est ce que nous allons voir dans ce tutoriel. Nous irons même un peu plus loin, en mettant en scène un graphique animé représentant l’évolution du classement au fil de la saison, ainsi qu’un système de récupération automatique des résultats des matchs écoulés.
Téléchargement
Vous pouvez télécharger le fichier d'exemple de cet article en cliquant sur le lien suivant :
Tutoriel Vidéo
Partie 1 : Comment établir le classement des équipes de Ligue 1
Partie 2 : Représentation graphique, journée par journée
Partie 3 : Animer le graphique
Partie 4 : Récupération des score automatique sur internet
1. Présentation
Et pour point de départ de ce tutoriel, nous allons partir d’un tableau de synthèse représentant les confrontations successives des équipes au cours de la saison 2020-2021 :
Dans ce tableau, nous retrouvons les informations suivantes :
- Tout d’abord le numéro de la journée,
- Puis le nom des équipes (tout d’abord l’équipe jouant à domicile, et ensuite l’équipe invitée),
- Et pour finir, nous retrouvons le score du match (tout d’abord le nombre de buts marqués par l’équipe jouant à domicile, et ensuite celui de l’équipe invitée),
2. Détermination du classement
2.1. Détermination du classement
Pour pouvoir établir un classement de ces équipes à l’issue des 38 journées, nous allons commencer par ajouter deux colonnes de calculs intermédiaires à la suite.
Dans ces colonnes, nous allons insérer les points obtenus par chaque équipe en suivant la règle suivante :
- Chaque match remporté permet d’obtenir trois points,
- Chaque match nul permet d’obtenir un point pour chacune des équipes,
- En revanche, aucun point n’est attribué lorsqu’un match est perdu
Pour commencer, nous allons calculer les points remportés par l’équipe jouant à domicile.
Un match est remporté lorsque le « Score domicile » est supérieur au « Score extérieur ».
Ce que nous pourrons analyse en utilisant la fonction SI() :
Lorsqu’effectivement l’équipe remporte le match, nous lui attribuons les trois points.
Dans le cas contraire, nous allons chercher à savoir si les équipes se sont quittées sont un match nul, et donc les deux scores sont équivalents :
Dans ce cas, nous pouvons attribuer un point à l’équipe, alors que dans le cas contraire, aucun point n’est inséré dans la cellule :
=SI([@[Score domicile]]>[@[Score extérieur]];3;SI([@[Score domicile]]=[@[Score extérieur]];1;0))
Comme vous pouvez le constater, la base de données étant sous la forme d’un tableau de données, il suffit de saisir la formule dans une des cellules de la colonne pour qu’Excel l’étende automatiquement à toutes les cellules de la colonne :
Ensuite, nous pouvons calculer les points gagnés par les équipes jouant à l’extérieur. La formule est alors la même que celle que nous venons de voir, il suffit d’inverser les cellules utilisées pour l’analyse des scores :
=SI([@[Score extérieur]]>[@[Score domicile]];3;SI([@[Score extérieur]]=[@[Score domicile]];1;0))
Le travail préparatoire étant maintenant terminé, nous allons pouvoir calculer les points obtenus par chaque équipe tout au long de la saison.
2.1. Synthèse des points obtenus
Pour synthétiser les points obtenus par chaque équipe, nous allons créer un nouveau tableau, sur une nouvelle feuille de calcul.
Pour ajouter une nouvelle feuille dans le classeur, il suffit de cliquer sur le petit bouton en forme de plus dans la barre des onglets :
Appelons cette feuille « Classement » :
Ensuite, nous pouvons saisir un titre en haut de la feuille :
La première colonne que nous allons insérer dans le tableau va permettre d’identifier les équipes du championnat.
Et pour la créer, nous n’aurons même pas besoin de saisir quoique ce soit :
- Il suffit en effet de sélectionner l’une des deux colonnes contenant les noms des équipes dans la base des résultats :
- Puis de copier ces cellules en appuyant sur les touches [Ctrl]+[C],
- Et de les coller à l’endroit souhaité, en appuyant cette fois-ci sur les touches [Ctrl]+[V] :
Ici, étant donné que nous avons repris la liste des équipes ayant joué à domicile, nous sommes certains d’avoir toutes les équipes du championnat.
Par contre, ces équipes vont se répéter...
Mais pas problème, pour supprimer les doublons, il suffit de se rendre dans le menu Données du ruban, puis de cliquer sur Supprimer les doublons :
Ce qui permet de ne conserver chaque équipe qu’une seule fois dans la liste :
Maintenant, nous pouvons transformer cette mini-base en un tableau de données, en sélectionnant l’une des cellules de la colonne, puis en nous rendant dans le menu Insertion > Tableau :
Il ne reste plus qu’à renommer l’en-tête de la colonne :
Et voilà, notre tableau est prêt à compter les points obtenus par chaque équipe.
Le plus dur est maintenant fait, pour compter facilement les points, il suffit en effet d’utiliser la fonction SOMME.SI(), qui permet de sommer les valeurs qui répondent à une condition passée en argument.
Pour commencer, nous insérons une nouvelle colonne « Points » en saisissant simplement le nom dans la cellule située juste à droite de l’en-tête de colonne :
Puis nous y insérons la fonction SOMME.SI() :
Cette fonction attend trois arguments :
- L’argument plage : permet de spécifier les coordonnées de la plage des cellules sur lesquelles nous voulons effectuer le test (il s’agira ici des cellules de la colonne Équipe domicile),
- L’argument critère : permet de spécifier la condition à vérifier pour effectuer la somme (le nom de l’équipe de la ligne sur laquelle nous insérons la formule),
- L’argument facultatif somme_plage : permet de spécifier la plage des cellules permettant d’effectuer la somme, si celle-ci est différente de la plage renseignée pour le premier argument (les points gagnés à domicile)
=SOMME.SI(_baseRésultats[Équipe Domicile];[@Équipe];_baseRésultats[Points domicile])
Ensuite, nous pouvons additionner à ce résultat le nombre des points gagnés à l’extérieur :
=SOMME.SI(_baseRésultats[Équipe Domicile];[@Équipe];_baseRésultats[Points domicile])+SOMME.SI(_baseRésultats[Équipe extérieur];[@Équipe];_baseRésultats[Points extérieur])
Maintenant que nous connaissons les points gagnés par chaque équipe au cours de la saison, nous pouvons établir le classement correspondant en utilisant la fonction RANG().
Cette fonction permet d’obtenir la position d’un nombre parmi un ensemble :
Nous souhaitons ici connaître le rang obtenu par chaque nombre de points parmi l’ensemble de la colonne « Points » :
=RANG([@Points];[Points])
Il ne reste alors qu’à classer la colonne en fonction d’un tri du plus petit au plus grand pour connaître le classement final du championnat 2020/2021 :
Bien entendu, il s’agit ici d’un classement très basique qui ne tient compte que des points liés aux victoires et matchs nuls. Pour être plus précis dans ce classement, nous pourrions tenir compte de la différence de buts…
3. Reporter les résultats de ligue 1 sur un graphique
3.1. Création du graphique
Maintenant que nous avons mis en place le classement des équipes dans un tableau de synthèse, nous allons voir comment générer un graphique, avec une animation représenter l’évolution des clubs au cours de la saison.
Et donc la première chose à faire, avant même de penser à la manière de l’animer, va être de créer le graphique.
Pour cela, nous sélectionnons les deux premières colonnes du tableau :
Puis, nous nous rendons dans le menu Insertion afin de choisir le type de graphique qui nous plait le plus, ici les barres groupées :
Excel nous insère alors le graphique sur la feuille de calcul, et la première chose que nous pouvons constater, c’est que tous les noms des équipes n’y figurent pas :
En revanche, si nous comptons le nombre de barres affichées, nous retrouvons bien les 20 barres.
En fait, Excel n’a tout simplement pas affiché tous les noms des équipes parce qu’il n’en avait pas la place !
Il suffit donc d’agrandir l’espace alloué au graphique :
Ensuite, pour mettre en forme rapidement le graphique, nous pouvons appliquer l’un des styles proposés par Excel, à partir du menu Création (menu qui n’apparait dans le ruban que lorsque le graphique est sélectionné) :
Ensuite, pour inverser l’ordre de présentation des données, et faire figurer le champion tout en haut, nous effectuons un clic-droit sur l’un des noms d’équipe > Mise en forme de l’axe… :
Dans le menu qui apparait sur la droite, nous pouvons ensuite cocher l’option « Abscisses en ordre inverse » :
Ensuite, pour mettre en forme les barres, nous effectuons un clic-droit sur l’une d’entre elles afin de sélectionner « Mettre en forme une série de données… » :
Nous commençons par réduire la largeur de l’intervalle afin d’épaissir les barres du graphique :
Puis dans le menu Remplissage et traits, nous cochons l’option « Varier les couleurs par point », ce qui permettra de faciliter la différenciation des différentes équipes :
Et pour en finir avec notre graphique, nous pouvons insérer des étiquettes sur chaque barre afin d’y faire figurer le nombre de points obtenus par chaque équipe.
Pour cela, nous sélectionnons le graphique afin de faire apparaître le bouton carré avec le symbole plus, et de cocher l’option « Étiquette de données » :
Nous sélectionnons ensuite l’une de ces étiquettes afin de faire apparaître le menu « Format des étiquettes » sur la droite de l’écran, et nous choisissons d’insérer les étiqettes sur le « Bord intérieur des barres » :
Ensuite, dans la partie Nombre, situé en bas du menu Format des étiquettes, nous allons mettre en place le format personnalisé « 0 "point(s)" » et cliquons sur le bouton Ajouter pour valider la modification du format de nombre.
Et voilà, notre graphique est maintenant terminé… pour le moment :
3.2. Choix de la journée
Maintenant que le graphique est bien avancé, nous allons devoir modifier le tableau de synthèse du classement afin de tenir compte de la journée actuelle.
De cette manière, nous pourrons remonter le cours de la saison en modifiant une simple cellule !
Nous allons donc nous placer sur une cellule inoccupé de la feuille de calcul, dans laquelle nous allons saisir le numéro de la dernière journée, c’est-à-dire 38 :
Ensuite, nous allons donner un nom à cette cellule, ce qui permettra par la suite de pouvoir l’appeler facilement.
Pour donner un nom à une cellule, il suffit simplement de saisir celui-ci dans la zone des noms, qui se trouve en haut à gauche de la fenêtre Excel :
Ici, nous appelons la cellule « journee » et nous n’oublions pas de valider en appuyant sur la touche [Entrée] du clavier.
Il ne nous reste alors plus qu’à modifier la formule permettant d’obtenir le nombre de points, en utilisant la fonction SOMME.SI.ENS() à la place de SOMME.SI().
En effet, nous aurons maintenant d’analyser deux critères avant de pouvoir effectuer une somme :
- Le nom de l’équipe tout d’abord, comme nous l’avons vu un peu plus tôt,
- Mais également le numéro de la journée
Il faut également se rappeler que la fonction SOMME.SI.ENS() inverse la position de la plage des cellules dans laquelle se trouve les valeurs à additionner : il s’agissait en effet du dernier argument de la fonction SOMME.SI(), qui devient le premier argument de la fonction SOMME.SI.ENS() :
=SOMME.SI.ENS(_baseRésultats[Points domicile];_baseRésultats[Équipe Domicile];[@Équipe];_baseRésultats[Journée];"<="&journée)+SOMME.SI.ENS(_baseRésultats[Points extérieur];_baseRésultats[Équipe extérieur];[@Équipe];_baseRésultats[Journée];"<="&journée)
Comme vous pouvez le constater, le critère qui permet de savoir quelles journées doivent être incluses dans la somme est le suivant : "<="&journée
Nous concaténons ici le symbole de comparaison « Inférieur ou égal » avec la valeur contenue dans la cellule « journee ».
Bien entendu, les résultats retournés par cette formule restent inchangés :
En effet, dans la cellule journée, nous avons saisi le numéro qui correspond à la dernière journée de la saison !
Il suffit alors de modifier cette valeur pour constater les modifications :
Il ne reste plus qu’à modifier le titre du graphique pour afficher le numéro de la journée.
Nous cela, nous insérons la formule suivante dans une cellule vide du classeur :
="Classement à la "&journée&"ème journée"
Puis nous nous rendons à nouveau dans le menu Création > Sélectionner les données :
Après avoir cliqué sur Modifier, nous venons renseigner les coordonnées de la cellule dans laquelle nous venons d’insérer la formule dans le champ « Nom de la série » :
Lorsque nous modifions le numéro de la journée, le titre du graphique va automatiquement s’adapter :
À ce moment-là, non seulement les résultats du tableau vont être modifiés, mais en plus cela va également impacter le graphique correspondant !
4. Animer le graphique
Notre graphique étant maintenant terminé, nous allons chercher à l’animer afin de représenter l’évolution des points obtenus par chaque équipe tout au long de la saison.
Pour cela, nous allons bien entendu devoir passer par le développement d’une petite macro-commande en VBA.
Mais pas de panique, pour que ce tutoriel soit accessible à tout le monde, nous allons revenir dans le détail sur aspect de cette dernière.
Si vous souhaitez aller plus loin dans la découverte du langage VBA, vous pouvez évidemment consulter la formation disponible sur le blog en cliquant ici.
Pour commencer, nous allons lancer l’éditeur de code VBE (pour Visual Basic Editor), qui est l’éditeur de code intégré dans les différentes applications de la suite Office et qui permet de développer des macro-commandes en VBA.
Pour cela, nous appuyons simplement sur les touches [Alt]+[F11] :
VBE s’ouvre alors et nous allons commencer par créer un nouveau module.
Un module est une feuille de saisie de code dans laquelle nous allons pouvoir saisir nos macros et fonctions.
Pour insérer un nouveau module, nous nous rendons dans le menu Insertion > Module.
Une fois le module inséré, nous allons pouvoir créer notre macro-commandes.
La première chose à savoir, c’est qu’une macro commence toujours par le mot-clé Sub, suivi du nom de la macro :
Ensuite, nous appuyons sur la touche [Entrée] du clavier, et Excel ajoute automatique la ligne « End Sub » qui représente la fin de la macro.
Tout ce que nous allons saisir entre ces deux lignes sera exécuté lorsque la macro sera lancée.
Comme nous l’avons vu dans la partie, pour faire bouger les barres du graphique, il suffit simplement de modifier la valeur saisie dans la cellule « journee ».
Et c’est justement ce que nous allons faire avec la macro evolutionClassement.
Pour cela, nous allons commencer par déclarer une nouvelle variable, que nous appellerons tout simplement i, et que nous allons typer en tant que Integer, c’est-à-dire en tant que nombre entier.
Pour déclarer une variable, nous utilisons le mot-clé Dim, suivi du nom de la variable et de son type :
dim i as Integer
Ensuite, pour passer en revue les 38 journées de la saison, nous allons utiliser une boucle For, que nous avons déjà eu l’occasion de découvrir dans le détail dans un tutoriel précédent.
Nous allons commencer par donner la valeur de 1 à cette variable, puis nous allons souhaiter que celle-ci augmente jusqu’à valoir 38 :
For i = 1 To 38
next
Il suffit ensuite d’affecter la valeur de i à la cellule journee :
Sub evolutionClassement()
Dim i As Integer
For i = 1 To 38
[journée] = i
Next
End Sub
Pour tester la macro, nous revenons dans la feuille de calcul, et nous allons y insérer un bouton (menu Insertion > Zone de texte) :
Une fois que le bouton est mis en forme (centrer le texte verticalement et horizontalement, et appliquer un Style prédéfini depuis le menu Mise en forme), nous pouvons lui affecter la macro-commande que nous venons de développer en effectuant un clic-droit sur celui-ci et en choisissant Affecter une macro :
Dans la fenêtre qui s’affiche à l’écran, nous choisissons la macro evolutionClassement et nous cliquons sur le bouton [OK] :
Il ne reste plus qu’à cliquer sur le bouton pour constater… que nous ne voyons rien changer !
En effet, Excel à lancer la macro-commande à sa vitesse maximum, qui est si rapide que l’affichage n’a même pas le temps de s’actualiser…
Pour ralentir l’affichage, nous allons devoir temporiser la macro en mettant en place une micro-pause, telle que nous l’avons déjà vu dans le détail au cours du chapitre dédié.
Nous avions alors vu que pour créer une pause d’une demi-seconde, nous pouvions utiliser la méthode suivante :
Sub pause()
Dim fin As Single
fin = Timer + 0.5
Do While Timer < fin
DoEvents
Loop
End Sub
Si vous souhaitez en savoir davantage sur cette méthode, n’hésitez pas à consulter le tutoriel dédié, en cliquant ici.
Ensuite pour mettre en place la pause, nous l’appelons de la manière suivante dans notre boucle :
For i = 1 To 38
[journée] = i
pause
Next
Nous pouvons maintenant cliquer à nouveau sur le bouton, et cette fois-ci le graphique va s’animer correctement !
Attention, un dernier petit rappel concernant les macro-commandes : pour pouvoir enregistrer celle-ci dans le classeur, il faut enregistrer le classeur sous le format *.xlsm !
Pour cela, nous pouvons lancer la fenêtre Enregistrer Sous en appuyant sur la touche [F12] du clavier :
Dans menu Type de fichier, nous choisissons alors le format « Classeur Excel (prenant en charge les macros)(*.xlsm) », puis nous validons l’enregistrement du fichier en appuyant sur le bouton [OK].
Nous pouvons ensuite constater que l’extension du fichier a bien été modifiée :
5. Récupération automatique des résultats
Comme nous l’avons vu dans les parties précédentes, les résultats utilisés proviennent du site maxifoot.fr : https://www.maxifoot.fr/calendrier-ligue-1-france.htm
L’avantage de ce site par rapport à la pléthore de ces concurrents qui proposent également les résultats de football, c’est qu’ici tous les résultats de la saison sont sur une même page, ce qui va grandement nous simplifier la récupération des données :
À partir de cette unique page, nous allons pouvoir automatiser la récupération des informations.
Bien entendu, ici nous disposons déjà de toutes les journées dans la base de données d’origine, étant donné que la saison est terminée, mais l’objectif sera bien entendu d’alimenter la base au fil des journées.
Nous allons donc commencer par supprimer la dernière journée :
- Nous sélectionnons les lignes dans lesquelles se trouvent les cellules correspondantes :
- Puis, nous effectuons un clic-droit dans la marge de la feuille de calcul pour cliquer sur « Supprimer » (nous pouvons également utiliser le raccourci clavier [Ctrl]+[-]) :
Ensuite, nous allons créer une nouvelle macro-commande en VBA pour récupérer automatiquement cette journée.
Nous revenons dans VBE, et nous créons la macro recuperationJournee à la suite de la macro pause :
Sub recuperationJournee()
End Sub
Pour commencer, nous allons demander à l’utilisateur de venir saisir le numéro de la journée que celui-ci souhaite importer.
Pour cela, nous utilisons l’instruction InputBox, qui permet d’afficher une zone de saisie, et nous venons stocker ce résultat dans la variable journee :
Dim journee As Integer
journee = InputBox("Quelle journée faut-il importer ?", "Choix journée")
À ce moment-là, nous pourrions effectuer un test pour contrôler la saisie de l’utilisateur. En effet, si celui-ci saisit autre chose qu’un nombre inférieur ou égal à 38, alors la macro-commande ne pourra pas fonctionner correctement :
If Not IsNumeric(journée) Then
MsgBox "Veuillez saisir un nombre"
Exit Sub
End If
Nous utilisons ici la fonction IsNumeric() pour savoir si la variable journée contient un nombre.
Lorsque ce n’est pas le cas, nous affichons un message à l’utilisateur et nous quittons la procédure.
Maintenant que nous savons quelle journée l’utilisateur souhaite importer, nous pouvons aller interroger le site web pour extraire les résultats de la journée.
Pour cela, nous commençons par créer deux variables :
- Une variable URL qui va permettre de stocker l’adresse exacte de la page internet,
- Une seconde variable HTML dans laquelle nous allons stocker le code HTML de la page, afin d’y extraire les informations qui vont nous intéresser
Dim URL As String, HTML As String
URL = "https://www.maxifoot.fr/calendrier-ligue-1-france.htm"
Pour récupérer le code source de la page, nous allons utiliser un objet dédié (il s’agit de l’objet « MSXML2.XMLHTTP » qui permet de communiquer avec un serveur HTTP) que nous encapsulons dans un With afin lui transmettre plusieurs instructions successives :
With CreateObject("MSXML2.XMLHTTP")
End With
Tout d’abord nous ouvrons la page web avec l’instruction Open :
.Open "GET", URL, False
Cette instruction attend ici trois arguments :
- Tout d’abord le type de requête à lancer : GET ou POST,
- Puis l’URL de la page à ouvrir,
- Et enfin le troisième argument permet d’attendre que la page soit correctement réceptionnée avant de continuer le déroulement de la macro
Pour récupérer le résultat de cette requête, nous utilisons la méthode Send :
.send
Et nous pouvons enfin récupérer le code source dans la variable HTML
HTML = .responseText
Pour tester la bonne réception du code source de la page, nous pouvons afficher la valeur de la variable HTML en utilisant un MsgBox :
MsgBox HTML
Comme vous pouvez le constater, nous avons récupéré l’ensemble du code source de la page, dont l’immense majorité de ce contenu ne va pas nous intéresser… Nous allons donc devoir mettre en place de nombreux retraitements.
Pour commencer, nous allons devoir réduire ce résultat au seul tableau des scores de la journée qui nous intéresse.
Et pour cela, nous allons devoir identifier un élément qui permet de repérer chacun de ces tableaux :
Nous pouvons alors constater que chaque tableau commencer par énumérer la journée : 36e journée, 37e journée, 38e journée, …
Dim positionDepart As Long
positionDepart = InStr(HTML, journée & "e journ")
Cette instruction nous permet de récupérer la position du premier caractère. Pour simplifier la manipulation, nous nous arrêtons juste avant l’accent du mot journée.
Nous pouvons ensuite supprimer tout ce qui se trouve avant avec la fonction RIGHT() :
HTML = Right(HTML, Len(HTML) - positionDepart)
Une fois encore, nous pouvons afficher le contenu d’HTML pour en vérifier le contenu :
Nous y retrouvons les balises propres au tableau HTML, que nous allons évidemment souhaiter supprimer, mais avant cela nous allons en exploiter certaines :
- Nous allons utiliser la balise </td> qui permet de marquer la fin des cellules, et que nous allons remplacer par des points-virgules,
- Ainsi que la balise de fin de ligne, que nous allons remplacer par une barre verticale,
- Et nous allons supprimer tous les retours à ligne
Les points-virgules et barres verticales nous serviront ensuite pour séparer chaque élément dans des tableaux de VBA. Nous y reviendrons très bientôt.
Pour effectuer ces remplacements, nous allons utiliser la fonction Replace :
HTML = Replace(HTML, "</td>", ";")
HTML = Replace(HTML, "</tr>", "|")
HTML = Replace(HTML, Chr(10), "")
Maintenant que nous avons exploité les balises qui nous intéressent, nous allons pouvoir supprimer les autres, en utilisant une fonction dédiée que nous allons créer en dessous de la macro :
Function supprimerBalises(texte As String) As String
Do While InStr(texte, "<") > 0
Dim debut As Integer, fin As Integer
debut = InStr(texte, "<")
fin = InStr(debut, texte, ">")
Dim balise As String
balise = Mid(texte, debut, fin - debut + 1)
texte = Replace(texte, balise, "")
Loop
supprimerBalises = texte
End Function
Dans cette macro, nous utilisons une boucle Do While qui va se répéter tant que des balises vont être identifiées dans la variable HTML (les balises sont identifiées par le symbole « < » au début).
Ensuite, nous recherchons la position de départ de cette balise avec la fonction InStr().
Nous répétons cette opération pour identifier l’emplacement de la fin de balise « > ».
À partir des positions de ces deux caractères, nous allons récupérer toute la balise, que nous pourrons ensuite supprimer de la variable texte (attention de prendre un caractère de plus).
Maintenant que la fonction supprimerBalises est prête, nous pouvons l’utiliser dans la macro principale :
supprimerBalises HTML
Voilà à qui ressemble maintenant la variable HTML :
Les données qui nous intéressent commencent maintenant à se détacher du reste.
Nous pouvons même constater une récurrence au début et à la fin de la liste des matchs : les caractères « ;| » :
Nous pouvons isoler la partie de texte située entre ces caractères en utilisant la fonction Split, qui va décomposer la chaîne en un tableau Array, duquel nous ne conserverons que la seconde partie, c’est-à-dire l’index 1 (ce qui nous permet de nous débarrasser de tout ce qu’il y a avant et après:
HTML = Split(HTML, ";|")(1)
Nous avançons !
Maintenant nous allons remplacer les tirets de séparation des scores par des points-virgules :
HTML = Replace(HTML, "-", ";")
Et supprimer le dernier caractère qui indique à tort qu’il reste une nouvelle ligne à la suite :
HTML = Left(HTML, Len(HTML) - 1)
Et voilà, il ne reste plus qu’à récupérer ces éléments pour les insérer dans notre tableau des scores !
Pour cela, nous utiliserons une boucle For… Each qui va nous permettre de récupérer chaque élément du tableau généré par la fonction Split(), que nous venons de découvrir juste avant.
L’élément de séparation que nous allons utiliser ici est la barre verticale, qui sépare chacune des lignes. :
Dim ligne As Variant
For Each ligne In Split(HTML, "|")
Next
Pour pouvoir afficher les informations dans le tableau, nous allons devoir connaître le numéro de la ligne qui se trouve juste en dessous de celui-ci.
Nous créons donc une nouvelle variable l, laquelle sera égale à l’addition de la première ligne du tableau et du nombre de lignes qui le composent :
Dim l As Integer
l = [_baseResultats].Row + [_baseResultats].Rows.Count
Et pour finir, il ne reste plus qu’à afficher les différentes informations de la variable ligne dans les cellules correspondantes du tableau :
Cells(l, 1) = journee
Cells(l, 2) = Split(ligne, ";")(0)
Cells(l, 3) = Split(ligne, ";")(1)
Cells(l, 4) = Split(ligne, ";")(2)
Cells(l, 5) = Split(ligne, ";")(3)
Nous pouvons maintenant tester la macro en appuyant sur les touches [Alt]+[F8] depuis la feuille de calcul :
Après seulement quelques secondes d’attente, les résultats de la 38ème journée seront bien intégrés dans le tableau !