En VBA, remplacement d'un caractère par un autre pour toutes les données d'une table

Le
Patrick_67
Bonjour à toutes et à tous,

Suite à une importation de données d'une grande base (hors Access)
dans une table Access, certains caractères accentués tels que "é"
n'apparaissent pas correctement (par exemple sous la forme « Ú »).

Une fois l'importation effectuée, j'aimerai qu'une procédure VBA
remplace automatiquement le caractère erroné « Ú » par « é =
» dans tous
les champs de la table Access.

J'aimerai donc faire l'équivalent (en VBA) de la boîte de dialogue «
Edition/Remplacer » avec les paramètres suivants :
· Rechercher : Ú
· Remplacer par : é
· Regarder dans : « Toute la table »
· Où : « N'importe où dans le champ »
· Remplacer Tout

En résumé, la boîte de dialogue « Remplacer » a-t-elle un équiv=
alent
simple en VBA ?

Merci d'avance de vos réponses

Patrick.
Vidéos High-Tech et Jeu Vidéo
Téléchargements
Vos réponses
Gagnez chaque mois un abonnement Premium avec GNT : Inscrivez-vous !
Trier par : date / pertinence
Raymond [mvp]
Le #6391171
Bonjour.

As-tu d'abord essayé d'importer en modifiant les spécifications, option Page
de codes, en sélectionnant le code correspondant (exemple ASCII é-U) ? ce
serait préférable de trouver la page de codes exact.

--
@+
Raymond Access MVP http://OfficeSystemAccess.seneque.net/
http://officesystem.access.over-blog.com/
Pour débuter sur le forum: http://www.mpfa.info/

Partagez vos créations réalisées sous Office 2007 et gagnez peut-être 5000?
!
http://www.comscamp.com/Tracker/Redirect.ashx?linkid"7641a0-797c-44d5-8774-d820448dbe90


"Patrick_67"
Bonjour à toutes et à tous,

Suite à une importation de données d'une grande base (hors Access)
dans une table Access, certains caractères accentués tels que "é"
n'apparaissent pas correctement (par exemple sous la forme « Ú »).

Une fois l'importation effectuée, j'aimerai qu'une procédure VBA
remplace automatiquement le caractère erroné « Ú » par « é » dans tous
les champs de la table Access.

J'aimerai donc faire l'équivalent (en VBA) de la boîte de dialogue «
Edition/Remplacer » avec les paramètres suivants :
· Rechercher : Ú
· Remplacer par : é
· Regarder dans : « Toute la table »
· Où : « N'importe où dans le champ »
· Remplacer Tout...

En résumé, la boîte de dialogue « Remplacer » a-t-elle un équivalent
simple en VBA ?

Merci d'avance de vos réponses...

Patrick.
Patrick_67
Le #6391101
N'ayant pas trouvé de solutions vraiment satisfaisantes sur Internet,
j'ai préféré écrire la fonction personnalisée suivante :

Function Remplacement(Table_Ou_Requête As String, _
Nom_Du_Champ As String, _
Chaîne_Initiale As String, _
Chaîne_Finale)

'-------------------------------------------------------------------------- ------------
' Fonction qui remplace une chaîne de caractères par une autre pour :
' l'ensemble des enregistrements d'un Recordset (Table ou Requête)
' et soit pour tous les champs d'un Recordset, soit pour un champ
unique d'un Recordset
'-------------------------------------------------------------------------- ------------
' Paramètres de la fonction :
' 1. Table_Ou_Requête :
' Nom de la table ou de la requête concernée par le
remplacement
' 2. Nom_Du_Champ :
' Soit le nom d'un champ
' (si le remplacement doit s'effectuer sur un champ unique
du Recordset)
' Soit la constante "(Tous_Les_Champs)"
' (si le remplacement doit s'effectuer sur tous les champs
du Recordset)
' 3. Chaîne_Initiale :
' La chaîne de caractères qui va être remplacée
' 4. Chaîne_Finale :
' La chaîne de caractères qui va remplacer la chaîne initiale
'
' Exemples d'appel de la fonction :
' Call Remplacement("T_Salariés", "(Tous_Les_Champs)", "Ú", "é")
' => pour l'ensemble des champs de la table "T_Salariés", remplace
chaque "Ú" par un "é"
' Call Remplacement("T_Salariés", "Nom", "Ú", "é")
' => uniquement pour le champ "Nom" de la table "T_Salariés",
remplace chaque "Ú" par un "é"

Dim Jeu_Enregistrements As DAO.Recordset
Dim Champ As DAO.Field

Set Jeu_Enregistrements = CurrentDb.OpenRecordset(Table_Ou_Requête)

With Jeu_Enregistrements

' Positionnement sur le 1er enregistrement
.MoveFirst

' Boucle sur l'ensemble des enregistrements
Do While Not .EOF

' Pour des modifications ultérieures du Recordset
.Edit

Select Case Nom_Du_Champ

Case "(Tous_Les_Champs)"
' tous les champs du Recordset sont à mettre à jour

' boucle sur l'ensemble des champs de Recordset
For Each Champ In Jeu_Enregistrements.Fields
On Error Resume Next
' remplacement
Champ.Value = Replace(Champ.Value,
Chaîne_Initiale, Chaîne_Finale)
On Error GoTo 0
Next Champ

Case Else
' un seul champ du Recordset est à mettre à jour

' remplacement
.Fields(Nom_Du_Champ) = Replace(.Fields(Nom_Du_Champ),
Chaîne_Initiale, Chaîne_Finale)

End Select

' Mise à jour du Recordset
.Update

' Passage à l'enregistrement suivant du Recordset
.MoveNext

' Fin de la boucle sur l'ensemble des enregistrements
Loop

End With

' Fermeture du Recordset
Jeu_Enregistrements.Close

End Function
Raymond [mvp]
Le #6391051
Bonsoir.

tu n'as pas répondu à ma question. avant de réinventer l'eau tiède il
vaudrait mieux vérifier si elle existe ou non ?

--
@+
Raymond Access MVP http://OfficeSystemAccess.seneque.net/
http://officesystem.access.over-blog.com/
Pour débuter sur le forum: http://www.mpfa.info/

Partagez vos créations réalisées sous Office 2007 et gagnez peut-être 5000?
!
http://www.comscamp.com/Tracker/Redirect.ashx?linkid"7641a0-797c-44d5-8774-d820448dbe90


"Patrick_67"
N'ayant pas trouvé de solutions vraiment satisfaisantes sur Internet,
j'ai préféré écrire la fonction personnalisée suivante :
Publicité
Poster une réponse
Anonyme