Remplacer des valeurs pour une selection donnée

Bonjour,

Je cherche un code similaire à celui proposer ici : https://forum.excel-pratique.com/excel/conversion-de-caracteres-speciaux-t13875.html (désolé pour le doublon, vu que le sujet est validé, j'ai peur que personne n'y jette un oeil ) afin de remplacer tous les caractères spéciaux présents dans les différentes cellules d'une même colonne de mon fichier excel 2010 par leur valeur xHtml : "à" => "à"

Du coup j'ai essayé d'utilser le code précédent en remplaçant les valeurs. Alors ça fonctionne par contre j'ai une erreur du type: Run type error '9' subscript out of range.

Ci-dessous ma version test avec simplement 2 caractères spéciaux, je rajouterai tous les autres une fois que celle-ci fonctionnera .

Code: Tout sélectionner

Sub Caractere_speciaux()

ReDim A_Remplacer(0 To 2)

ReDim Remplacants(0 To 2)

Dim I As Byte

A_Remplacer = Array("à", "é")

Remplacants = Array("à", "&ecute;")

For I = 0 To 2

Cells.Replace What:=A_Remplacer(I), Replacement:=Remplacants(I), LookAt:=xlPart

Next I

End Sub

A quoi correspond la valeur 0 to 2 ? Est ce bien en rapport avec le nombre d'élements dans A_Remplacer = Array("à", "é")?

Si jamais vous avez une autre technique pour remplacer les caractères spéciaux par leur valeur xhtml, je suis également preneur. Je suis tombé là dessus et je me suis dis que c'est une bonne piste de départ. par contre, je vais m'amuser pour insérer tout les caractères spéciaux ^^.

Merci pour votre aide.

Je rebondis sur le sujet, j'ai également trouvé ce bout de code qui à l'air pas mal, mais je n'arrive pas à la faire fonctionner.

Dans l'idéal j'aimerai pouvoir appliquer cette macro à une sélection de cellule seulement, sélection qui variera en fonction de mes fichiers (donc pas toujours la même colonne ou ligne).

ActiveSheet.Select 

Selection.Replace What:="ä", Replacement:="a", LookAt:=xlPart, _ 
SearchOrder:=xlByRows, MatchCase:=False, SearchFormat:=False, _ 
ReplaceFormat:=False 

Selection.Replace What:="á", Replacement:="a", LookAt:=xlPart, _ 
SearchOrder:=xlByRows, MatchCase:=False, SearchFormat:=False, _ 
ReplaceFormat:=False 

Une idée?

La gestion en redéfinissant les "ARRAY" est vraiment plus rapide que les REPLACE unitaire. Mais, tout comme toi, je ne trouve pas encore comment définir la zone d'application sur ce modèle.

Sinon, je fais :

'Supprimer les caractères indésirables

For Each cell In Selection

If cell.HasFormula = False Or cell.Value <> "" Then

cell.Value = Replace(Replace(cell.Value, "ä", "a"), "á", "a")

End If

Next

ça fonctionne, mais quand tu as beaucoup de variables, ça devient fastidieux.

On se dit que le premier qui trouve à gagner ?

Bon bah j'ai trouvé...

Sur ton exemple de départ, il suffit de remplacer "Cells" par "Selection" ou le range que tu souhaites

'Supprimer des caractères spé

ReDim A_Remplacer(0 To 1)

ReDim Remplacants(0 To 1)

Dim I As Byte

A_Remplacer = Array("à", "é")

Remplacants = Array("à", "&ecute;")

For I = 0 To 1

Selection.Replace What:=A_Remplacer(I), Replacement:=Remplacants(I), LookAt:=xlPart

Next I

Sur un autre forum, une utilisatrice a répertoriée 27 caractères spéciaux intervenant lors des extracts CSV depuis des HTML et c'est pour le moment complet pour mon utilisation :

Private Sub remplace_csv()

ReDim A_Remplacer(0 To 26)

ReDim Remplacants(0 To 26)

Dim I As Byte

A_Remplacer = Array("î", "é", "→", "Ü", "ù", "â", "è", "Ã", "’", "€", "®", "Ø", "°", "ç", "ô", _

"«", "»", "û", "ê", "…", "/ø", "ø", "À", "É", "È", " à ", "Ö")

Remplacants = Array("î", "é", Chr(26), "Ü", "û", "â", "è", "à", "'", "€", "®", "Ø", "°", "ç", "ô", _

Chr(34), Chr(34), "û", "ê", "..", "ø", "ø", "A", "E", "E", " à ", "Ö")

For I = 0 To 26

Cells.Replace What:=A_Remplacer(I), Replacement:=Remplacants(I), LookAt:=xlPart

Next I

End Sub

Bonjour,

si ton array a 2 éléments les index sont :

For i = 0 to 1

eric

Rechercher des sujets similaires à "remplacer valeurs selection donnee"