Sub remplacer mot ou suite de mot dans chaine de caracteres

Bonjour,

Je cherche à créer une sub qui me permettrait de chercher une chaine de texte et de la remplacer par une équivalence présente dans un tableau de correspondances (en dynamique).

Mes contraintes en la matière :

  1. la sub doit opérer une recherche d'équivalence stricte quant à la valeur cible (par ex: je recherche "charge" => "decharge", "chargee" ou "charges" ne seront pas trouvés / remplacés, seul "charge" doit être trouvé et remplacé
  2. la sub doit permettre de rechercher une valeur cible composée de plusieurs mots (par ex : je recherche "en vogue" => "voguee", "vogue" ne seront pas trouvés / remplacés, seul "en vogue" doit être trouvé et remplacé
  3. la sub doit permettre de rechercher une valeur cible à l'intérieur d'une chaîne de caractères (par ex: je recherche "ame" => "vague a l'ame" sera impacté, mais toujours pas "cette amertume"

Voilà, j'espère être assez clair et je vous remercie d'avance pour l'aide que vous voudrez bien m'apporter en analysant mon fichier test!

Pour l'instant, la sub que j'ai réussi à construire a des résultats... inégaux!

Un grand merci!

bonjour,

une proposition

Bonjour h2so4,

Cela fonctionne à merveille de ce que je peux en voir.

Le code est assez éloigné de ce que j'avais commencé à imaginer et je vais essayer de comprendre sa logique (ou mon manque de logique).

Je vais pouvoir m'en servir d'ores et déjà donc un grand merci.

Guillaume

Bonjour,

pour colorer les cellules modifiées voici ton code adapté

Sub Correspondances()
    Dim Cel As Range, Valeur As String

    Set ws2 = Sheets("correspondances")
    With ws2
        dl = .Cells(Rows.Count, 1).End(xlUp).Row
        tabcor = .Cells(1, 1).Resize(dl, 2) 'table des correspondances ancien mot nouveau mot
    End With

    For Each Cel In Selection

        Valeur = Cel.Value
        For j = 1 To UBound(tabcor)
            Valeur = replaceword(Valeur, tabcor(j, 1), tabcor(j, 2))
        Next j
        If Cel.Value <> Valeur Then 'valeur modifiée ?
            Cel.Value = Valeur
            Cel.Interior.Color = vbYellow 'on colorie en jaune
        End If
    Next

End Sub

Un grand merci h2so4!

Et navré du délai de ma réponse, elle ne minore en rien ma reconnaissance pour ton aide!

Rechercher des sujets similaires à "sub remplacer mot suite chaine caracteres"