Comment établir le classement des équipes de la Ligue 1 sur Excel ?

Guide « 108 astuces pour grands débutants sur Excel ! » Offert
Booster votre productivité en téléchargeant gratuitement votre ebook PDF des meilleures astuces pour les débutants et les pros d'Excel
Excel formation - 00 Astuces - 100
 

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 :

This site is protected by reCAPTCHA and the Google Privacy Policy and Terms of Service apply.
 

 

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 :

Excel formation - classement football - 01

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

Excel formation - classement football - 02

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() :

Excel formation - classement football - 03

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 :

Excel formation - classement football - 04

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 :

Excel formation - classement football - 05

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))

Excel formation - classement football - 06

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 :

Excel formation - classement football - 07

Appelons cette feuille « Classement » :

Excel formation - classement football - 08

Ensuite, nous pouvons saisir un titre en haut de la feuille :

Excel formation - classement football - 09

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 :

Excel formation - classement football - 10

  • 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] :

Excel formation - classement football - 11

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 :

Excel formation - classement football - 12

Ce qui permet de ne conserver chaque équipe qu’une seule fois dans la liste :

Excel formation - classement football - 13

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 :

Excel formation - classement football - 14

Il ne reste plus qu’à renommer l’en-tête de la colonne :

Excel formation - classement football - 15

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 :

Excel formation - classement football - 16

Puis nous y insérons la fonction SOMME.SI() :

Excel formation - classement football - 17

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])

Excel formation - classement football - 18

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 :

Excel formation - classement football - 19

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 :

Excel formation - classement football - 20

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 :

Excel formation - classement football - 21

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 formation - classement football - 22

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 :

Excel formation - classement football - 23

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 :

Excel formation - classement football - 24

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é) :

Excel formation - classement football - 25

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… :

Excel formation - classement football - 26

Dans le menu qui apparait sur la droite, nous pouvons ensuite cocher l’option « Abscisses en ordre inverse » :

Excel formation - classement football - 27

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… » :

Excel formation - classement football - 28

Nous commençons par réduire la largeur de l’intervalle afin d’épaissir les barres du graphique :

Excel formation - classement football - 29

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 :

Excel formation - classement football - 30

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 » :

Excel formation - classement football - 31

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 » :

Excel formation - classement football - 32

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.

Excel formation - classement football - 33

Et voilà, notre graphique est maintenant terminé… pour le moment :

Excel formation - classement football - 34

 

   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 :

Excel formation - classement football - 35

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 :

Excel formation - classement football - 36

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 :

Excel formation - classement football - 37

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 :

Excel formation - classement football - 38

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 » :

Excel formation - classement football - 39

Lorsque nous modifions le numéro de la journée, le titre du graphique va automatiquement s’adapter :

Excel formation - classement football - 40

À 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] :

 Excel formation - classement football - 41

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 :

Excel formation - classement football - 42

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) :

Excel formation - classement football - 43

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 :

Excel formation - classement football - 44

Dans la fenêtre qui s’affiche à l’écran, nous choisissons la macro evolutionClassement et nous cliquons sur le bouton [OK] :

Excel formation - classement football - 45

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 :

Excel formation - classement football - 46

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 :

Excel formation - classement football - 47

 

 

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 :

Excel formation - classement football - 48

À 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 :

Excel formation - classement football - 49

  • 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]+[-]) :

Excel formation - classement football - 50

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

Excel formation - classement football - 51

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 :

Excel formation - classement football - 52

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 :

Excel formation - classement football - 53

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 :

Excel formation - classement football - 54

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 « ;| » :

Excel formation - classement football - 55

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)

Excel formation - classement football - 56

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 :

Excel formation - classement football - 57

Après seulement quelques secondes d’attente, les résultats de la 38ème journée seront bien intégrés dans le tableau !

Excel formation - classement football - 58

 



Articles qui pourraient vous intéresser

Comment se protéger des macros infectées par un virus sur Excel ?
Comment obtenir le résultat d’une cellule située sur un autre classeur Excel ? Découvrons les références externes
Comment établir le classement des équipes de la Ligue 1 sur Excel ?
Comment faire une pause en VBA sur Excel ?
Comment savoir si un fichier existe dans un dossier en VBA avec Excel ?
Comment protéger ses macros VBA (limiter la consultation du code et le lancement) sur Excel ?
Les 6 bonnes habitudes qui facilitent le développement en VBA sur Excel
Les tableaux de données d'Excel
Comment créer nos propres objets VBA avec les classes personnalisées [#30 FORMATION EXCEL VBA COMPLETE]
Comment lancer des macros automatiquement avec les évènements VBA : Les objets Workbook [#31 FORMATION EXCEL VBA COMPLETE]
Comprendre et corriger les erreurs de VBA [#29 FORMATION EXCEL VBA COMPLETE]
Comment créer des commentaires de pro sur Excel

Contact - Plan du site - À propos - Contact

© Excelformation.fr 2018-2021 - Excel, simplement

Haut de la page

Excelformation.fr propose de nombreuses formations pratiques et gratuites sur Microsoft Excel : des cours pour apprendre à structurer et analyser les données, des tutos sur les fonctions avancées, les formules et les formules avancées d'Excel, les formules matricielles, les mise-en-formes conditionnelles, les graphiques Excel (xls, xlsx, xlsm,…). Des tutoriels pour apprendre à automatiser les tâches répétitives (via des macro-commandes en VBA) de vos classeurs Excel.