Supprimer une chaine de caractères compris entre deux symboles
Résolu
Greg le novice
-
Claire -
Claire -
A voir également:
- Supprimer une chaine de caractères compris entre deux symboles
- Supprimer rond bleu whatsapp - Guide
- Supprimer une page word - Guide
- Caractères spéciaux symboles clavier - Guide
- Nombre de jours entre deux dates excel - Guide
- Caractères ascii - Guide
2 réponses
=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
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+ !
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..
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
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.
<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>