Remplacement de caractères dans xls suivant table de correspondance

ancamal

XLDnaute Nouveau
Bonjour à toutes et tous,

Je viens juste de m'inscrire sur votre site et espère pouvoir y trouver d'EXCELantes réponses à mes questions (excellantes aussi bien entendu :p)

Plus sérieusement, j'utilise XLS depuis plus de 15 ans et fait pas mal de truc un peu tordu mais là je suis face un un problème simple et pour lequel je ne parviens pas à une solution correcte.

Problème
- J'ai une feuille dans laquelle se trouve un des données comprenant des caractères spéciaux :)./¦$ etc.)
- dans une autre feuille j'ai fait un tableau de correspondance pour remplacer ces caractères spéciaux par des chiffres (ou autre chose). J'ai appeler cette feuille "Auto-Correction"
- Le but du jeu est de faire une moulinette qui me retrouve tous les caractères repris en ligne 1 de ma feuille"Auto-Correction" dans ma feuille1 et de les remplacer par le caractère en colonne de la ma ligne 2 de ma feuille "Auto-Correction".

Afin de mieux visulaser, voici mon tableau de correspondance:
Replace / \ > : à ä ï ö ü ë < - @ . _ &
With 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16

De plus le top du top serait d'avoir un rapport qui me donne le détail des caractères trouvés et remplacés sur la feuille1.

Dans l'epoire d'être claire dans ma demande.
Merci d'avance à tous pour votre aide

Patrick
 

CISCO

XLDnaute Barbatruc
Re : Remplacement de caractères dans xls suivant table de correspondance

Bonjour à tous

C'est certainement faisable, peut être avec un CHOISIR, mais cela serait nettement plus facile pour nous, et plus efficace pour toi, si tu nous mettais un petit fichier exemple en pièce jointe.

@ plus
 

ancamal

XLDnaute Nouveau
Re : Remplacement de caractères dans xls suivant table de correspondance

Bonjour Cisco,

Merci pour ta rapide réponse, super raopide les réactions sur ce forum.

Voici la bête. J'ai simplement mis en colonne mon tableau de correspondance.



Bonjour à tous

C'est certainement faisable, peut être avec un CHOISIR, mais cela serait nettement plus facile pour nous, et plus efficace pour toi, si tu nous mettais un petit fichier exemple en pièce jointe.

@ plus
 

Pièces jointes

  • ReplaceBy_V.01.xls
    35 KB · Affichages: 126

GBI

XLDnaute Occasionnel
Re : Remplacement de caractères dans xls suivant table de correspondance

Bonjour Cisco, bonjour ancamal,

J'ai fait ca, c'est un peu lent à executer mais au moins ca fonctionne :)
Pour appliquer les modifications sur la colonne A uniquement :
Code:
Private Sub Essai()
derlig = Sheets(1).Range("A65536").End(xlUp).Row
For i = 1 To derlig
Worksheets("Sheet1").Columns("A").Replace _
    What:=Sheets("Auto-Correction").Cells(i, 1).Value, Replacement:=Sheets("Auto-Correction").Cells(i, 2).Value, _
    SearchOrder:=xlByColumns, MatchCase:=True
Next i
End Sub
 

ancamal

XLDnaute Nouveau
Re : Remplacement de caractères dans xls suivant table de correspondance

Bon début GBI c'est exactement ça

J'essaie d'adapter pour toute la feuille mais ce n'est pas évident en effet.
Je continue mes recherches et quoi qu'il en soit le code sera bientôt "On line"
 

Efgé

XLDnaute Barbatruc
Re : Remplacement de caractères dans xls suivant table de correspondance

Bonsoir ancamal, CISCO, GBI,
Il y a ce code donné par Gruick ici que l'on peut adapter.
Cordialement
EDIT : Ceci ne fonctionne que pour remplacer un caractère par un autre, ce qui ne semble pas répondre à l'exemple: "&" devant être remplacé par "16". Mais c'est une bonne occasion de découvrir ce code pour ceux qui l'auraient raté ;)
 
Dernière édition:

hoerwind

XLDnaute Barbatruc
Re : Remplacement de caractères dans xls suivant table de correspondance

Bonjour,

Petit essai en pièce jointe par formule nommée.
Le tableau de référence peut être effacé.
 

Pièces jointes

  • ReplaceBy_V.02.zip
    7.9 KB · Affichages: 88

GBI

XLDnaute Occasionnel
Re : Remplacement de caractères dans xls suivant table de correspondance

Bonjour Efgé, bonjour hoerwind, re ancamal

Ci-après la solution pour que le remplacement des caractères se fassent dans toutes les colonnes pleines de ton classeur
Code:
Private Sub Remplacement_Chaine_Caractere()
'Selectionne la derniere ligne saisie dans la feuille 1
derlig = Sheets(1).Range("A65536").End(xlUp).Row
'Selectionne la derniere colonne saisie dans la feuille 1
dercol = Sheets(1).Range("IV1").End(xlToLeft).Column

'De 1 à la derniere ligne
For i = 1 To derlig
'De 1 à la derniere colonne
    For j = 1 To dercol
'Remplace les valeurs dans toutes les colonnes pour toutes les lignes saisies
Worksheets("Sheet1").Columns("j").Replace _
'Ici il s'agit de la source des données
    What:=Sheets("Auto-Correction").Cells(i, 1).Value, Replacement:=Sheets("Auto-Correction").Cells(i, 2).Value, _
    SearchOrder:=xlByColumns, MatchCase:=True
Next j
    Next i
End Sub

Tu noteras que mon code te permettra de mettre à jour de nouveaux caractères, pour ce faire tu n'as qu'à rajouter une ligne dans ta feuille "Autocorrection", la premiere colonne étant désignée comme le caractère à remplacer et la deuxieme colonne comme étant la valeur par laquelle le remplacer.

Cdt
 
Dernière édition:

ancamal

XLDnaute Nouveau
Re : Remplacement de caractères dans xls suivant table de correspondance

Et bhé en dehors du coup qques minutes (heures :0) et voilà que vous faite tout le boulot. Merci messieurs c'est parfait comme solution.
Chapeau bas.
 

ancamal

XLDnaute Nouveau
Re : Remplacement de caractères dans xls suivant table de correspondance

Salut à tous,
Désolé pour le retard.

Voici la solution finale et qui marche du Tonerre.
Merci encore GBI pour ta précieuse aide

CodeVBA:

Dim LastRow As Long, LastCol As Long, i As Long, j As Long

Sub ReplaceBy()
'Selectionne la derniere ligne saisie dans Tree
LastRow = Sheets("Tree").Range("A65535").End(xlUp).Row
'Selectionne la derniere colonne saisie dans Tree
LastCol = Sheets("Tree").Range("IV1").End(xlToLeft).Column
'De 1 à la derniere ligne
For i = 1 To LastRow
'De 1 à la derniere colonne
For j = 1 To LastCol
'Remplace les valeurs dans toutes les colonnes pour toutes les lignes saisies (data source)
Sheets("Tree").Columns().Replace What:=Sheets("Auto-Correction").Cells(i, 1).Value, Replacement:=Sheets("Auto-Correction").Cells(i, 2).Value, SearchOrder:=xlByColumns, MatchCase:=True
Next j
Next i
End Sub
 

Discussions similaires

Statistiques des forums

Discussions
312 361
Messages
2 087 608
Membres
103 606
dernier inscrit
lolo1970