En complement d'un post anterieur ,je resume:
Dans une requete ,je voudrais remplacer dans un champs texte contenant la
raision sociale des societes la chaine de caractere Societe Anonyme par SA,
Societe Commerciale par SC
Dans ma table ,le libelle et le nom de la societe se trouve dans le meme
champs,ce que je voudrais faire cest dans une requete (que SA ,sarl remplace
le libelle suivi du nom de la societe (un peut comme ds le menu chercher et
remplacer par) sans modifier ma table.
Je pense avoir trouve un debut de solution avec:
VraiFaux([kangoo]![ADRESSE] Comme "*Societe
commerciale*";Remplacer([kangoo]![ADRESSE];"Societe
commerciale";"SC");VraiFaux([kangoo]![ADRESSE] Comme "*Societe
anonyme*";Remplacer([kangoo]![ADRESSE];"Societe
anonyme";"SA");[kangoo]![ADRESSE]))
Ce que je voudrais c'est crer une fonction avec SELECT CASE pour effectuer
plus de 6 changements par exemple mais je rencontre des difficultes,avez vous
des idees??
Merci pour votre aide
Hugo
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
Eric
Bonjour,
Je ne suis pas sûr que le Select Case soit le mieux approprié.
Je te propose 2 solutions. La 1ère travaille avec la fonction Array() qui renvoie une variable de type Variant contenant un tableau. Le défaut c'est que cette solution est 'figée' puisque tu renseignes dans le code les items des tableaux.
La 2ème fait appel, comme te l'indiquait Thom dans ton 1er post, à une table contenant les raisons sociales longues et courtes. Avantage : pas de limite quant aux nombres de dénominations.
Un problème risque de se greffer, à savoir le respect ou non de l'accentuation.
Dans la requête, tu appeles les fonctions comme suit: Remplacement1: fnRemplacer1([RaisonSociale]) ou Remplacement2: fnRemplacer2([RaisonSociale])
Ex de sortie: RaisonSociale Remplacement1 Remplacement2 Société commerciale A SC A SC A Entreprise unipersonnelle à responsabilité limitée B EURL B EURL B Société anonyme C SA C SA C Société en nom Collectif D SNC D SNC D Société en commandite simple E SCS E SCS E Société à responsabilté limitée F SARL F SARL F Société commerciale G SC G SC G Société anonyme H SA H SA H Société en commandite par action Z SCA Z SCA Z
(les codes sont à copier dans un module de portée globale)
Code de la 1ère solution: Array() Function fnRemplacer1(UnChamp) As String If IsNull(UnChamp) Then Exit Function Dim strValCherchee Dim strValReplace strValCherchee = Array("Société commerciale", _ "Entreprise unipersonnelle à responsabilité limitée", _ "Société anonyme", "Société en nom Collectif", _ "Société en commandite simple", _ "Société à responsabilté limitée", _ "Société en commandite par action") strValReplace = Array("SC", "EURL", "SA", "SNC", "SCS", "SARL", "SCA") Dim i As Byte For i = 0 To UBound(strValCherchee) If InStr(UnChamp, strValCherchee(i)) > 0 Then UnChamp = Replace(UnChamp, strValCherchee(i), strValReplace(i)) Exit For End If Next i fnRemplacer1 = UnChamp End Function
Code de la 2ème solution: Recordset et méthode GetRows Function fnRemplacer2(UnChamp) As String ' Charger la référence Microsoft DAO 3.x Object library If IsNull(UnChamp) Then Exit Function Dim i As Byte ' pas plus de 255 dénominations supposées Dim varTableau Dim rst As DAO.Recordset ' on crée un recordset sur la table contenant les dénominations ' longues et courtes des sociétés Set rst = CurrentDb.OpenRecordset("TableDesRS") ' la table des RS a 2 champs : RS_Long et RS_Short rst.MoveLast: rst.MoveFirst ' pour connaitre le nb d'enreg. ' on charge en mémoire les 2 types de dénominations dans un tableau varTableau = rst.GetRows(rst.RecordCount) rst.Close: Set rst = Nothing ' Boucle de recherche-remplacement For i = 0 To UBound(varTableau, 2) If InStr(UnChamp, varTableau(0, i)) > 0 Then UnChamp = Replace(UnChamp, varTableau(0, i), varTableau(1, i)) Exit For ' remplacement effectué End If Next i Erase varTableau fnRemplacer2 = UnChamp End Function
Bonjour à tous,
En complement d'un post anterieur ,je resume: Dans une requete ,je voudrais remplacer dans un champs texte contenant la raision sociale des societes la chaine de caractere Societe Anonyme par SA, Societe Commerciale par SC Dans ma table ,le libelle et le nom de la societe se trouve dans le meme champs,ce que je voudrais faire cest dans une requete (que SA ,sarl remplace le libelle suivi du nom de la societe (un peut comme ds le menu chercher et remplacer par) sans modifier ma table.
Je pense avoir trouve un debut de solution avec: VraiFaux([kangoo]![ADRESSE] Comme "*Societe commerciale*";Remplacer([kangoo]![ADRESSE];"Societe commerciale";"SC");VraiFaux([kangoo]![ADRESSE] Comme "*Societe anonyme*";Remplacer([kangoo]![ADRESSE];"Societe anonyme";"SA");[kangoo]![ADRESSE]))
Ce que je voudrais c'est crer une fonction avec SELECT CASE pour effectuer plus de 6 changements par exemple mais je rencontre des difficultes,avez vous des idees?? Merci pour votre aide Hugo
-- A+ Eric http://www.mpfa.info/ Archives : http://groups.google.fr/group/microsoft.public.fr.access?hl=fr
Bonjour,
Je ne suis pas sûr que le Select Case soit le mieux approprié.
Je te propose 2 solutions.
La 1ère travaille avec la fonction Array() qui renvoie une variable de
type Variant contenant un tableau. Le défaut c'est que cette solution
est 'figée' puisque tu renseignes dans le code les items des tableaux.
La 2ème fait appel, comme te l'indiquait Thom dans ton 1er post, à une
table contenant les raisons sociales longues et courtes. Avantage : pas
de limite quant aux nombres de dénominations.
Un problème risque de se greffer, à savoir le respect ou non de
l'accentuation.
Dans la requête, tu appeles les fonctions comme suit:
Remplacement1: fnRemplacer1([RaisonSociale])
ou Remplacement2: fnRemplacer2([RaisonSociale])
Ex de sortie:
RaisonSociale Remplacement1 Remplacement2
Société commerciale A SC A SC A
Entreprise unipersonnelle à responsabilité limitée B EURL B EURL B
Société anonyme C SA C SA C
Société en nom Collectif D SNC D SNC D
Société en commandite simple E SCS E SCS E
Société à responsabilté limitée F SARL F SARL F
Société commerciale G SC G SC G
Société anonyme H SA H SA H
Société en commandite par action Z SCA Z SCA Z
(les codes sont à copier dans un module de portée globale)
Code de la 1ère solution: Array()
Function fnRemplacer1(UnChamp) As String
If IsNull(UnChamp) Then Exit Function
Dim strValCherchee
Dim strValReplace
strValCherchee = Array("Société commerciale", _
"Entreprise unipersonnelle à responsabilité
limitée", _
"Société anonyme", "Société en nom Collectif", _
"Société en commandite simple", _
"Société à responsabilté limitée", _
"Société en commandite par action")
strValReplace = Array("SC", "EURL", "SA", "SNC", "SCS", "SARL", "SCA")
Dim i As Byte
For i = 0 To UBound(strValCherchee)
If InStr(UnChamp, strValCherchee(i)) > 0 Then
UnChamp = Replace(UnChamp, strValCherchee(i), strValReplace(i))
Exit For
End If
Next i
fnRemplacer1 = UnChamp
End Function
Code de la 2ème solution: Recordset et méthode GetRows
Function fnRemplacer2(UnChamp) As String
' Charger la référence Microsoft DAO 3.x Object library
If IsNull(UnChamp) Then Exit Function
Dim i As Byte ' pas plus de 255 dénominations supposées
Dim varTableau
Dim rst As DAO.Recordset
' on crée un recordset sur la table contenant les dénominations
' longues et courtes des sociétés
Set rst = CurrentDb.OpenRecordset("TableDesRS")
' la table des RS a 2 champs : RS_Long et RS_Short
rst.MoveLast: rst.MoveFirst ' pour connaitre le nb d'enreg.
' on charge en mémoire les 2 types de dénominations dans un tableau
varTableau = rst.GetRows(rst.RecordCount)
rst.Close: Set rst = Nothing
' Boucle de recherche-remplacement
For i = 0 To UBound(varTableau, 2)
If InStr(UnChamp, varTableau(0, i)) > 0 Then
UnChamp = Replace(UnChamp, varTableau(0, i), varTableau(1, i))
Exit For ' remplacement effectué
End If
Next i
Erase varTableau
fnRemplacer2 = UnChamp
End Function
Bonjour à tous,
En complement d'un post anterieur ,je resume:
Dans une requete ,je voudrais remplacer dans un champs texte contenant la
raision sociale des societes la chaine de caractere Societe Anonyme par SA,
Societe Commerciale par SC
Dans ma table ,le libelle et le nom de la societe se trouve dans le meme
champs,ce que je voudrais faire cest dans une requete (que SA ,sarl remplace
le libelle suivi du nom de la societe (un peut comme ds le menu chercher et
remplacer par) sans modifier ma table.
Je pense avoir trouve un debut de solution avec:
VraiFaux([kangoo]![ADRESSE] Comme "*Societe
commerciale*";Remplacer([kangoo]![ADRESSE];"Societe
commerciale";"SC");VraiFaux([kangoo]![ADRESSE] Comme "*Societe
anonyme*";Remplacer([kangoo]![ADRESSE];"Societe
anonyme";"SA");[kangoo]![ADRESSE]))
Ce que je voudrais c'est crer une fonction avec SELECT CASE pour effectuer
plus de 6 changements par exemple mais je rencontre des difficultes,avez vous
des idees??
Merci pour votre aide
Hugo
--
A+
Eric
http://www.mpfa.info/
Archives : http://groups.google.fr/group/microsoft.public.fr.access?hl=fr
Je ne suis pas sûr que le Select Case soit le mieux approprié.
Je te propose 2 solutions. La 1ère travaille avec la fonction Array() qui renvoie une variable de type Variant contenant un tableau. Le défaut c'est que cette solution est 'figée' puisque tu renseignes dans le code les items des tableaux.
La 2ème fait appel, comme te l'indiquait Thom dans ton 1er post, à une table contenant les raisons sociales longues et courtes. Avantage : pas de limite quant aux nombres de dénominations.
Un problème risque de se greffer, à savoir le respect ou non de l'accentuation.
Dans la requête, tu appeles les fonctions comme suit: Remplacement1: fnRemplacer1([RaisonSociale]) ou Remplacement2: fnRemplacer2([RaisonSociale])
Ex de sortie: RaisonSociale Remplacement1 Remplacement2 Société commerciale A SC A SC A Entreprise unipersonnelle à responsabilité limitée B EURL B EURL B Société anonyme C SA C SA C Société en nom Collectif D SNC D SNC D Société en commandite simple E SCS E SCS E Société à responsabilté limitée F SARL F SARL F Société commerciale G SC G SC G Société anonyme H SA H SA H Société en commandite par action Z SCA Z SCA Z
(les codes sont à copier dans un module de portée globale)
Code de la 1ère solution: Array() Function fnRemplacer1(UnChamp) As String If IsNull(UnChamp) Then Exit Function Dim strValCherchee Dim strValReplace strValCherchee = Array("Société commerciale", _ "Entreprise unipersonnelle à responsabilité limitée", _ "Société anonyme", "Société en nom Collectif", _ "Société en commandite simple", _ "Société à responsabilté limitée", _ "Société en commandite par action") strValReplace = Array("SC", "EURL", "SA", "SNC", "SCS", "SARL", "SCA") Dim i As Byte For i = 0 To UBound(strValCherchee) If InStr(UnChamp, strValCherchee(i)) > 0 Then UnChamp = Replace(UnChamp, strValCherchee(i), strValReplace(i)) Exit For End If Next i fnRemplacer1 = UnChamp End Function
Code de la 2ème solution: Recordset et méthode GetRows Function fnRemplacer2(UnChamp) As String ' Charger la référence Microsoft DAO 3.x Object library If IsNull(UnChamp) Then Exit Function Dim i As Byte ' pas plus de 255 dénominations supposées Dim varTableau Dim rst As DAO.Recordset ' on crée un recordset sur la table contenant les dénominations ' longues et courtes des sociétés Set rst = CurrentDb.OpenRecordset("TableDesRS") ' la table des RS a 2 champs : RS_Long et RS_Short rst.MoveLast: rst.MoveFirst ' pour connaitre le nb d'enreg. ' on charge en mémoire les 2 types de dénominations dans un tableau varTableau = rst.GetRows(rst.RecordCount) rst.Close: Set rst = Nothing ' Boucle de recherche-remplacement For i = 0 To UBound(varTableau, 2) If InStr(UnChamp, varTableau(0, i)) > 0 Then UnChamp = Replace(UnChamp, varTableau(0, i), varTableau(1, i)) Exit For ' remplacement effectué End If Next i Erase varTableau fnRemplacer2 = UnChamp End Function
Bonjour à tous,
En complement d'un post anterieur ,je resume: Dans une requete ,je voudrais remplacer dans un champs texte contenant la raision sociale des societes la chaine de caractere Societe Anonyme par SA, Societe Commerciale par SC Dans ma table ,le libelle et le nom de la societe se trouve dans le meme champs,ce que je voudrais faire cest dans une requete (que SA ,sarl remplace le libelle suivi du nom de la societe (un peut comme ds le menu chercher et remplacer par) sans modifier ma table.
Je pense avoir trouve un debut de solution avec: VraiFaux([kangoo]![ADRESSE] Comme "*Societe commerciale*";Remplacer([kangoo]![ADRESSE];"Societe commerciale";"SC");VraiFaux([kangoo]![ADRESSE] Comme "*Societe anonyme*";Remplacer([kangoo]![ADRESSE];"Societe anonyme";"SA");[kangoo]![ADRESSE]))
Ce que je voudrais c'est crer une fonction avec SELECT CASE pour effectuer plus de 6 changements par exemple mais je rencontre des difficultes,avez vous des idees?? Merci pour votre aide Hugo
-- A+ Eric http://www.mpfa.info/ Archives : http://groups.google.fr/group/microsoft.public.fr.access?hl=fr
hugo
Bonjour Eric,
Merci c'est parfait Hugo
Bonjour,
Je ne suis pas sûr que le Select Case soit le mieux approprié.
Je te propose 2 solutions. La 1ère travaille avec la fonction Array() qui renvoie une variable de type Variant contenant un tableau. Le défaut c'est que cette solution est 'figée' puisque tu renseignes dans le code les items des tableaux.
La 2ème fait appel, comme te l'indiquait Thom dans ton 1er post, à une table contenant les raisons sociales longues et courtes. Avantage : pas de limite quant aux nombres de dénominations.
Un problème risque de se greffer, à savoir le respect ou non de l'accentuation.
Dans la requête, tu appeles les fonctions comme suit: Remplacement1: fnRemplacer1([RaisonSociale]) ou Remplacement2: fnRemplacer2([RaisonSociale])
Ex de sortie: RaisonSociale Remplacement1 Remplacement2 Société commerciale A SC A SC A Entreprise unipersonnelle à responsabilité limitée B EURL B EURL B Société anonyme C SA C SA C Société en nom Collectif D SNC D SNC D Société en commandite simple E SCS E SCS E Société à responsabilté limitée F SARL F SARL F Société commerciale G SC G SC G Société anonyme H SA H SA H Société en commandite par action Z SCA Z SCA Z
(les codes sont à copier dans un module de portée globale)
Code de la 1ère solution: Array() Function fnRemplacer1(UnChamp) As String If IsNull(UnChamp) Then Exit Function Dim strValCherchee Dim strValReplace strValCherchee = Array("Société commerciale", _ "Entreprise unipersonnelle à responsabilité limitée", _ "Société anonyme", "Société en nom Collectif", _ "Société en commandite simple", _ "Société à responsabilté limitée", _ "Société en commandite par action") strValReplace = Array("SC", "EURL", "SA", "SNC", "SCS", "SARL", "SCA") Dim i As Byte For i = 0 To UBound(strValCherchee) If InStr(UnChamp, strValCherchee(i)) > 0 Then UnChamp = Replace(UnChamp, strValCherchee(i), strValReplace(i)) Exit For End If Next i fnRemplacer1 = UnChamp End Function
Code de la 2ème solution: Recordset et méthode GetRows Function fnRemplacer2(UnChamp) As String ' Charger la référence Microsoft DAO 3.x Object library If IsNull(UnChamp) Then Exit Function Dim i As Byte ' pas plus de 255 dénominations supposées Dim varTableau Dim rst As DAO.Recordset ' on crée un recordset sur la table contenant les dénominations ' longues et courtes des sociétés Set rst = CurrentDb.OpenRecordset("TableDesRS") ' la table des RS a 2 champs : RS_Long et RS_Short rst.MoveLast: rst.MoveFirst ' pour connaitre le nb d'enreg. ' on charge en mémoire les 2 types de dénominations dans un tableau varTableau = rst.GetRows(rst.RecordCount) rst.Close: Set rst = Nothing ' Boucle de recherche-remplacement For i = 0 To UBound(varTableau, 2) If InStr(UnChamp, varTableau(0, i)) > 0 Then UnChamp = Replace(UnChamp, varTableau(0, i), varTableau(1, i)) Exit For ' remplacement effectué End If Next i Erase varTableau fnRemplacer2 = UnChamp End Function
Bonjour à tous,
En complement d'un post anterieur ,je resume: Dans une requete ,je voudrais remplacer dans un champs texte contenant la raision sociale des societes la chaine de caractere Societe Anonyme par SA, Societe Commerciale par SC Dans ma table ,le libelle et le nom de la societe se trouve dans le meme champs,ce que je voudrais faire cest dans une requete (que SA ,sarl remplace le libelle suivi du nom de la societe (un peut comme ds le menu chercher et remplacer par) sans modifier ma table.
Je pense avoir trouve un debut de solution avec: VraiFaux([kangoo]![ADRESSE] Comme "*Societe commerciale*";Remplacer([kangoo]![ADRESSE];"Societe commerciale";"SC");VraiFaux([kangoo]![ADRESSE] Comme "*Societe anonyme*";Remplacer([kangoo]![ADRESSE];"Societe anonyme";"SA");[kangoo]![ADRESSE]))
Ce que je voudrais c'est crer une fonction avec SELECT CASE pour effectuer plus de 6 changements par exemple mais je rencontre des difficultes,avez vous des idees?? Merci pour votre aide Hugo
-- A+ Eric http://www.mpfa.info/ Archives : http://groups.google.fr/group/microsoft.public.fr.access?hl=fr
Bonjour Eric,
Merci c'est parfait
Hugo
Bonjour,
Je ne suis pas sûr que le Select Case soit le mieux approprié.
Je te propose 2 solutions.
La 1ère travaille avec la fonction Array() qui renvoie une variable de
type Variant contenant un tableau. Le défaut c'est que cette solution
est 'figée' puisque tu renseignes dans le code les items des tableaux.
La 2ème fait appel, comme te l'indiquait Thom dans ton 1er post, à une
table contenant les raisons sociales longues et courtes. Avantage : pas
de limite quant aux nombres de dénominations.
Un problème risque de se greffer, à savoir le respect ou non de
l'accentuation.
Dans la requête, tu appeles les fonctions comme suit:
Remplacement1: fnRemplacer1([RaisonSociale])
ou Remplacement2: fnRemplacer2([RaisonSociale])
Ex de sortie:
RaisonSociale Remplacement1 Remplacement2
Société commerciale A SC A SC A
Entreprise unipersonnelle à responsabilité limitée B EURL B EURL B
Société anonyme C SA C SA C
Société en nom Collectif D SNC D SNC D
Société en commandite simple E SCS E SCS E
Société à responsabilté limitée F SARL F SARL F
Société commerciale G SC G SC G
Société anonyme H SA H SA H
Société en commandite par action Z SCA Z SCA Z
(les codes sont à copier dans un module de portée globale)
Code de la 1ère solution: Array()
Function fnRemplacer1(UnChamp) As String
If IsNull(UnChamp) Then Exit Function
Dim strValCherchee
Dim strValReplace
strValCherchee = Array("Société commerciale", _
"Entreprise unipersonnelle à responsabilité
limitée", _
"Société anonyme", "Société en nom Collectif", _
"Société en commandite simple", _
"Société à responsabilté limitée", _
"Société en commandite par action")
strValReplace = Array("SC", "EURL", "SA", "SNC", "SCS", "SARL", "SCA")
Dim i As Byte
For i = 0 To UBound(strValCherchee)
If InStr(UnChamp, strValCherchee(i)) > 0 Then
UnChamp = Replace(UnChamp, strValCherchee(i), strValReplace(i))
Exit For
End If
Next i
fnRemplacer1 = UnChamp
End Function
Code de la 2ème solution: Recordset et méthode GetRows
Function fnRemplacer2(UnChamp) As String
' Charger la référence Microsoft DAO 3.x Object library
If IsNull(UnChamp) Then Exit Function
Dim i As Byte ' pas plus de 255 dénominations supposées
Dim varTableau
Dim rst As DAO.Recordset
' on crée un recordset sur la table contenant les dénominations
' longues et courtes des sociétés
Set rst = CurrentDb.OpenRecordset("TableDesRS")
' la table des RS a 2 champs : RS_Long et RS_Short
rst.MoveLast: rst.MoveFirst ' pour connaitre le nb d'enreg.
' on charge en mémoire les 2 types de dénominations dans un tableau
varTableau = rst.GetRows(rst.RecordCount)
rst.Close: Set rst = Nothing
' Boucle de recherche-remplacement
For i = 0 To UBound(varTableau, 2)
If InStr(UnChamp, varTableau(0, i)) > 0 Then
UnChamp = Replace(UnChamp, varTableau(0, i), varTableau(1, i))
Exit For ' remplacement effectué
End If
Next i
Erase varTableau
fnRemplacer2 = UnChamp
End Function
Bonjour à tous,
En complement d'un post anterieur ,je resume:
Dans une requete ,je voudrais remplacer dans un champs texte contenant la
raision sociale des societes la chaine de caractere Societe Anonyme par SA,
Societe Commerciale par SC
Dans ma table ,le libelle et le nom de la societe se trouve dans le meme
champs,ce que je voudrais faire cest dans une requete (que SA ,sarl remplace
le libelle suivi du nom de la societe (un peut comme ds le menu chercher et
remplacer par) sans modifier ma table.
Je pense avoir trouve un debut de solution avec:
VraiFaux([kangoo]![ADRESSE] Comme "*Societe
commerciale*";Remplacer([kangoo]![ADRESSE];"Societe
commerciale";"SC");VraiFaux([kangoo]![ADRESSE] Comme "*Societe
anonyme*";Remplacer([kangoo]![ADRESSE];"Societe
anonyme";"SA");[kangoo]![ADRESSE]))
Ce que je voudrais c'est crer une fonction avec SELECT CASE pour effectuer
plus de 6 changements par exemple mais je rencontre des difficultes,avez vous
des idees??
Merci pour votre aide
Hugo
--
A+
Eric
http://www.mpfa.info/
Archives : http://groups.google.fr/group/microsoft.public.fr.access?hl=fr
Je ne suis pas sûr que le Select Case soit le mieux approprié.
Je te propose 2 solutions. La 1ère travaille avec la fonction Array() qui renvoie une variable de type Variant contenant un tableau. Le défaut c'est que cette solution est 'figée' puisque tu renseignes dans le code les items des tableaux.
La 2ème fait appel, comme te l'indiquait Thom dans ton 1er post, à une table contenant les raisons sociales longues et courtes. Avantage : pas de limite quant aux nombres de dénominations.
Un problème risque de se greffer, à savoir le respect ou non de l'accentuation.
Dans la requête, tu appeles les fonctions comme suit: Remplacement1: fnRemplacer1([RaisonSociale]) ou Remplacement2: fnRemplacer2([RaisonSociale])
Ex de sortie: RaisonSociale Remplacement1 Remplacement2 Société commerciale A SC A SC A Entreprise unipersonnelle à responsabilité limitée B EURL B EURL B Société anonyme C SA C SA C Société en nom Collectif D SNC D SNC D Société en commandite simple E SCS E SCS E Société à responsabilté limitée F SARL F SARL F Société commerciale G SC G SC G Société anonyme H SA H SA H Société en commandite par action Z SCA Z SCA Z
(les codes sont à copier dans un module de portée globale)
Code de la 1ère solution: Array() Function fnRemplacer1(UnChamp) As String If IsNull(UnChamp) Then Exit Function Dim strValCherchee Dim strValReplace strValCherchee = Array("Société commerciale", _ "Entreprise unipersonnelle à responsabilité limitée", _ "Société anonyme", "Société en nom Collectif", _ "Société en commandite simple", _ "Société à responsabilté limitée", _ "Société en commandite par action") strValReplace = Array("SC", "EURL", "SA", "SNC", "SCS", "SARL", "SCA") Dim i As Byte For i = 0 To UBound(strValCherchee) If InStr(UnChamp, strValCherchee(i)) > 0 Then UnChamp = Replace(UnChamp, strValCherchee(i), strValReplace(i)) Exit For End If Next i fnRemplacer1 = UnChamp End Function
Code de la 2ème solution: Recordset et méthode GetRows Function fnRemplacer2(UnChamp) As String ' Charger la référence Microsoft DAO 3.x Object library If IsNull(UnChamp) Then Exit Function Dim i As Byte ' pas plus de 255 dénominations supposées Dim varTableau Dim rst As DAO.Recordset ' on crée un recordset sur la table contenant les dénominations ' longues et courtes des sociétés Set rst = CurrentDb.OpenRecordset("TableDesRS") ' la table des RS a 2 champs : RS_Long et RS_Short rst.MoveLast: rst.MoveFirst ' pour connaitre le nb d'enreg. ' on charge en mémoire les 2 types de dénominations dans un tableau varTableau = rst.GetRows(rst.RecordCount) rst.Close: Set rst = Nothing ' Boucle de recherche-remplacement For i = 0 To UBound(varTableau, 2) If InStr(UnChamp, varTableau(0, i)) > 0 Then UnChamp = Replace(UnChamp, varTableau(0, i), varTableau(1, i)) Exit For ' remplacement effectué End If Next i Erase varTableau fnRemplacer2 = UnChamp End Function
Bonjour à tous,
En complement d'un post anterieur ,je resume: Dans une requete ,je voudrais remplacer dans un champs texte contenant la raision sociale des societes la chaine de caractere Societe Anonyme par SA, Societe Commerciale par SC Dans ma table ,le libelle et le nom de la societe se trouve dans le meme champs,ce que je voudrais faire cest dans une requete (que SA ,sarl remplace le libelle suivi du nom de la societe (un peut comme ds le menu chercher et remplacer par) sans modifier ma table.
Je pense avoir trouve un debut de solution avec: VraiFaux([kangoo]![ADRESSE] Comme "*Societe commerciale*";Remplacer([kangoo]![ADRESSE];"Societe commerciale";"SC");VraiFaux([kangoo]![ADRESSE] Comme "*Societe anonyme*";Remplacer([kangoo]![ADRESSE];"Societe anonyme";"SA");[kangoo]![ADRESSE]))
Ce que je voudrais c'est crer une fonction avec SELECT CASE pour effectuer plus de 6 changements par exemple mais je rencontre des difficultes,avez vous des idees?? Merci pour votre aide Hugo
-- A+ Eric http://www.mpfa.info/ Archives : http://groups.google.fr/group/microsoft.public.fr.access?hl=fr