Supprimer le code html d’une cellule excel – VBA

Pour plein de bonnes raisons, dont un besoin de mises à jour en masse des données articles pour Prestahop, on peut avoir besoin de supprimer toutes les balises HTML d’une cellule Excel avant par exemple injection des données nettoyées dans une base de données. Le plus simple est d’utiliser les expressions régulières, en passant par une fonction VBA.
Dans Excel, en utilisant la combinaison de touches Alt + F11, vous accèdes à Microsoft Visual Basic, une fois l’application ouverte et afin d’utiliser la fonction décrite ci-dessous, il est nécessaire d’ajouter la référence « Microsoft VBScript Regular Expressions 5.5 » en passant par le menu Outils > Références.
Microsoft VBScript Regula rExpression5.5
Ensuite, il faut insérer un module, saisir le code suivant et l’enregistrer:
' ---
' SUPPRESSION DES BALISES HTML D'UNE CHAINE DE CARACTERES
' ---
'
Function SupprimerHTML(ByVal strHTML As String) As String
Dim re As VBScript_RegExp_55.RegExp

' Remplacement de certains caractères html
strHTML = Replace(strHTML, "é", "é")
strHTML = Replace(strHTML, "è", "è")
strHTML = Replace(strHTML, "à", "à")
strHTML = Replace(strHTML, " ", " ")
strHTML = Replace(strHTML, "’", "'")
strHTML = Replace(strHTML, "ô", "ô")

' On crée une expression régulière
Set re = New RegExp' On définit le critère qui cherche toute balise HTML
re.Pattern = "<\s*?[^>]+\s*?>"

' On fait en sorte que la casse (majuscules/minuscules)
' soit indifférente
re.IgnoreCase = True' Traitement global (récursif)
re.Global = True' La fonction Test renvoie True si la chaîne
' respecte le critère
SupprimerHTML = re.Replace(strHTML, "")
End Function

Ensuite, cette fonction peut être utilisée dans une feuille excel comme n’importe quelle fonction.

Ce code peut naturellement être enrichi, en particulier la zone où les caractères html sont remplacés. Je vous invite à me laisser vos commentaires en bas de la page, et je modifierai le code en conséquence.

Lecture recommandée:  Réduire la taille des fichiers PST

0 réponse sur “Supprimer le code html d’une cellule excel – VBA”

  1. Denis Grugeon dit :
    Votre commentaire est en attente de modération. Ceci est un aperçu, votre commentaire sera visible après validation.
  2. Denis Grugeon dit :
    Votre commentaire est en attente de modération. Ceci est un aperçu, votre commentaire sera visible après validation.

    GRAND MERCI !
    J’avais besoin de ça pour transformer un export de HTML en vue de l’importer dans Trello au format markdown (via Google Sheet et Zapier).
    Je n’avais « que » des balises « p », « ul », « li », « code » et « a » à gérer, ainsi que des sauts de ligne à ajouter.
    La seule limite est l’ordre du code qui ne correspond pas entre HTML et Markdown pour la constitution des liens, mais ça fait quand même le job.

    REMARQUE IMPORTANTE : les cellules XLS doivent être dévérouillées et permettre le retour auto à la ligne (à gérer dans le format des cellules)
    Voici mon ajout, en espérant qu’il sera utile à d’autres :

    strHTML = Replace(strHTML, «  », Chr(10) & Chr(13))
    strHTML = Replace(strHTML, «  », Chr(10) & Chr(13) & « – « )
    strHTML = Replace(strHTML, «  », Chr(10) & Chr(13))
    strHTML = Replace(strHTML, « <a href=", " ")
    strHTML = Replace(strHTML, "", " « `")
    strHTML = Replace(strHTML, "", "« ` ")

  3. Denis Grugeon dit :
    Votre commentaire est en attente de modération. Ceci est un aperçu, votre commentaire sera visible après validation.

    GRAND MERCI !
    J’avais besoin de ça pour transformer un export de HTML en vue de l’importer dans Trello au format markdown (via Google Sheet et Zapier).
    Je n’avais « que » des balises « p », « ul », « li », « code » et « a » à gérer, ainsi que des sauts de ligne à ajouter.
    La seule limite est l’ordre du code qui ne correspond pas entre HTML et Markdown pour la constitution des liens, mais ça fait quand même le job.

    REMARQUE IMPORTANTE : les cellules XLS doivent être dévérouillées et permettre le retour auto à la ligne (à gérer dans le format des cellules)
    Voici mon ajout, en espérant qu’il sera utile à d’autres :


    strHTML = Replace(strHTML, « », Chr(10) & Chr(13))
    strHTML = Replace(strHTML, « », Chr(10) & Chr(13) & « – « )
    strHTML = Replace(strHTML, « », Chr(10) & Chr(13))
    strHTML = Replace(strHTML, « <a href=", " ")
    strHTML = Replace(strHTML, "", " « `")
    strHTML = Replace(strHTML, "", "« ` ")

  4. Denis Grugeon dit :
    Votre commentaire est en attente de modération. Ceci est un aperçu, votre commentaire sera visible après validation.

    GRAND MERCI !
    J’avais besoin de ça pour transformer un export de HTML en vue de l’importer dans Trello au format markdown (via Google Sheet et Zapier).
    Je n’avais « que » des balises « p », « ul », « li », « code » et « a » à gérer, ainsi que des sauts de ligne à ajouter.
    La seule limite est l’ordre du code qui ne correspond pas entre HTML et Markdown pour la constitution des liens, mais ça fait quand même le job.

    REMARQUE IMPORTANTE : les cellules XLS doivent être dévérouillées et permettre le retour auto à la ligne (à gérer dans le format des cellules)
    Voici mon ajout, en espérant qu’il sera utile à d’autres :


    strHTML = Replace(strHTML, "", Chr(10) & Chr(13))
    strHTML = Replace(strHTML, "", Chr(10) & Chr(13) & "- ")
    strHTML = Replace(strHTML, "", Chr(10) & Chr(13))
    strHTML = Replace(strHTML, "<a href=", " ")
    strHTML = Replace(strHTML, "
    ", " ```")
    strHTML = Replace(strHTML, "
    ", "``` ")

Laisser un commentaire

Votre adresse de messagerie ne sera pas publiée. Les champs obligatoires sont indiqués avec *