Remplacer plusieurs caractères sur Excel

Fermé
VbaNoob - 21 oct. 2015 à 11:14
pijaku Messages postés 12263 Date d'inscription jeudi 15 mai 2008 Statut Modérateur Dernière intervention 4 janvier 2024 - 26 oct. 2015 à 09:30
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 !
A voir également:

4 réponses

pijaku Messages postés 12263 Date d'inscription jeudi 15 mai 2008 Statut Modérateur Dernière intervention 4 janvier 2024 2 743
Modifié par pijaku le 21/10/2015 à 11:59
Bonjour,

Essaie ceci :
Option Explicit

Dim Lettres(), A_Remplacer_Par()

Sub Main()
Dim mot As String, mot_crypte As String
   Lettres = Array("b", "o", "n", "j", "u", "r")
   A_Remplacer_Par = Array("l", "n", "g", "k", "e", "a")
   mot = "bonjour"
   mot_crypte = Crypte(mot)
   MsgBox mot_crypte
End Sub

Function Crypte(mot As String) As String
Dim i As Integer, temp As String
   temp = ""
   For i = 1 To Len(mot)
      temp = temp & A_Remplacer_Par(Application.Match(Mid(mot, i, 1), Lettres, 0) - 1)
   Next i
   Crypte = temp
End Function


Les variables tableaux Lettres et A_Remplacer_Par sont à compléter.


EDIT :
En "prime", une fonction pour "décrypter" :

Function Decrypte(mot As String) As String
Dim i As Integer, temp As String
   temp = ""
   For i = 1 To Len(mot)
      temp = temp & Lettres(Application.Match(Mid(mot, i, 1), A_Remplacer_Par, 0) - 1)
   Next i
   Decrypte = temp
End Function


Avant, j'arrivais jamais à finir mes phrases... mais maintenant je
0