Supprimer une chaine de caractères compris entre deux symboles
Résolu/Fermé
A voir également:
- Supprimer une chaine de caractères compris entre deux symboles
- Supprimer une page word - Guide
- Caractères spéciaux symboles clavier - Guide
- Supprimer compte instagram - Guide
- Caractères ascii - Guide
- Deux comptes whatsapp - Guide
2 réponses
Vaucluse
Messages postés
26496
Date d'inscription
lundi 23 juillet 2007
Statut
Contributeur
Dernière intervention
1 avril 2022
6 394
Modifié par Vaucluse le 19/04/2013 à 10:50
Modifié par Vaucluse le 19/04/2013 à 10:50
=Bonjour
sans VBA, il faut supposer que vos données aient toujours les configurations suivante
soit un blanc devant < ou un blanc derriére> quelque soit le nombre de mots à éléminer devant ou derrière le texte
On peut alors exécuter en deux temps:
premier temps, saisir le champ (exemple A:A) et remplacer (touche ctrl et touche h
Remplacer: placer > < (avec un blanc)
par : placer: >< (sans blanc)
ensuite en B la formule:
=STXT(A1;TROUVE("> ";A1;1)+2;TROUVE(" <";A1;1)-TROUVE("> ";A1;1)-2)
Attention > et suivi d'un blanc dans les guillemets
< et précédé d'un........
à tester dans tous vos cas de figure
crdlmnt
et pour complèter en cas de cellule vide en A et si le texte à sortir commence en début de phrase:
toujours après le traitement "remplacer"
=SI(A1="";"";SI(GAUCHE(A1;1)<>"<";STXT(A1;1;TROUVE(" <";A1;1));STXT(A1;TROUVE(" <";A1;1);TROUVE("> ";A1;1)-TROUVE(" <";A1;1))))
et pour terminer, si vous voulez éc)viter la manip remplacer, vous pouvez uytiliser:
=SI(GAUCHE(A1;1)<>"<";STXT(SUBSTITUE(A1;"> <";"><");1;TROUVE(" <";SUBSTITUE(SUBSTITUE(A1;"> <";"><");"> <";"><");1));STXT(SUBSTITUE(A1;"> <";"><");TROUVE("> ";SUBSTITUE(A1;"> <";"><");1)+2;TROUVE(" <";SUBSTITUE(A1;"> <";"><");1)-TROUVE("> ";SUBSTITUE(A1;"> <";"><");1)-2))
crdlmnt
Errare humanum est, perseverare diabolicum
sans VBA, il faut supposer que vos données aient toujours les configurations suivante
soit un blanc devant < ou un blanc derriére> quelque soit le nombre de mots à éléminer devant ou derrière le texte
On peut alors exécuter en deux temps:
premier temps, saisir le champ (exemple A:A) et remplacer (touche ctrl et touche h
Remplacer: placer > < (avec un blanc)
par : placer: >< (sans blanc)
ensuite en B la formule:
=STXT(A1;TROUVE("> ";A1;1)+2;TROUVE(" <";A1;1)-TROUVE("> ";A1;1)-2)
Attention > et suivi d'un blanc dans les guillemets
< et précédé d'un........
à tester dans tous vos cas de figure
crdlmnt
et pour complèter en cas de cellule vide en A et si le texte à sortir commence en début de phrase:
toujours après le traitement "remplacer"
=SI(A1="";"";SI(GAUCHE(A1;1)<>"<";STXT(A1;1;TROUVE(" <";A1;1));STXT(A1;TROUVE(" <";A1;1);TROUVE("> ";A1;1)-TROUVE(" <";A1;1))))
et pour terminer, si vous voulez éc)viter la manip remplacer, vous pouvez uytiliser:
=SI(GAUCHE(A1;1)<>"<";STXT(SUBSTITUE(A1;"> <";"><");1;TROUVE(" <";SUBSTITUE(SUBSTITUE(A1;"> <";"><");"> <";"><");1));STXT(SUBSTITUE(A1;"> <";"><");TROUVE("> ";SUBSTITUE(A1;"> <";"><");1)+2;TROUVE(" <";SUBSTITUE(A1;"> <";"><");1)-TROUVE("> ";SUBSTITUE(A1;"> <";"><");1)-2))
crdlmnt
Errare humanum est, perseverare diabolicum
Morgothal
Messages postés
1236
Date d'inscription
jeudi 22 avril 2010
Statut
Membre
Dernière intervention
19 mai 2015
183
19 avril 2013 à 11:44
19 avril 2013 à 11:44
Bonjour,
J'ai fait cette macro, elle fonctionne avec tous les exemples que tu as posté ci-dessus (il fait beau, le dauphin, et le SGBD).
Cette macro est à exécuter plusieurs fois, jusqu'à ce qu'elle détecte qu'il n'y a plus rien à supprimer :
A+ !
J'ai fait cette macro, elle fonctionne avec tous les exemples que tu as posté ci-dessus (il fait beau, le dauphin, et le SGBD).
Cette macro est à exécuter plusieurs fois, jusqu'à ce qu'elle détecte qu'il n'y a plus rien à supprimer :
Sub suppression() Dim chaine, chaine2 As String chaine = Range("A1") If InStr(chaine, "<") = 0 Then MsgBox ("Plus rien à supprimer !") Exit Sub End If If Left(chaine, 1) = "<" Then chaine = Right(chaine, Len(chaine) - InStr(chaine, ">")) End If If InStr(chaine, "<") <> 0 Then chaine2 = Range("A2") chaine2 = chaine2 & Left(chaine, InStr(chaine, "<") - 1) chaine = Right(chaine, Len(chaine) - InStr(chaine, "<") + 1) Range("A1") = chaine Range("A2") = chaine2 Else chaine2 = Range("A2") chaine2 = chaine2 & chaine Range("A1") = chaine Range("A2") = chaine2 End If End Sub
A+ !
Morgothal
Messages postés
1236
Date d'inscription
jeudi 22 avril 2010
Statut
Membre
Dernière intervention
19 mai 2015
183
19 avril 2013 à 11:48
19 avril 2013 à 11:48
Petite précision, dans mes tests, la chaine à traiter était en A1, et écrivait en A2 cette chaine sans les <textes_a_supprimer>
Greg le novice
Messages postés
11
Date d'inscription
vendredi 19 avril 2013
Statut
Membre
Dernière intervention
26 avril 2013
19 avril 2013 à 12:32
19 avril 2013 à 12:32
Bonjour,
Merci Morgothal, ta macro marche parfaitement. Quelques détails a modifier mais sinon un grand grand merci !
Cordialement,
Greg le novice
Merci Morgothal, ta macro marche parfaitement. Quelques détails a modifier mais sinon un grand grand merci !
Cordialement,
Greg le novice
Modifié par Greg le novice le 19/04/2013 à 10:42
Merci d'avoir répondu si rapidement à mon problème.
Je suis content il y a une avancée à mon problème.
Cependant, après avoir remplacé tous les "> <" par "><" et avoir appliqué la formule sur une cellule, seule la première chaîne de caractères est extraire et non la suite.
Exemple :
<bateau>dauphin < camion ></b> toto
Je n'obtiens que : dauphin
Au lieu d'obtenir : dauphin toto
Merci d'avance,
Greg le novice
ps : je ne comprends pas comment fonctionne la formule au passage..
19 avril 2013 à 10:54
Ce qu'il faudrait avant qu'on cherche plus loin, c'est connaitre l'ensemble ,de vos cas de figure. Des mots séparés comme ça, il y en a combien à sortir?
En attendant jetez un oeil sur les compléments de mon message précédent
.. et pour aller plus loin, je pense qu'il faudra passer par VBA pour supprimer les mots en adrés par <> mais ce n'est pas mon rayon
Modifié par Greg le novice le 19/04/2013 à 11:06
Un grand merci cela m'avance beaucoup.
----
Oui lors de mon exemple j'aurai du mettre toto hors des crochets afin qu'on obtienne : dauphin toto
ET j'ai proposé ces exemples pour que ma demande soit plus claire.
Dans mon cas cela corresponds a des paragraphes entiers dans une cellule excel, ou dedans y sont mélangés des "</b> par exemple ou des </g>. Il y en a beaucoup.
----
Donc je suppose que je dois passer par vba. Cela ne me dérange pas. Mais je reste tout de même coincé pour exprimer ses formules en vba.
19 avril 2013 à 11:13
<div style="border: 1px solid #C0C0C0; text-align: justify; font-family: Calibri; padding: 10 10 15 10px; font-size: 12px; background-color: #FFE; width: 500px;">
<h1 style="text-align: center; color: #069; font-size: 16px;"> Access </h1>
<br/>
Cette offre vous propose la mise à disposition du logiciel ACCESS, SGBD de Microsoft pour des applications bureautiques.
</p>
<div style="color: #069">
<strong>Merci d'indiquer dans le champ commentaire ci-contre : </strong>
<ul style="list-style-type: square; margin-top: 5px;">
<li>la justification du besoin</li>
<li>les références du poste concerné par l'installation</li>
</ul>
</div>
</div>