Extraction des valeurs numériques dans une chaine

Le
RENAUD Eric
Bonjour,
J'ai un champ [Jours de transport] avec des libéllés comme suit :

2 Jours de transport
5 Jours de transport
10 Jours de transport
Pas de jours de transport

Je souhaiterai avec un champ calculé pouvoir récupèrer respectivevement 2,
5, 10 et 0 (si pas de jours)
J'ai fait avec Excel mais là je sèche.
D'avance merci.
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
Dragan
Le #17691881
Bonjour Renaud,
d'après ce que tu écris il y a une valeur numérique devant le mot " Jour"
quand les 3 premières lettres sont différentes du mot "Pas". Donc :

IF LEFT([J de t],3)="Pas"
THEN NbJours=0
ELSE NbJours=CINT(LEFT([J de t], INSTR([J de t]," Jour")-1))

sur une seule ligne :
NbJours IIF(LEFT([J de t],3)="Pas",0,CINT(LEFT([J de t],INSTR([J de t]," Jour")-1)))


"RENAUD Eric" a écrit :

Bonjour,
J'ai un champ [Jours de transport] avec des libéllés comme suit :

2 Jours de transport
5 Jours de transport
10 Jours de transport
Pas de jours de transport

Je souhaiterai avec un champ calculé pouvoir récupèrer respectivevement 2,
5, 10 et 0 (si pas de jours)
J'ai fait avec Excel mais là je sèche.
D'avance merci.





TopJB
Le #17695181
Bonjour,

La solution de Dragan me semble bonne.

En voici une autre donc tu peux faire dans un module :

--------------- Début du code ---------------------

Function RecupNbJourTransport (ChaineATraiter as string) as integer
'ChaineATraiter resprésente la valeur de ton champ que tu passe en
paramètre à la fonction
'Si tu veut retourner une chaine de caractère tu remplace 'integer' par
'string'

Dim StrTable() as String

'Découpage dans un tableau de ta chaîne sur la lettre "J" pour jour
'Donc ce qui donne pour:
'2 Jours de transport => dans la première case de ton tableau tu auras
"2 " et dans la seconde "Jours de transport"
'Pas de jours de transport => dans la première case de ton tableau tu
auras "Pas de " et dans la seconde "jours de transport"
StrTable = Split(ChaineATraiter,"J")

'Ensuite on vérifie si la première case est un numérique
'Si oui on stocke le chiffre sinon on stocke 0
'La fonction Trim supprime les espaces avant et après une chaine de
caractères
if IsNumeric(Trim(StrTable(0))) then
'La tu peut enlever le Cint si tu veut retourner une chaine de
caractère au lieu d'un numérique
RecupNbJourTransport = Cint(trim(StrTable(0))
else
'Si tu veux retourner une chaine de caractère au lieu d'un numérique
mets "0" à la place de 0
RecupNbJourTransport = 0
end if

End Function

----------------- Fin du code --------------------

Donc à l'endroit ou tu veut récupérer le nombre de jour tu appelle la
fonction est écrivant :

'TaVariable' = RecupNbJourTransport(me.[Jours de transport])

Voilà

Cordialement


RENAUD Eric a écrit :
Bonjour,
J'ai un champ [Jours de transport] avec des libéllés comme suit :

2 Jours de transport
5 Jours de transport
10 Jours de transport
Pas de jours de transport

Je souhaiterai avec un champ calculé pouvoir récupèrer respectivevement 2,
5, 10 et 0 (si pas de jours)
J'ai fait avec Excel mais là je sèche.
D'avance merci.




Eric
Le #17696301
Bonsoir,


En plus simple :

Dans un contrôle indépendant de formulaire/état:
en Source controle : =VRAIFAUX(Pas EstNull([Jours de
transport]);CNUM([Jours de transport]);"")

Dans une requête:
NBJ:CNUM([Jours de transport])

Dans du code :
NBJ=VAL([Jours de transport])

mais il faudra tester si le champ n'est pas null soit en critère sur le
champ [Jours de transport] dans la requête soit via un if dans le code

RENAUD Eric a écrit :
Bonjour,
J'ai un champ [Jours de transport] avec des libéllés comme suit :

2 Jours de transport
5 Jours de transport
10 Jours de transport
Pas de jours de transport

Je souhaiterai avec un champ calculé pouvoir récupèrer respectivevement 2,
5, 10 et 0 (si pas de jours)
J'ai fait avec Excel mais là je sèche.
D'avance merci.





--
A+
Eric
http://www.mpfa.info/
Archives : http://groups.google.fr/group/microsoft.public.fr.access?hl=fr
Publicité
Poster une réponse
Anonyme