OVH Cloud OVH Cloud

Comment replacer Chaine BIS

2 réponses
Avatar
hugo
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

2 réponses

Avatar
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

Avatar
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