Retirer code HTML des cellules - expression régulière

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

arthurho

XLDnaute Junior
Bonjour,

J'ai fait une macro permettant de retirer les balises HTML des cellules.
Malheureusement, je n'arrive pas à retirer des bouts de code HTML du type ⁢ & $nbsp;

Le pattern pour retirer ces morceaux de code est fait, mais le problème vient de la phase de test.

Voici le code utilisé :
Code:
Sub RemoveTags()
Dim r As Range, teststr As String
'Selection.NumberFormat = "@"  'set cells to text numberformat
Selection.NumberFormat = "0.00E+00"

With CreateObject("vbscript.regexp")
  .Global = True
  For Each r In Selection
    .Pattern = "(\<.*?\>)"
    r.Value = .Replace(r.Value, " ")
    
    .Pattern = "\&.*?\;"
    'If .test("&amp;") = True Then r.Value = .Replace(r.Value, "&")
    If .test("&It;") = True Then r.Value = .Replace(r.Value, "<")
    'If .test("&gt;") = True Then r.Value = Replace(r.Value, ">")
    'If .test("&quot;") = True Then r.Value = .Replace(r.Value, "'")
  
  Next r

End With
End Sub

Avez vous une solution ?
Merci,
Arthur HO.
 

Pièces jointes

Re : Retirer code HTML des cellules - expression régulière

Bonjour Arthurho 🙂,
Pourtant fan de RegExp, je la jouerais plutôt comme ça 😛...
Bonne suite 😎
Ajout : Salut David 🙂
 

Pièces jointes

Dernière édition:
Re : Retirer code HTML des cellules - expression régulière

Bonjour,
avec un seul exemple, difficile de réellement comprendre ce que tu veux obtenir au final.
Ci-joint une proposition à tester :
Code:
Sub RemoveTags()
Dim r As Range, teststr As String, oRegExp As Object, Matches As Object
Selection.NumberFormat = "0.00E+00"
Set oRegExp = CreateObject("vbscript.regexp")
With oRegExp
  .Global = True
  .ignorecase = True
  For Each r In Selection
    .Pattern = "(\<.*?\>)"
    Set Matches = .Execute(r)
    r.Value = .Replace(r.Value, " ")
    
    .Pattern = "(\&lt\;)"
    Set Matches = .Execute(r)
    r.Value = .Replace(r.Value, "<")
    
    .Pattern = "(\&amp\;)"
    Set Matches = .Execute(r)
    r.Value = .Replace(r.Value, "&")
    
    .Pattern = "(\&gt\;)"
    Set Matches = .Execute(r)
    r.Value = .Replace(r.Value, ">")
    
    .Pattern = "(\&quot\;)"
    Set Matches = .Execute(r)
    r.Value = .Replace(r.Value, "'")
    
  Next r

End With
End Sub

Je t'ai laissé les .Execute pour que tu puisses vérifier les items retournés par le motif.
Certaines sous-chaînes que tu as recensées n'existent pas dans la chaîne de l'exemple mais peut-être sont-ils présent ailleurs.

Quant à ton Selection.NumberFormat, je ne sais pas à quoi il te sert.
A+
 
Re : Retirer code HTML des cellules - expression régulière

Bonjour,

Merci pour vos deux propositions, le code de JNP est plus optimisé que le mien, pour 10000 lignes cest important.
La plage nommée est par contre impossible à utiliser car je génère le code HTML par une macro, récupérant des données en base.

Je vais regarder ca, merci encore.
 
Re : Retirer code HTML des cellules - expression régulière

Re 🙂,
La plage nommée est par contre impossible à utiliser car je génère le code HTML par une macro, récupérant des données en base.
Je ne vois pas où ça pose problème, mes plages nommées n'étant que pour le tableau d'équivalence indispensable aux remplacements 😕...
Il peut être éventuellement mis dans un classeur à côté 🙄...
Bonne suite 😎
 
- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD

Discussions similaires

Réponses
4
Affichages
870
Réponses
0
Affichages
2 K
Réponses
12
Affichages
2 K
Retour