Manipulation de caractères

Bonjour à tous est par avance merci pour l'aide que vous allez m'apporter.

Dans la fonction "Replace" je veux supprimer une chaine de caractères exemple:

Replace(Cells(i,j).Value = Replace(Cells(i,j).value, "dotexteben", "")

Problème dans "dotexteben", texte correspond à une chaine de caractère variable. J'ai essayé de mettre "*" ("do*ben") et même (do%ben), à la place de "texte", qui devrait remplacer plusieurs caractères mais cela ne fonctionne pas.

Y-a-t-il une solution? et si oui laquelle?

Avec mes remerciements

paterbleutch

bonsoir paterbleutch,

avez-vous un fichier avec quelques exemples pour voir ce que vous voulez ? Donc source et résultat

Bonsoir,

un essai de syntaxe :
Cells(i,j).Value = Replace(Cells(i,j).value, "do" & VariableText & "ben", "")

VariableText est une variable avec le texte voulu. Après regardez un peu la syntaxe finale de l'instruction par rapport à la votre.
La valeur de la cellule "i,j" est égale à sa valeur dont on remplace do & le texte variable et ben, par un double guillemet donc rien.

@ bientôt

LouReeD

Bonsoir Paterbleutch, le Fil,

Si c'est pour remplacer dans une boucle x, y

Alors utilise une condition:

If left(Cells(x,y),2) = "do" and right(cells(x,y), 3) = "ben" and len(cells(x, y) >5 then Cells(x,y)=""

bonjour le fil,

une autre méthode

Sub test()
     s1 = "do": s2 = "ben"
     For Each c In Range("A1:D20").Cells
          s = c.Value2
          i1 = InStr(1, s, s1, 1)            'trouver chaîne "DO" ou "do" ou "Do" ou "dO"
          If i1 > 0 Then                     'trouvé !!!
               'méthode 1
               i2 = InStr(i1 + 1, s, s2, 1)     'trouver le premier "ben" (+variantes) après le"DO"
               'méthode 2
               i3 = InStrRev(s, s2, , 1)     'trouver le dernier "ben" (même avant ce "do")
               'dépendant de la méthode, on prend i2 ou i3
               If i3 > i1 Then c.Value = Left(s, i1 - 1) & Mid(s, i3 + Len(s2))
          End If
     Next
End Sub

Bonjour à tous,

BsAlv, X Cellus, LouReeD, merci pour vos réponses, mes capacités en excel vba, s'améliorent mais elles sont largement insuffisantes pour comprendre instantanément les codes que vous me proposer. J'analyse et je reviens

Bonjour

Problème dans "dotexteben", texte correspond à une chaine de caractère variable. J'ai essayé de mettre "*" ("do*ben") et même (do%ben), à la place de "texte", qui devrait remplacer plusieurs caractères mais cela ne fonctionne pas.

ok sauf que la on a un e erreur Conceptuelle dans le raisonnement (sauf paramètre plus précis sur le joker)

imaginons que la chaine soit " se soir toto ira dormir chez son ami ben la malice "

ça donnerait

" se soir toto ira la malice "

la tout d'un coup c'est moins bien l'idée du replace

patrickT, il est vrai que si l'on regarde "plus large" le replace n'est pas forcément la bonne solution si ce n'est que la demande est là et en effet un peu juste pour une réponse adéquate !
Maintenant le demandeur à réagit reste plus qu'à attendre son prochain retour.

@ bientôt

LouReeD

bonsoir loureed

oui c'est ce que je disais le paramètre do et ben n'est celui qui prévaut dans cet exercice

c'est ce qu'il y a entre les deux

parti de là avec les versions récentes de excel il y a regex.extract me semble t il

et donc un pattern de groupe

groupe 1\s+ (do)

groupe 2(\D+|\d+)'créer une limite ici

groupe3 (ben)+\s

si le pattern renvoie ces 3 groupes c'est le bon

Hello,

Je n'ai peut-être rien compris à la demande car il n'y a pas d'exemple réel de chaînes à traiter, mais il me semble qu'avec les expressions régulières, avec le motif .* (qui signifie 0 ou plus de n'importe quel caractère) , avec la fonction replace on puisse obtenir ce qui est demandé. Exemple de code :

Sub EnleverChaines()
 Dim x As Long, y As Long
 Dim re As Object
 Set re = CreateObject("VBScript.RegExp")
 re.pattern = "do.*ben": re.Global = True
 For x = 1 To 10
     For y = 1 To 2
     Cells(x + 12, y).Value = re.Replace(Cells(x, y), "")
     Next y
 Next x
End Sub

voici ce que cela donne :

enleverchaines

Ami calmant, J.P

Bonjour le Très vieux cochon

essaie voir avec

"lola est sorti avec sa copine lili , Dominique et ben son meilleur ami , sa mère pourra lire tranquillement le courrier de DotbilBen sans être dérangée"

ou encore si on ne considère pas les fautes d'accents

c'est un double événement benéfique pour toute la famille ils partent en vacances a douzenbenaoui pour une semaine avec une somme rondelette de 5000€ gagné a la compétition de .....

Hello PatrickT,

tant que Paterbleutch ne nous donne pas des exemples des contenus de ses cellules et de ce qu'il veut obtenir, tout code est une investigation et ne correspond peut-être pas à la demande et possède des failles. Tes phrases sont des cas particuliers et cela m'étonnerait que Paterbleutch ait ce genre de phrase dans ses cellules.

Rechercher des sujets similaires à "manipulation caracteres"