En VBA, remplacement d'un caractère par un autre pour toutes les données d'une table
3 réponses
Patrick_67
Bonjour =E0 toutes et =E0 tous,
Suite =E0 une importation de donn=E9es d'une grande base (hors Access)
dans une table Access, certains caract=E8res accentu=E9s tels que "=E9"
n'apparaissent pas correctement (par exemple sous la forme =AB =DA =BB).
Une fois l'importation effectu=E9e, j'aimerai qu'une proc=E9dure VBA
remplace automatiquement le caract=E8re erron=E9 =AB =DA =BB par =AB =E9 =
=BB dans tous
les champs de la table Access.
J'aimerai donc faire l'=E9quivalent (en VBA) de la bo=EEte de dialogue =AB
Edition/Remplacer =BB avec les param=E8tres suivants :
=B7 Rechercher : =DA
=B7 Remplacer par : =E9
=B7 Regarder dans : =AB Toute la table =BB
=B7 O=F9 : =AB N'importe o=F9 dans le champ =BB
=B7 Remplacer Tout...
En r=E9sum=E9, la bo=EEte de dialogue =AB Remplacer =BB a-t-elle un =E9quiv=
alent
simple en VBA ?
Cette action est irreversible, confirmez la suppression du commentaire ?
Signaler le commentaire
Veuillez sélectionner un problème
Nudité
Violence
Harcèlement
Fraude
Vente illégale
Discours haineux
Terrorisme
Autre
Raymond [mvp]
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" a écrit dans le message de news:
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.
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" <patrick.kuppelin@evc.net> a écrit dans le message de news:
1190455722.151570.322500@n39g2000hsh.googlegroups.com...
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 ?
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" a écrit dans le message de news:
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
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
' 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
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
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
' 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]
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" a écrit dans le message de news:
N'ayant pas trouvé de solutions vraiment satisfaisantes sur Internet, j'ai préféré écrire la fonction personnalisée suivante :
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" <patrick.kuppelin@evc.net> a écrit dans le message de news:
1190537176.058149.214130@19g2000hsx.googlegroups.com...
N'ayant pas trouvé de solutions vraiment satisfaisantes sur Internet,
j'ai préféré écrire la fonction personnalisée suivante :
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" a écrit dans le message de news:
N'ayant pas trouvé de solutions vraiment satisfaisantes sur Internet, j'ai préféré écrire la fonction personnalisée suivante :