XL 2019 Garder un texte entre 2 balises

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.
 

Bernard_XLD

XLDnaute Barbatruc
Membre du Staff
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, @+
 

job75

XLDnaute Barbatruc
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+
 

team18fr

XLDnaute Occasionnel
re, salut marcel32

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 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,
 

Bernard_XLD

XLDnaute Barbatruc
Membre du Staff
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)"
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
 

job75

XLDnaute Barbatruc
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.
 

Discussions similaires

Réponses
8
Affichages
386

Statistiques des forums

Discussions
312 216
Messages
2 086 351
Membres
103 195
dernier inscrit
martel.jg