Extraction de caractères dans un champ

Le
Dom
Bonjour,
[Access 97]

Soit un champ texte [A] comprenant les 4 enregistrements exemples suivants
(la taille du champ est de 255 caractères) :

COMMUNAUTE DE COMMUNES CANTON VII 343.8263 343.8264 870 559,72
COMMISSION SYNDICALE MARBOL LIGE 343.8265 343.8266 9 566,20
AF BILIGNE - 343.8271 343.8272 3 135,99
S.I.T.S DE BILIGNE - 343.8265 343.8266 153 474,09

Soit également un champ texte [B] vide.

Je souhaite extraire du champ [A] les caractères situés après le 5ème
caractère (un espace) suivant le dernier . (point) de chaque enregistrement
pour les coller dans le champ [B].

Ce qui donnerait dans les 4 enregistrements du champ [B] :

870 559,72
9 566,20
3 135,99
153 474,09

Si un (ou une) membre de ce forum pouvait me donner la solution (en
supposant que cela soit faisable), cela m'arrangerait bien. J'ai essayé avec
diverses fonctions se rapportant au traitement de chaînes de caractères,
mais je n'ai pas obtenu le résultat escompté.

Bien cordialement,

Dominique.
Vidéos High-Tech et Jeu Vidéo
Téléchargements
Vos réponses
Gagnez chaque mois un abonnement Premium avec GNT : Inscrivez-vous !
Trier par : date / pertinence
3stone
Le #6298701
Salut,

"Dom"
| Soit un champ texte [A] comprenant les 4 enregistrements exemples suivants
| (la taille du champ est de 255 caractères) :
|
| COMMUNAUTE DE COMMUNES CANTON VII 343.8263 343.8264 870 559,72
| COMMISSION SYNDICALE MARBOL LIGE 343.8265 343.8266 9 566,20
| AF BILIGNE - 343.8271 343.8272 3 135,99
| S.I.T.S DE BILIGNE - 343.8265 343.8266 153 474,09
|
| Soit également un champ texte [B] vide.
|
| Je souhaite extraire du champ [A] les caractères situés après le 5ème
| caractère (un espace) suivant le dernier . (point) de chaque enregistrement
| pour les coller dans le champ [B].
|
| Ce qui donnerait dans les 4 enregistrements du champ [B] :
|
| 870 559,72


En un coup, cela fait :

Mid(Mid([A], InStrRev([A], ".") + 1), InStr(Mid([A], InStrRev([A], ".") + 1), " "))

;-)


Mais, il vaut mieux utiliser cela dans une fonction, question de facilité...

Function Recup(s As Variant) As String
If Len(s) > 0 Then
Recup = Mid(Mid(s, InStrRev(s, ".") + 1), InStr(Mid(s, InStrRev(s, ".") + 1), " "))
End If
End Function

ce qui, dans une requête avec un champ calculé, devient alors :

Partie: Recup([A])

--
A+
Pierre (3stone) Access MVP
Perso: http://www.3stone.be/
MPFA: http://www.mpfa.info/ (infos générales)
Dom
Le #6298601
Bonjour Pierre,

Et merci de ta réponse.

Malheureusement, il y a un os (en tout cas pour moi), la fonction InStrRev
n'existe pas dans Access 97.

Ton code m'a permis néanmoins de trouver la solution :-))), encore merci.

Après avoir créé un champ [C] dans ma table, j'enchaîne ces trois requêtes,
et ça marche !

UPDATE C53 SET C53.[B] = Right$([A],Len([A])-InStr(1,[A],".")-14);
UPDATE C53 SET C53.[C] = Right$([B],Len([B])-InStr(1,[B],".")-14);
UPDATE C53 SET C53.[C] = [B] WHERE (((C53.[B]) Is Null));

Bien cordialement,

Dominique.
3stone
Le #6298581
Salut,

"Dom"
| Malheureusement, il y a un os (en tout cas pour moi), la fonction InStrRev
| n'existe pas dans Access 97.


Excuses, j'avais oublié... mais tu remplace simplement :
http://access.fr.free.fr/articles.php?lng=fr&pg=3


| Après avoir créé un champ [C] dans ma table, j'enchaîne ces trois requêtes,
| et ça marche !
|
| UPDATE C53 SET C53.[B] = Right$([A],Len([A])-InStr(1,[A],".")-14);
| UPDATE C53 SET C53.[C] = Right$([B],Len([B])-InStr(1,[B],".")-14);
| UPDATE C53 SET C53.[C] = [B] WHERE (((C53.[B]) Is Null));


3 requêtes pour si peu ;-)

--
A+
Pierre (3stone) Access MVP
Perso: http://www.3stone.be/
MPFA: http://www.mpfa.info/ (infos générales)
Dom
Le #6298521
Merci Pierre :-)))

Pierre, tu es Pierre, et sur cette Pierre, je bâtirai ton temple Access (en
pierre, of course) ;-)

C'est pas stone çà ?

Dominique.


"3stone"
Salut,

"Dom"
| Malheureusement, il y a un os (en tout cas pour moi), la fonction
InStrRev
| n'existe pas dans Access 97.


Excuses, j'avais oublié... mais tu remplace simplement :
http://access.fr.free.fr/articles.php?lng=fr&pg=3


| Après avoir créé un champ [C] dans ma table, j'enchaîne ces trois
requêtes,
| et ça marche !
|
| UPDATE C53 SET C53.[B] = Right$([A],Len([A])-InStr(1,[A],".")-14);
| UPDATE C53 SET C53.[C] = Right$([B],Len([B])-InStr(1,[B],".")-14);
| UPDATE C53 SET C53.[C] = [B] WHERE (((C53.[B]) Is Null));


3 requêtes pour si peu ;-)

--
A+
Pierre (3stone) Access MVP
Perso: http://www.3stone.be/
MPFA: http://www.mpfa.info/ (infos générales)



3stone
Le #6298501
"Dom"
| Pierre, tu es Pierre, et sur cette Pierre, je bâtirai ton temple Access (en
| pierre, of course) ;-)
|
| C'est pas stone çà ?


Tu mets tout dans un sac, tu "touilles" et tu obtiens quasiment mon nom et prénom ;-)

C'est pas beau çà ??

:-))

--
A+
Pierre (3stone) Access MVP
Perso: http://www.3stone.be/
MPFA: http://www.mpfa.info/ (infos générales)
Publicité
Poster une réponse
Anonyme