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
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 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