Remplacer plusieurs caractères sur Excel
VbaNoob
-
pijaku Messages postés 12263 Date d'inscription Statut Modérateur Dernière intervention -
pijaku Messages postés 12263 Date d'inscription Statut Modérateur Dernière intervention -
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 !
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:
- Excel substitue plusieurs caractères
- Liste déroulante excel - Guide
- Formule moyenne excel plusieurs colonnes - Guide
- Word et excel gratuit - Guide
- Classer par ordre alphabétique excel plusieurs colonnes - Guide
- Caractères ascii - Guide
4 réponses
Bonjour,
Essaie ceci :
Les variables tableaux Lettres et A_Remplacer_Par sont à compléter.
EDIT :
En "prime", une fonction pour "décrypter" :
Avant, j'arrivais jamais à finir mes phrases... mais maintenant je
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