XL 2010 extraire des mots en gras

carber

XLDnaute Nouveau
Bonjour j'ai un fichier qui me permet extraire des mots en gras le souci que je n'arrive pas a mettre chaque mot dans une cellule

par exemple dans une phrase j'ai deux mot en gras ou plus alors quand j’exécute le bouton il me colle les mot qui sont en gras je souhaite les mettre chaque mot dans une cellule

svp
cordialement
 

Pièces jointes

  • test-extraction-texte-en-gras.xlsm
    19.5 KB · Affichages: 12

job75

XLDnaute Barbatruc
En fait dans la fonction du post #6 la variable tableau a() est inutile, ceci va bien :
VB:
Function Mots_Gras$(c As Range)
Dim x$, s, i%, n%
x = " " & c
s = Split(x)
If UBound(s) = 0 Then Exit Function
For i = 1 To Len(x) - 1
    If Mid(x, i, 1) = " " Then
        n = n + 1
        If c.Characters(i + 1, 1).Font.Bold Then Mots_Gras = Trim(Mots_Gras & " " & s(n))
    End If
Next
End Function
Fichier (2) de 800 lignes avec la commande Convertir , l'exécution prend un peu moins de 3 secondes.
 

Pièces jointes

  • test-extraction-texte-en-gras(2).xlsm
    29.3 KB · Affichages: 6

patricktoulon

XLDnaute Barbatruc
Bonjour à tous
@job75 perso je pige pas moins de 3 secondes tu dis ?
fichier du post#12
1632569786994.png
 

patricktoulon

XLDnaute Barbatruc
re
et voila la démo en html en version range globale valueXML
toujours sur le même fichier (post#12) ,elle est plus que parlante ;)

je vous laisse découvrir le temps que ça mettra chez vous
bien que l'on en a une petite idée dans la capture animée 🤣
VB:
Sub testXML()
    Dim Tbl, T#, RnG As Range
    T = Timer
    With [b1]
        .Resize(Rows.Count, 50).ClearContents
        Tbl = GetBolderWord([A1].CurrentRegion)
        .Resize(UBound(Tbl) + 1, 50).Value = Tbl
    End With
    MsgBox "Durée " & Format(Timer - T, "0.00 \sec")
End Sub


Function GetBolderWord(cel As Range)
    Dim x$, I&, Tbl(), p&, a&, q&
    ReDim Tbl(cel.Count, 50)
    x = cel.Value(xlRangeValueXMLSpreadsheet)
    With CreateObject("htmlfile")
        .body.innerhtml = x
        Set celhtml = .getelementsbytagname("Cell")
        For I = 0 To celhtml.Length - 1
            Set chainebolds = celhtml(I).getelementsbytagname("B")
            p = 0
            For a = 0 To chainebolds.Length - 1
                mots = Split(chainebolds(a).innertext)
                For q = 0 To UBound(mots)
                    Tbl(I, p) = mots(q)
                    p = p + 1
                Next
            Next
        Next
    End With
    GetBolderWord = Tbl
End Function

si vous en doutez je met le fichier joint
demo7.gif
 

Pièces jointes

  • test-extraction-texte-en-gras html version 2 patricktoulon .xlsm
    34.8 KB · Affichages: 14

patricktoulon

XLDnaute Barbatruc
re
Bonjour @sylvanu 🤣 🤣
une petite correction tout de meme (il fallait bien que j'en fasse une hein !!)

comme parfois l'espace devant ou après est en bold aussi il arrive parfois que l'on est en colonne 1 ou dernière du résultat un espace
donc
la ligne corrigée
mots = Split(Trim(chainebolds(a).innertext))

je n'ai pas dimé toute les variables aussi je vous laisse deviner de quel type elle doivent etre pour les déclarer
et voilà ;)
 

sylvanu

XLDnaute Barbatruc
Supporter XLD
Re,
Alors, just for the fun.
Si toute la cellule est en gras, alors il n'y a aucune remontée.( ligne 2 )
Si toute la cellule est en gras, sauf un mot alors la remontée est correcte. (ligne 3 ou 4 )

1632573821773.png


"Just for the fun" car c'est une situation qu'il m'étonnerait que Carber rencontre. :)
 

Pièces jointes

  • 1632573831267.png
    1632573831267.png
    5.9 KB · Affichages: 18
  • 1632573744238.png
    1632573744238.png
    4 KB · Affichages: 17
  • 1632573636199.png
    1632573636199.png
    3.3 KB · Affichages: 18

mapomme

XLDnaute Barbatruc
Supporter XLD
Bonjour à tous :),

Bon puisque chacun y va de sa petite version et qu'ici il fait gris et qu'il pleut, ma pomme se fend aussi de sa p'tite version. Avec une variante:
  • Les mots consécutifs en gras sont considérés comme une seule expression
  • on considère (ce qui semble être le cas) que si la 1ère lettre d'un mot est en gras alors le mot est en gras
C'est assez rapide. Sur ma bécane, pour 800 lignes => autour de 3 s.:):)
 

Pièces jointes

  • carber- extractiontexte-en-gras- v1.xlsm
    34.7 KB · Affichages: 6

Discussions similaires

Statistiques des forums

Discussions
311 720
Messages
2 081 909
Membres
101 836
dernier inscrit
karmon