XL 2010 Suppression texte surligné

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 !

NICOALBERT

XLDnaute Occasionnel
Bonjour le Forum ,

J'ai une petite question concernant l'action sur une partie du texte dans une cellule .

Est il possible de supprimer le texte surligné dans une cellule sans supprimer tout le contenu ?

Cdlt Nicoalbert .
 

Pièces jointes

Bonjour NICOALBERT, Pierre,

Mieux vaut tard que jamais :
VB:
Private Sub CommandButton1_Click()
Dim c As Range, txt$, t$, coul$, i%, s
Application.ScreenUpdating = False
For Each c In [B3].CurrentRegion.Offset(1)
    txt = c: t = "": coul = ""
    For i = 1 To Len(c)
        If c.Characters(i, 1).Font.Underline = xlUnderlineStyleNone Then
            t = t & Mid(txt, i, 1)
            coul = coul & " " & c.Characters(i, 1).Font.Color 'mémorise la couleur
        End If
    Next i
    c = t 'nouveau texte
    s = Split(coul)
    For i = 1 To Len(c)
        c.Characters(i, 1).Font.Color = s(i) 'restitue la couleur
Next i, c
End Sub
Comme on peut le voir les couleurs sont mémorisées puis restituées.

Pour traiter la seule cellule B4 il faut chez moi 25 secondes !!!

A+
 

Pièces jointes

Avec ce fichier (2) le traitement se fait en 18 secondes, on gagne donc 7 secondes (28%) :
VB:
Private Sub CommandButton1_Click()
Dim c As Range, txt$, t$, coul$, i%, s, n%
Application.ScreenUpdating = False
For Each c In [B3].CurrentRegion.Offset(1)
    txt = c: t = "": coul = ""
    For i = 1 To Len(c)
        If c.Characters(i, 1).Font.Underline = xlUnderlineStyleNone Then
            t = t & Mid(txt, i, 1)
            coul = coul & " " & c.Characters(i, 1).Font.Color 'mémorise la couleur
        End If
    Next i
    c = t 'nouveau texte
    coul = coul & " " 'un élément (vide) de plus pour s
    s = Split(coul)
    n = 1
    For i = 2 To UBound(s)
        If s(i) <> s(i - 1) Then
            c.Characters(n, i - n).Font.Color = s(n) 'restitue la couleur par paquet
            n = i
        End If
Next i, c
End Sub
 

Pièces jointes

Dernière édition:
Bonsoir Job75 , pierrejean , le Forum ,

Comme tu le dit si bien "me vaut tard que jamais" car je n'aurait jamais été capable de créer ce genre de macro .

Elle fonctionne à merveille .

Encore un très grand merci à vous 2 pour le temps que vous prenez pour nous aider .

Cdlt Nicoalbert .
 
- 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

  • Question Question
Microsoft 365 Formule excel
Réponses
7
Affichages
222
Réponses
3
Affichages
150
Réponses
3
Affichages
105
Réponses
10
Affichages
128
Retour