Ceci est une page optimisée pour les mobiles. Cliquez sur ce texte pour afficher la vraie page.

XL 2019 Garder un texte entre 2 balises

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 !

team18fr

XLDnaute Occasionnel
Bonjour à tous,
Dans un classeur EXCEL en colonne B je colle du texte sous forme : <i>mon texte à garder</i> autre texte.
Et je voudrais via un bouton pouvoir effacer tout sauf "mon texte à garder" qui sera diffèrent sur chaque ligne.
Merci d'avance pour votre aide.
 
Bonjour team18fr, le forum

Comme vous n'avez pas mis de fichier test, voici le code pour agir sur la cellule active.

Cordialement, @+
VB:
With ActiveCell
    .Value = Left(.Value, InStrRev(.Value, ">"))
End With
 
re, salut marcel32

et voila pour la colonne
VB:
Sub Raz_Balises()
Dim Range_Ref As Range, Tab_Ref, i&
Set Range_Ref = Range("B1:B" & Range("B" & Rows.Count).End(xlUp).Row)
Tab_Ref = Range_Ref.Value2
For i = LBound(Tab_Ref, 1) To UBound(Tab_Ref, 1)
    Tab_Ref(i, 1) = Left(Tab_Ref(i, 1), InStrRev(Tab_Ref(i, 1), ">"))
Next i
Range_Ref = Tab_Ref
End Sub
et voila si il faut enlever aussi les balises
Code:
Sub Raz_Balises2()
Dim Range_Ref As Range, Tab_Ref, i&
Set Range_Ref = Range("B1:B" & Range("B" & Rows.Count).End(xlUp).Row)
Tab_Ref = Range_Ref.Value2
For i = LBound(Tab_Ref, 1) To UBound(Tab_Ref, 1)
    Tab_Ref(i, 1) = Left(Tab_Ref(i, 1), InStrRev(Tab_Ref(i, 1), ">") - 4)
    Tab_Ref(i, 1) = Right(Tab_Ref(i, 1), Len(Tab_Ref(i, 1)) - 3)
Next i
Range_Ref = Tab_Ref
End Sub

Cordialement, @+
 
Bonjour à tous,

Pourquoi du VBA ? La commande Excel Remplacer suffit.

Sélectionner la colonne B et touches Ctrl+H.

Rechercher : </i>* Remplacer par : ne rien mettre => Remplacer tout

Rechercher : *<i> Remplacer par : ne rien mettre => Remplacer tout.

A+
 
Bonjour et merci de votre aide et comme promis, je reviens vers vous.
Donc le code ci-dessus fonctionne très bien à partir du moment ou j'ai bien : <i>mon texte à garder</i> autre texte mais ci une cellule à déjà été traité cela me met une erreur d'éxécution"5" sur la ligne :
"Tab_Ref(i, 1) = Left(Tab_Ref(i, 1), InStrRev(Tab_Ref(i, 1), ">") - 4)"

Cdt,
 
Re,

voila pour gérer le cas

Bien cordialement, @+
VB:
Sub Raz_Balises2()
Dim Range_Ref As Range, Tab_Ref, i&
Set Range_Ref = Range("B1:B" & Range("B" & Rows.Count).End(xlUp).Row)
Tab_Ref = Range_Ref.Value2
For i = LBound(Tab_Ref, 1) To UBound(Tab_Ref, 1)
    If InStrRev(Tab_Ref(i, 1), ">") Then Tab_Ref(i, 1) = Left(Tab_Ref(i, 1), InStrRev(Tab_Ref(i, 1), ">") - 4)
    If InStr(Tab_Ref(i, 1), ">") Then Tab_Ref(i, 1) = Right(Tab_Ref(i, 1), Len(Tab_Ref(i, 1)) - InStr(Tab_Ref(i, 1), ">"))
Next i
Range_Ref = Tab_Ref
End Sub
 
Notez que la méthode par tableau utilisée par Yeahou est la plus rapide.

Testé avec le texte <i>Bonjour le forum</i>aaaaaaaaaaaaaaaaaaaaaaaaa sur 100 000 lignes :

- macro du post #9 => 3,6 secondes

- macro du post #12 => 0,28 seconde.
 
- 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

Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…