Je viens de constater une erreur dans le code des balises.
<i>Abies lasiocarpa </i>var.<i> arizonica</i> (Merriam) Lemmon, 1982 |
Abies lasiocarpa var. arizonica (Merriam) Lemmon, 1982 = mise en forme de nom latin non correct
Abies lasiocarpa var. arizonica (Merriam) Lemmon, 1982 = mise en forme de nom latin correct |
le texte entre les deux balises n'apparait pas en italique (en orange) alors que le texte entre les deux premières balises si ( en violet). Je n'ai pas trouvé la solution, tu aurais une idée ?
J'ai tenté de m'inspirer de mon acien code ci-desous
Sub Italique()
Dim balise1$, balise2$, L1$, L2$, a$(), c As Range, n&, x$, sup%, i%, j%, k%, ss, s
balise1 = "<i>": balise2 = "</i>": L1 = Len(balise1): L2 = Len(balise2)
Application.ScreenUpdating = False
Cells.Font.Italic = False 'RAZ
With ActiveSheet.UsedRange 'la feuille active est traitée
'---tableau des bornes---
ReDim a(1 To .Count)
For Each c In .Cells
n = n + 1
x = CStr(c)
sup = 0
For i = 1 To Len(x)
If Mid(x, i, L1) = balise1 Then
j = InStr(i + L1, x, balise2)
k = InStr(i + L1, x, balise1)
If k = 0 Then k = 32767
If j And j <= k Then
sup = sup + L1
a(n) = a(n) & " " & i - sup + L1 & "," & j - i - L1
sup = sup + L2
i = j + L2 - 1
End If
End If
Next i, c
'---effacement des 2 balises---
.Replace balise1, "", xlPart
.Replace balise2, ""
'---application des formats---
n = 0
For Each c In .Cells
n = n + 1
If a(n) <> "" Then
ss = Split(a(n))
For i = 1 To UBound(ss)
s = Split(ss(i), ",")
c.Characters(s(0), s(1)).Font.Italic = True
Next i
End If
Next c
End With
End Sub