Remplacer plusieurs caractères sur Excel

Bonjour,

J'ai farfouillé le site ainsi que d'autres mais je ne trouve pas ce que je souhaite, à savoir :
Une macro permettant de changer plusieurs caractères dans un texte sans changer les caractères initiaux par leurs changements.

Pour faire plus clair ( :)) :
"bonjour" -> "lngknea"
b : l
o : n
n : g
j : k
o : n
u : e
r : a
Et non :
"bonjour" -> "lggkgea" : comme le "o" devient "n", la macro change le "n" en "g", donc ça fait "gg" au lieu de "ng".

J'avais pris la macro suivante :

Sub remplacerCaracteres()
Dim Cell As Variant

For Each Cell In Selection
Cell.Value = Replace(Cell.Value, "b", "l")
Next Cell
End Sub

Et j'avais ajouté à la suite les lignes correspondantes à chaque lettre :

Sub remplacerCaracteres()
Dim Cell As Variant

For Each Cell In Selection
Cell.Value = Replace(Cell.Value, "b", "l")
Cell.Value = Replace(Cell.Value, "o", "n")
Cell.Value = Replace(Cell.Value, "n", "g")
Cell.Value = Replace(Cell.Value, "j", "k")
Cell.Value = Replace(Cell.Value, "u", "e")
Cell.Value = Replace(Cell.Value, "r", "a")

Next Cell
End Sub

Et du coup ça me remplaçait tout, y compris les caractères déjà changés.

J'ai essayé de modifier en mettant :
Cell.Value = Replace(Replace(Cell.Value, "b", "l"),"o", "n")
Etc
Mais ça ne fonctionne pas.

Quelqu'un saurait-il m'aider ?

Merci !

4 réponses

  1. Bonjour et merci pour vos réponses,

    J'ai essayé les différentes méthodes proposées et à l'heure actuelle je ne suis parvenu qu'à faire fonctionner celle de Pikaju.

    Cependant, j'ai un texte complet à convertir et il me semble que cette solution ne fonctionne que pour le mot paramétré initialement.

    Par conséquent, si je crée deux colonnes :
    - 1 : lettres, chiffres, signes de ponctuation
    - 2 : équivalences
    Est-ce que je peux obtenir un résultat pour l'ensemble des mots présents dans ces colonnes sans msgbox ?
    0
    1. Modérateur
      Bonjour,

      Excuse, je n'ai pas vu cette question.

      Pour "crypter" et/ou "décrypter" de plus longs messages, il suffit de placer les caractères (lettres, chiffres, ponctuation...) dans :
         Lettres = Array("b", "o", "n", "j", "u", "r")

      et leurs équivalences, dans l'ordre, dans :
         A_Remplacer_Par = Array("l", "n", "g", "k", "e", "a")
      0