Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

Extraction de caractères dans un champ

5 réponses
Avatar
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.

5 réponses

Avatar
3stone
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)
Avatar
Dom
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.
Avatar
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)
Avatar
Dom
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" a écrit dans le message de news:

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)



Avatar
3stone
"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)