Bonjour,
pour une étape centrale de mon projet, je cherche le moyen d'extraire des noms de société des "Tag Words" significatifs.
Pour cela, je doit f=remplacer une série de chaines de caractères pour supprimer les mentions complémeenatires de sociétés (telles que SA, SAS, Ltd, Limited, GmbH, etc...).
Sur Excel, cela donne, par exemple (et ça marche):
En passant à ACCESS, j'ai vu que la fonction Replace existe dans les requêtes, et j'ai pu créer manuellement des requêtes de mise à jour qui fonctionnent (une requête par remplacement),
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10 Sub Remplacer() Selection.Replace What:=" I/S", Replacement:="", LookAt:=xlPart, _ SearchOrder:=xlByRows, MatchCase:=False, SearchFormat:=False, _ ReplaceFormat:=False Selection.Replace What:=" a.m.b.a ", Replacement:=" ", LookAt:=xlPart, _ SearchOrder:=xlByRows, MatchCase:=False, SearchFormat:=False, _ ReplaceFormat:=False End Sub
dont le code SQL donne, par exemple (ici, remplacement de " B.V. " par " "):
Code : Sélectionner tout - Visualiser dans une fenêtre à part UPDATE [Contacts to Treat] SET [Contacts to Treat].[Tag Words] = Replace([Treated Account Name]," B.V. "," ");
Mais, ayant plus d'une centaine de remplacemlents à faire (tous déjà codés en VBA pour EXCEL), je me vois mal créer manuellement une centaine de requête à la main !
Après beaucoup de recherches, prenant exemple sur http://www.developpez.net/forums/d44...xe-update-vba/, j'ai essayé d'inclure le code SQL généré par Access dans un code VBA en utilisant DoCmd.RunSQL.
Cela donne ça:
Mais j'ai une erreur de syntaxe pour toutes mes commandes DoCmd.RunSQL avec le message qu'il manque un séparateur ou une parenthèse.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23 Public Sub Building_Tag_Words() On Error GoTo Building_Tag_Words_Err DoCmd.SetWarnings False DoCmd.RunSQL ("UPDATE [Contacts_to_Treat] SET [Contacts_to_Treat].[Tag_Words] = Replace([Treated_Account_Name]," B.V. "," ");) DoCmd.RunSQL ("UPDATE [Contacts_to_Treat] SET [Contacts_to_Treat].[Tag_Words] = Replace([Treated_Account_Name]," I/S"," "); ") DoCmd.RunSQL ("UPDATE [Contacts_to_Treat] SET [Contacts_to_Treat].[Tag_Words] = Replace([Treated_Account_Name],"|"," "); ") DoCmd.RunSQL ("UPDATE [Contacts_to_Treat] SET [Contacts_to_Treat].[Tag_Words] = Replace([Treated_Account_Name]," BV "," ");") DoCmd.RunSQL ("UPDATE [Contacts_to_Treat] SET [Contacts_to_Treat].[Tag_Words] = Replace([Treated_Account_Name]," a.p.s "," "); ") DoCmd.RunSQL ("UPDATE [Contacts_to_Treat] SET [Contacts_to_Treat].[Tag_Words] = Replace([Treated_Account_Name]," aps "," ");") Building_Tag_Words_Exit: Exit Sub Building_Tag_Words_Err: MsgBox Error$ Resume Building_Tag_Words_Exit End Sub
En suivant le conseil de Mahefasoa, j'ai essayé une autre syntaxe, qui ne marche pas non plus:
Deux questions:
Code : Sélectionner tout - Visualiser dans une fenêtre à part DoCmd.RunSQL ("UPDATE Contacts_to_Treat SET Tag_Words= Replace([Treated_Account_Name]," B.V. "," ");)
1/ Quelqu'un peut-il me guider pour corriger la syntaxe si je suis dans la bonne voie.
2/ Peut-être devrais-je utiliser une méthode complètement différente ?
Je suis plein d'espooir et de reconnaissance anticipée...
Partager