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 donnes d'une grande base (hors Access)
dans une table Access, certains caractres accentus tels que ""
n'apparaissent pas correctement (par exemple sous la forme ).

Une fois l'importation effectue, j'aimerai qu'une procdure VBA
remplace automatiquement le caractre erron par =
dans tous
les champs de la table Access.

J'aimerai donc faire l'quivalent (en VBA) de la bote de dialogue
Edition/Remplacer avec les paramtres suivants :
Rechercher :
Remplacer par :
Regarder dans : Toute la table
O : N'importe o dans le champ
Remplacer Tout

En rsum, la bote de dialogue Remplacer a-t-elle un quiv=
alent
simple en VBA ?

Merci d'avance de vos rponses

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