OVH Cloud OVH Cloud

Extraction Chaine de caratères

10 réponses
Avatar
alain teyssedre
Bonjour

J'ai une zône de Texte qui à pour valeur : XXX - YYYY ou
XXX et YYYY sont 2 nombres de longuer variable.

Comment puis je extraire les 2 nombres XXX et YYYY de cette chaine
de caractères ?

merci

Alain

10 réponses

Avatar
Raymond
Bonjour.

la structure est bien toujours celle-ci quelle que soit la longueur ? un
tiret sépare toujours les deux nombres ? quel est le signe négatif ou n'y en
a-t-il pas ? peut-il y avoir d'autres caractères "parasites" ? quelle
version d'Access ?
1 question, reponse en 5 questions, qui dit mieux ?
--
@+
Raymond Access MVP.
http://access.seneque.free.fr/
http://users.skynet.be/mpfa/charte.htm pour une meilleure
efficacité de tes interventions sur MPFA.


"alain teyssedre" a écrit dans le message de
news:%23$
Bonjour

J'ai une zône de Texte qui à pour valeur : XXX - YYYY ou
XXX et YYYY sont 2 nombres de longuer variable.

Comment puis je extraire les 2 nombres XXX et YYYY de cette chaine
de caractères ?

merci

Alain






Avatar
Pierre CFI
bonjour
a tester, il faudra peut etre mettre + ou - 1

Partie1 = Left(NomZone,instr(NomZone,"-"))
partie2 = Mid (NomZone,instr(NomZone,"-")+1)

--
Pierre CFI
MVP Microsoft Access

Site pour bien commencer
http://users.skynet.be/mpfa/
Site perso
http://access.cfi.free.fr
"alain teyssedre" a écrit dans le message de news: #$
Bonjour

J'ai une zône de Texte qui à pour valeur : XXX - YYYY ou
XXX et YYYY sont 2 nombres de longuer variable.

Comment puis je extraire les 2 nombres XXX et YYYY de cette chaine
de caractères ?

merci

Alain






Avatar
Raymond
Si le nombre est négatif ça va pas faire.
il va pas aimer les espaces non plus.
moi j'attend la réponse d'alain, ça va sûrement changer.
--
@+
Raymond Access MVP.
http://access.seneque.free.fr/
http://users.skynet.be/mpfa/charte.htm pour une meilleure
efficacité de tes interventions sur MPFA.


"Pierre CFI" a écrit dans le message de
news:
bonjour
a tester, il faudra peut etre mettre + ou - 1

Partie1 = Left(NomZone,instr(NomZone,"-"))
partie2 = Mid (NomZone,instr(NomZone,"-")+1)



Avatar
alain teyssedre
Moi qui essaye de rédiger des questions brèves ....merci de me donner
l'occasion de me lacher.

Ma zone de texte sert en fait à entrer un paramètre destiné à une requette
qui sélectionne mes
enregistrement.

Le contenu de cette zone de texte doit etre soit
- un nombre entier positif
- 2 nombres entiers positifs séparés par "-" ou tout autre caratère
identifiable

à coté de cette zône de Texte j'ai un groupe d'option avec les 3 options
suivantes:
- Valeur > - Valeur < - Valeur comprise entre ....

En fonction de la sélection faite sur le groupe d'option, j'écris le code de
la requete correspondante .

Il y a donc 2 problèmes à résoudre :
- extraire les 2 nombre lorsque le cas se présnte
- empécher l'utilisateur de rentrer autre chose qu'un Nbre entier
positif ou 2 nombres entiers positifs séparés par "-" ou tout autre
caratère identifiable

quelle est la solution la plus élégante ?

cdlt
Alain



"Raymond" a écrit dans le message de news:
#
Si le nombre est négatif ça va pas faire.
il va pas aimer les espaces non plus.
moi j'attend la réponse d'alain, ça va sûrement changer.
--
@+
Raymond Access MVP.
http://access.seneque.free.fr/
http://users.skynet.be/mpfa/charte.htm pour une meilleure
efficacité de tes interventions sur MPFA.


"Pierre CFI" a écrit dans le message de
news:
bonjour
a tester, il faudra peut etre mettre + ou - 1

Partie1 = Left(NomZone,instr(NomZone,"-"))
partie2 = Mid (NomZone,instr(NomZone,"-")+1)







Avatar
Raymond
Bonsoir.

je te prie de m'excuser pour le retard de la réponse.
pour faire mes essais j'ai créé un formulaire avec les contrôles suivants:
1 contrôle texte Montant_Composé dans lequel est saisie le nombre ou les
nombres
1 contrôle texte Montant_1 qui contient le premier nombre
1 contrôle texte Montant_2 qui contient le 2e nombre ou 0
1 groupe d'option Groupe_Options >= <= et entre qui ont une valeur de 1, 2
et 3 avec une valeur par défaut 3 (entre)
Aperçu des touches = oui
si deux nombres, les séparer par un et un seul espace.

Tu adapteras les différents contrôles à tes propres contrôles.
le code du formulaire est le suivant, à tester et à améliorer:

Option Compare Database
Option Explicit

Dim Montants As Variant

Private Sub Form_Current()
Me.Groupe_Options = 3
End Sub

Private Sub Montant_Composé_BeforeUpdate(Cancel As Integer)
Montants = Split(Me.Montant_Composé)
If Me.Groupe_Options = 3 And UBound(Montants) <> 1 Then
Cancel = True
Exit Sub
ElseIf Me.Groupe_Options = 3 And UBound(Montants) = 1 Then
Me.Montant_1 = Montants(0)
Me.Montant_2 = Montants(1)
Exit Sub
End If
If UBound(Montants) <> 0 Then
Cancel = True
Exit Sub
Else
Me.Montant_1 = Montants(0)
Me.Montant_2 = 0
Exit Sub
End If
End Sub

Private Sub Montant_Composé_Enter()
Me.Montant_Composé = ""
End Sub

Private Sub Montant_Composé_KeyDown(KeyCode As Integer, Shift As Integer)
If (KeyCode >= 48 And KeyCode <= 57) Or (KeyCode = 8) Then Exit Sub
If (KeyCode = 32 And Me.Groupe_Options = 3) Then Exit Sub
If (KeyCode = 13) Then Exit Sub
KeyCode = 0
End Sub

en résumé voici ce que fait le code:
1- sur chaque touche enfoncée on teste le code de la touche et on ne laisse
passer que les touches numériques, retiour-arrière, espace si groupe_option
= 3 et la touche entrée. Tu testeras bien les codes sur ton poste, tu
changeras éventuellement les valeurs et tu en rajouteras si tu veux.

2- à chaque changement d'enregistrement on vide le champ composé.

3- avant d'enregistrer la mise à jour du champ composé, on teste:
groupe_options 3 et different de 2 montants ==> erreur
groupe_options 3 et 2 montants ==> ok
pour les autres options, si différent de 1 montant ==> erreur

on doit pouvoir améliorer ce code, est-il le plus élégant comme demandé, je
ne sais pas. Il fonctionne sur access 2000, je l'ai bien testé.
--
@+
Raymond Access MVP.
http://access.seneque.free.fr/
http://users.skynet.be/mpfa/charte.htm pour une meilleure
efficacité de tes interventions sur MPFA.


"Raymond" a écrit dans le message de
news:
Quand Pierre aura mon pif pour renifler les questions incomplètes, on lui
décernera la médaille d'honneur MPFA et seulement à ce moment-là il pourra
prétendre à faire valoir certains droit à la retraite. ça peut durer
encore

longtemp.

Sur ce, je rentre chez moi, si Pierre ne t'as pas répondu je le ferais
dans

1h environ, de toute façon ce soir.

--
@+
Raymond Access MVP.
http://access.seneque.free.fr/
http://users.skynet.be/mpfa/charte.htm pour une meilleure
efficacité de tes interventions sur MPFA.


"alain teyssedre" a écrit dans le message de
news:
Moi qui essaye de rédiger des questions brèves ....merci de me donner
l'occasion de me lacher.

Ma zone de texte sert en fait à entrer un paramètre destiné à une
requette


qui sélectionne mes
enregistrement.

Le contenu de cette zone de texte doit etre soit
- un nombre entier positif
- 2 nombres entiers positifs séparés par "-" ou tout autre caratère
identifiable

à coté de cette zône de Texte j'ai un groupe d'option avec les 3 options
suivantes:
- Valeur > > > - Valeur < > > - Valeur comprise entre ....

En fonction de la sélection faite sur le groupe d'option, j'écris le
code


de
la requete correspondante .

Il y a donc 2 problèmes à résoudre :
- extraire les 2 nombre lorsque le cas se présnte
- empécher l'utilisateur de rentrer autre chose qu'un Nbre entier
positif ou 2 nombres entiers positifs séparés par "-" ou tout autre
caratère identifiable

quelle est la solution la plus élégante ?

cdlt
Alain






Avatar
alain teyssedre
Bonjour Raymond

Ta mémoire présentant des troubles manifestes (tu devais me répondre
vendredi dernier : promis juré craché)
je te propose de faire valoir tes droit Asap à la retraite.

sans rancune @+

Alain


"Raymond" a écrit dans le message de news:

Quand Pierre aura mon pif pour renifler les questions incomplètes, on lui
décernera la médaille d'honneur MPFA et seulement à ce moment-là il pourra
prétendre à faire valoir certains droit à la retraite. ça peut durer
encore

longtemp.

Sur ce, je rentre chez moi, si Pierre ne t'as pas répondu je le ferais
dans

1h environ, de toute façon ce soir.

--
@+
Raymond Access MVP.
http://access.seneque.free.fr/
http://users.skynet.be/mpfa/charte.htm pour une meilleure
efficacité de tes interventions sur MPFA.


"alain teyssedre" a écrit dans le message de
news:
Moi qui essaye de rédiger des questions brèves ....merci de me donner
l'occasion de me lacher.

Ma zone de texte sert en fait à entrer un paramètre destiné à une
requette


qui sélectionne mes
enregistrement.

Le contenu de cette zone de texte doit etre soit
- un nombre entier positif
- 2 nombres entiers positifs séparés par "-" ou tout autre caratère
identifiable

à coté de cette zône de Texte j'ai un groupe d'option avec les 3 options
suivantes:
- Valeur > > > - Valeur < > > - Valeur comprise entre ....

En fonction de la sélection faite sur le groupe d'option, j'écris le
code


de
la requete correspondante .

Il y a donc 2 problèmes à résoudre :
- extraire les 2 nombre lorsque le cas se présnte
- empécher l'utilisateur de rentrer autre chose qu'un Nbre entier
positif ou 2 nombres entiers positifs séparés par "-" ou tout autre
caratère identifiable

quelle est la solution la plus élégante ?

cdlt
Alain






Avatar
Raymond
Bonjour Alain.

Moi je vais te payer un chien pour qu'il puisse lire à ta place.
tu as un post daté du 5/09 à 20:21 situé juste en dessus ou dessous qui te
donne ma réponse.

Je te redonne ma réponse:

Bonsoir.

je te prie de m'excuser pour le retard de la réponse.
pour faire mes essais j'ai créé un formulaire avec les contrôles suivants:
1 contrôle texte Montant_Composé dans lequel est saisie le nombre ou les
nombres
1 contrôle texte Montant_1 qui contient le premier nombre
1 contrôle texte Montant_2 qui contient le 2e nombre ou 0
1 groupe d'option Groupe_Options >= <= et entre qui ont une valeur de 1, 2
et 3 avec une valeur par défaut 3 (entre)
Aperçu des touches = oui
si deux nombres, les séparer par un et un seul espace.

Tu adapteras les différents contrôles à tes propres contrôles.
le code du formulaire est le suivant, à tester et à améliorer:

Option Compare Database
Option Explicit

Dim Montants As Variant

Private Sub Form_Current()
Me.Groupe_Options = 3
End Sub

Private Sub Montant_Composé_BeforeUpdate(Cancel As Integer)
Montants = Split(Me.Montant_Composé)
If Me.Groupe_Options = 3 And UBound(Montants) <> 1 Then
Cancel = True
Exit Sub
ElseIf Me.Groupe_Options = 3 And UBound(Montants) = 1 Then
Me.Montant_1 = Montants(0)
Me.Montant_2 = Montants(1)
Exit Sub
End If
If UBound(Montants) <> 0 Then
Cancel = True
Exit Sub
Else
Me.Montant_1 = Montants(0)
Me.Montant_2 = 0
Exit Sub
End If
End Sub

Private Sub Montant_Composé_Enter()
Me.Montant_Composé = ""
End Sub

Private Sub Montant_Composé_KeyDown(KeyCode As Integer, Shift As Integer)
If (KeyCode >= 48 And KeyCode <= 57) Or (KeyCode = 8) Then Exit Sub
If (KeyCode = 32 And Me.Groupe_Options = 3) Then Exit Sub
If (KeyCode = 13) Then Exit Sub
KeyCode = 0
End Sub

en résumé voici ce que fait le code:
1- sur chaque touche enfoncée on teste le code de la touche et on ne laisse
passer que les touches numériques, retiour-arrière, espace si groupe_option
= 3 et la touche entrée. Tu testeras bien les codes sur ton poste, tu
changeras éventuellement les valeurs et tu en rajouteras si tu veux.

2- à chaque changement d'enregistrement on vide le champ composé.

3- avant d'enregistrer la mise à jour du champ composé, on teste:
groupe_options 3 et different de 2 montants ==> erreur
groupe_options 3 et 2 montants ==> ok
pour les autres options, si différent de 1 montant ==> erreur

on doit pouvoir améliorer ce code, est-il le plus élégant comme demandé, je
ne sais pas. Il fonctionne sur access 2000, je l'ai bien testé.




--
@+
Raymond Access MVP.
http://access.seneque.free.fr/
http://users.skynet.be/mpfa/charte.htm pour une meilleure
efficacité de tes interventions sur MPFA.


"alain teyssedre" a écrit dans le message de
news:
Bonjour Raymond

Ta mémoire présentant des troubles manifestes (tu devais me répondre
vendredi dernier : promis juré craché)
je te propose de faire valoir tes droit Asap à la retraite.

sans rancune @+

Alain


"Raymond" a écrit dans le message de news:

Quand Pierre aura mon pif pour renifler les questions incomplètes, on
lui


décernera la médaille d'honneur MPFA et seulement à ce moment-là il
pourra


prétendre à faire valoir certains droit à la retraite. ça peut durer
encore

longtemp.

Sur ce, je rentre chez moi, si Pierre ne t'as pas répondu je le ferais
dans

1h environ, de toute façon ce soir.

--
@+
Raymond Access MVP.
http://access.seneque.free.fr/
http://users.skynet.be/mpfa/charte.htm pour une meilleure
efficacité de tes interventions sur MPFA.


"alain teyssedre" a écrit dans le message
de


news:
Moi qui essaye de rédiger des questions brèves ....merci de me donner
l'occasion de me lacher.

Ma zone de texte sert en fait à entrer un paramètre destiné à une
requette


qui sélectionne mes
enregistrement.

Le contenu de cette zone de texte doit etre soit
- un nombre entier positif
- 2 nombres entiers positifs séparés par "-" ou tout autre
caratère



identifiable

à coté de cette zône de Texte j'ai un groupe d'option avec les 3
options



suivantes:
- Valeur > > > > - Valeur < > > > - Valeur comprise entre ....

En fonction de la sélection faite sur le groupe d'option, j'écris le
code


de
la requete correspondante .

Il y a donc 2 problèmes à résoudre :
- extraire les 2 nombre lorsque le cas se présnte
- empécher l'utilisateur de rentrer autre chose qu'un Nbre entier
positif ou 2 nombres entiers positifs séparés par "-" ou tout autre
caratère identifiable

quelle est la solution la plus élégante ?

cdlt
Alain










Avatar
alain teyssedre
Salut Raymond

J'ai vraiment besoin du chien car impossible pour moi de trouver ton post.
Dans mon cas il vaudrait mieux un chien qui en plus parle "Access" ça me
serait plus utile.

merci pour ta réponse, je vais tester ça et te tiens au courant

cdlt
Alain


"Raymond" a écrit dans le message de news:

Bonjour Alain.

Moi je vais te payer un chien pour qu'il puisse lire à ta place.
tu as un post daté du 5/09 à 20:21 situé juste en dessus ou dessous qui te
donne ma réponse.

Je te redonne ma réponse:

Bonsoir.

je te prie de m'excuser pour le retard de la réponse.
pour faire mes essais j'ai créé un formulaire avec les contrôles suivants:
1 contrôle texte Montant_Composé dans lequel est saisie le nombre ou les
nombres
1 contrôle texte Montant_1 qui contient le premier nombre
1 contrôle texte Montant_2 qui contient le 2e nombre ou 0
1 groupe d'option Groupe_Options >= <= et entre qui ont une valeur de 1,
2

et 3 avec une valeur par défaut 3 (entre)
Aperçu des touches = oui
si deux nombres, les séparer par un et un seul espace.

Tu adapteras les différents contrôles à tes propres contrôles.
le code du formulaire est le suivant, à tester et à améliorer:

Option Compare Database
Option Explicit

Dim Montants As Variant

Private Sub Form_Current()
Me.Groupe_Options = 3
End Sub

Private Sub Montant_Composé_BeforeUpdate(Cancel As Integer)
Montants = Split(Me.Montant_Composé)
If Me.Groupe_Options = 3 And UBound(Montants) <> 1 Then
Cancel = True
Exit Sub
ElseIf Me.Groupe_Options = 3 And UBound(Montants) = 1 Then
Me.Montant_1 = Montants(0)
Me.Montant_2 = Montants(1)
Exit Sub
End If
If UBound(Montants) <> 0 Then
Cancel = True
Exit Sub
Else
Me.Montant_1 = Montants(0)
Me.Montant_2 = 0
Exit Sub
End If
End Sub

Private Sub Montant_Composé_Enter()
Me.Montant_Composé = ""
End Sub

Private Sub Montant_Composé_KeyDown(KeyCode As Integer, Shift As Integer)
If (KeyCode >= 48 And KeyCode <= 57) Or (KeyCode = 8) Then Exit Sub
If (KeyCode = 32 And Me.Groupe_Options = 3) Then Exit Sub
If (KeyCode = 13) Then Exit Sub
KeyCode = 0
End Sub

en résumé voici ce que fait le code:
1- sur chaque touche enfoncée on teste le code de la touche et on ne
laisse

passer que les touches numériques, retiour-arrière, espace si
groupe_option

= 3 et la touche entrée. Tu testeras bien les codes sur ton poste, tu
changeras éventuellement les valeurs et tu en rajouteras si tu veux.

2- à chaque changement d'enregistrement on vide le champ composé.

3- avant d'enregistrer la mise à jour du champ composé, on teste:
groupe_options 3 et different de 2 montants ==> erreur
groupe_options 3 et 2 montants ==> ok
pour les autres options, si différent de 1 montant ==> erreur

on doit pouvoir améliorer ce code, est-il le plus élégant comme demandé,
je

ne sais pas. Il fonctionne sur access 2000, je l'ai bien testé.




--
@+
Raymond Access MVP.
http://access.seneque.free.fr/
http://users.skynet.be/mpfa/charte.htm pour une meilleure
efficacité de tes interventions sur MPFA.


"alain teyssedre" a écrit dans le message de
news:
Bonjour Raymond

Ta mémoire présentant des troubles manifestes (tu devais me répondre
vendredi dernier : promis juré craché)
je te propose de faire valoir tes droit Asap à la retraite.

sans rancune @+

Alain


"Raymond" a écrit dans le message de news:

Quand Pierre aura mon pif pour renifler les questions incomplètes, on
lui


décernera la médaille d'honneur MPFA et seulement à ce moment-là il
pourra


prétendre à faire valoir certains droit à la retraite. ça peut durer
encore

longtemp.

Sur ce, je rentre chez moi, si Pierre ne t'as pas répondu je le ferais
dans

1h environ, de toute façon ce soir.

--
@+
Raymond Access MVP.
http://access.seneque.free.fr/
http://users.skynet.be/mpfa/charte.htm pour une meilleure
efficacité de tes interventions sur MPFA.


"alain teyssedre" a écrit dans le
message



de
news:
Moi qui essaye de rédiger des questions brèves ....merci de me
donner




l'occasion de me lacher.

Ma zone de texte sert en fait à entrer un paramètre destiné à une
requette


qui sélectionne mes
enregistrement.

Le contenu de cette zone de texte doit etre soit
- un nombre entier positif
- 2 nombres entiers positifs séparés par "-" ou tout autre
caratère



identifiable

à coté de cette zône de Texte j'ai un groupe d'option avec les 3
options



suivantes:
- Valeur > > > > > - Valeur < > > > > - Valeur comprise entre ....

En fonction de la sélection faite sur le groupe d'option, j'écris le
code


de
la requete correspondante .

Il y a donc 2 problèmes à résoudre :
- extraire les 2 nombre lorsque le cas se présnte
- empécher l'utilisateur de rentrer autre chose qu'un Nbre
entier




positif ou 2 nombres entiers positifs séparés par "-" ou tout autre
caratère identifiable

quelle est la solution la plus élégante ?

cdlt
Alain













Avatar
alain teyssedre
Super ça marche ... merci Raymond

J'ai juste 2 questions :
- comment faire pour comparer les valeurs de Montants(0) et Montants(1)
afin d'affecter systématiquement la valeur la plus faible à Me.Montant_1
?

- ton code laisse passer les caractères &,é,",', ...
- ton code ne laisse pas passer les chiffres du pavé numérique, comment
les prendre en compte ?

merci encore

@+
Alain


"alain teyssedre" a écrit dans le message de
news: #86b$
Salut Raymond

J'ai vraiment besoin du chien car impossible pour moi de trouver ton post.
Dans mon cas il vaudrait mieux un chien qui en plus parle "Access" ça me
serait plus utile.

merci pour ta réponse, je vais tester ça et te tiens au courant

cdlt
Alain


"Raymond" a écrit dans le message de news:

Bonjour Alain.

Moi je vais te payer un chien pour qu'il puisse lire à ta place.
tu as un post daté du 5/09 à 20:21 situé juste en dessus ou dessous qui
te


donne ma réponse.

Je te redonne ma réponse:

Bonsoir.

je te prie de m'excuser pour le retard de la réponse.
pour faire mes essais j'ai créé un formulaire avec les contrôles
suivants:


1 contrôle texte Montant_Composé dans lequel est saisie le nombre ou les
nombres
1 contrôle texte Montant_1 qui contient le premier nombre
1 contrôle texte Montant_2 qui contient le 2e nombre ou 0
1 groupe d'option Groupe_Options >= <= et entre qui ont une valeur de
1,


2
et 3 avec une valeur par défaut 3 (entre)
Aperçu des touches = oui
si deux nombres, les séparer par un et un seul espace.

Tu adapteras les différents contrôles à tes propres contrôles.
le code du formulaire est le suivant, à tester et à améliorer:

Option Compare Database
Option Explicit

Dim Montants As Variant

Private Sub Form_Current()
Me.Groupe_Options = 3
End Sub

Private Sub Montant_Composé_BeforeUpdate(Cancel As Integer)
Montants = Split(Me.Montant_Composé)
If Me.Groupe_Options = 3 And UBound(Montants) <> 1 Then
Cancel = True
Exit Sub
ElseIf Me.Groupe_Options = 3 And UBound(Montants) = 1 Then
Me.Montant_1 = Montants(0)
Me.Montant_2 = Montants(1)
Exit Sub
End If
If UBound(Montants) <> 0 Then
Cancel = True
Exit Sub
Else
Me.Montant_1 = Montants(0)
Me.Montant_2 = 0
Exit Sub
End If
End Sub

Private Sub Montant_Composé_Enter()
Me.Montant_Composé = ""
End Sub

Private Sub Montant_Composé_KeyDown(KeyCode As Integer, Shift As
Integer)


If (KeyCode >= 48 And KeyCode <= 57) Or (KeyCode = 8) Then Exit Sub
If (KeyCode = 32 And Me.Groupe_Options = 3) Then Exit Sub
If (KeyCode = 13) Then Exit Sub
KeyCode = 0
End Sub

en résumé voici ce que fait le code:
1- sur chaque touche enfoncée on teste le code de la touche et on ne
laisse

passer que les touches numériques, retiour-arrière, espace si
groupe_option

= 3 et la touche entrée. Tu testeras bien les codes sur ton poste, tu
changeras éventuellement les valeurs et tu en rajouteras si tu veux.

2- à chaque changement d'enregistrement on vide le champ composé.

3- avant d'enregistrer la mise à jour du champ composé, on teste:
groupe_options 3 et different de 2 montants ==> erreur
groupe_options 3 et 2 montants ==> ok
pour les autres options, si différent de 1 montant ==> erreur

on doit pouvoir améliorer ce code, est-il le plus élégant comme demandé,
je

ne sais pas. Il fonctionne sur access 2000, je l'ai bien testé.




--
@+
Raymond Access MVP.
http://access.seneque.free.fr/
http://users.skynet.be/mpfa/charte.htm pour une meilleure
efficacité de tes interventions sur MPFA.


"alain teyssedre" a écrit dans le message
de


news:
Bonjour Raymond

Ta mémoire présentant des troubles manifestes (tu devais me répondre
vendredi dernier : promis juré craché)
je te propose de faire valoir tes droit Asap à la retraite.

sans rancune @+

Alain


"Raymond" a écrit dans le message de news:

Quand Pierre aura mon pif pour renifler les questions incomplètes,
on




lui
décernera la médaille d'honneur MPFA et seulement à ce moment-là il
pourra


prétendre à faire valoir certains droit à la retraite. ça peut durer
encore

longtemp.

Sur ce, je rentre chez moi, si Pierre ne t'as pas répondu je le
ferais




dans
1h environ, de toute façon ce soir.

--
@+
Raymond Access MVP.
http://access.seneque.free.fr/
http://users.skynet.be/mpfa/charte.htm pour une meilleure
efficacité de tes interventions sur MPFA.


"alain teyssedre" a écrit dans le
message



de
news:
Moi qui essaye de rédiger des questions brèves ....merci de me
donner




l'occasion de me lacher.

Ma zone de texte sert en fait à entrer un paramètre destiné à une
requette


qui sélectionne mes
enregistrement.

Le contenu de cette zone de texte doit etre soit
- un nombre entier positif
- 2 nombres entiers positifs séparés par "-" ou tout autre
caratère



identifiable

à coté de cette zône de Texte j'ai un groupe d'option avec les 3
options



suivantes:
- Valeur > > > > > > - Valeur < > > > > > - Valeur comprise entre ....

En fonction de la sélection faite sur le groupe d'option, j'écris
le





code
de
la requete correspondante .

Il y a donc 2 problèmes à résoudre :
- extraire les 2 nombre lorsque le cas se présnte
- empécher l'utilisateur de rentrer autre chose qu'un Nbre
entier




positif ou 2 nombres entiers positifs séparés par "-" ou tout
autre





caratère identifiable

quelle est la solution la plus élégante ?

cdlt
Alain

















Avatar
Raymond
Je te l'avais pas dit ? il faut ajuster les caractères que tu désires
laisser passer. Normalement les chiffres devraient passer partout. pour
trouver les valeurs des chiffres tu les as sur :
http://access.seneque.free.fr/tester_touches.htm


- comment faire pour comparer les valeurs de Montants(0) et
Montants(1)

afin d'affecter systématiquement la valeur la plus faible à
Me.Montant_1


If montants(0) < montants(1) Then montants(1)= montants(0)

--
@+
Raymond Access MVP.
http://access.seneque.free.fr/
http://users.skynet.be/mpfa/charte.htm pour une meilleure
efficacité de tes interventions sur MPFA.


"alain teyssedre" a écrit dans le message de
news:
Super ça marche ... merci Raymond

J'ai juste 2 questions :
- comment faire pour comparer les valeurs de Montants(0) et
Montants(1)

afin d'affecter systématiquement la valeur la plus faible à
Me.Montant_1

?

- ton code laisse passer les caractères &,é,",', ...
- ton code ne laisse pas passer les chiffres du pavé numérique,
comment

les prendre en compte ?

merci encore

@+
Alain


"alain teyssedre" a écrit dans le message de
news: #86b$
Salut Raymond

J'ai vraiment besoin du chien car impossible pour moi de trouver ton
post.


Dans mon cas il vaudrait mieux un chien qui en plus parle "Access" ça me
serait plus utile.

merci pour ta réponse, je vais tester ça et te tiens au courant

cdlt
Alain


"Raymond" a écrit dans le message de news:

Bonjour Alain.

Moi je vais te payer un chien pour qu'il puisse lire à ta place.
tu as un post daté du 5/09 à 20:21 situé juste en dessus ou dessous
qui



te
donne ma réponse.

Je te redonne ma réponse:

Bonsoir.

je te prie de m'excuser pour le retard de la réponse.
pour faire mes essais j'ai créé un formulaire avec les contrôles
suivants:


1 contrôle texte Montant_Composé dans lequel est saisie le nombre ou
les



nombres
1 contrôle texte Montant_1 qui contient le premier nombre
1 contrôle texte Montant_2 qui contient le 2e nombre ou 0
1 groupe d'option Groupe_Options >= <= et entre qui ont une valeur de
1,


2
et 3 avec une valeur par défaut 3 (entre)
Aperçu des touches = oui
si deux nombres, les séparer par un et un seul espace.

Tu adapteras les différents contrôles à tes propres contrôles.
le code du formulaire est le suivant, à tester et à améliorer:

Option Compare Database
Option Explicit

Dim Montants As Variant

Private Sub Form_Current()
Me.Groupe_Options = 3
End Sub

Private Sub Montant_Composé_BeforeUpdate(Cancel As Integer)
Montants = Split(Me.Montant_Composé)
If Me.Groupe_Options = 3 And UBound(Montants) <> 1 Then
Cancel = True
Exit Sub
ElseIf Me.Groupe_Options = 3 And UBound(Montants) = 1 Then
Me.Montant_1 = Montants(0)
Me.Montant_2 = Montants(1)
Exit Sub
End If
If UBound(Montants) <> 0 Then
Cancel = True
Exit Sub
Else
Me.Montant_1 = Montants(0)
Me.Montant_2 = 0
Exit Sub
End If
End Sub

Private Sub Montant_Composé_Enter()
Me.Montant_Composé = ""
End Sub

Private Sub Montant_Composé_KeyDown(KeyCode As Integer, Shift As
Integer)


If (KeyCode >= 48 And KeyCode <= 57) Or (KeyCode = 8) Then Exit
Sub



If (KeyCode = 32 And Me.Groupe_Options = 3) Then Exit Sub
If (KeyCode = 13) Then Exit Sub
KeyCode = 0
End Sub

en résumé voici ce que fait le code:
1- sur chaque touche enfoncée on teste le code de la touche et on ne
laisse

passer que les touches numériques, retiour-arrière, espace si
groupe_option

= 3 et la touche entrée. Tu testeras bien les codes sur ton poste, tu
changeras éventuellement les valeurs et tu en rajouteras si tu veux.

2- à chaque changement d'enregistrement on vide le champ composé.

3- avant d'enregistrer la mise à jour du champ composé, on teste:
groupe_options 3 et different de 2 montants ==> erreur
groupe_options 3 et 2 montants ==> ok
pour les autres options, si différent de 1 montant ==> erreur

on doit pouvoir améliorer ce code, est-il le plus élégant comme
demandé,



je
ne sais pas. Il fonctionne sur access 2000, je l'ai bien testé.




--
@+
Raymond Access MVP.
http://access.seneque.free.fr/
http://users.skynet.be/mpfa/charte.htm pour une meilleure
efficacité de tes interventions sur MPFA.


"alain teyssedre" a écrit dans le
message



de
news:
Bonjour Raymond

Ta mémoire présentant des troubles manifestes (tu devais me répondre
vendredi dernier : promis juré craché)
je te propose de faire valoir tes droit Asap à la retraite.

sans rancune @+

Alain


"Raymond" a écrit dans le message de news:

Quand Pierre aura mon pif pour renifler les questions incomplètes,
on




lui
décernera la médaille d'honneur MPFA et seulement à ce moment-là
il





pourra
prétendre à faire valoir certains droit à la retraite. ça peut
durer





encore
longtemp.

Sur ce, je rentre chez moi, si Pierre ne t'as pas répondu je le
ferais




dans
1h environ, de toute façon ce soir.

--
@+
Raymond Access MVP.
http://access.seneque.free.fr/
http://users.skynet.be/mpfa/charte.htm pour une meilleure
efficacité de tes interventions sur MPFA.


"alain teyssedre" a écrit dans le
message



de
news:
Moi qui essaye de rédiger des questions brèves ....merci de me
donner




l'occasion de me lacher.

Ma zone de texte sert en fait à entrer un paramètre destiné à
une






requette
qui sélectionne mes
enregistrement.

Le contenu de cette zone de texte doit etre soit
- un nombre entier positif
- 2 nombres entiers positifs séparés par "-" ou tout autre
caratère



identifiable

à coté de cette zône de Texte j'ai un groupe d'option avec les 3
options



suivantes:
- Valeur > > > > > > > - Valeur < > > > > > > - Valeur comprise entre ....

En fonction de la sélection faite sur le groupe d'option,
j'écris






le
code
de
la requete correspondante .

Il y a donc 2 problèmes à résoudre :
- extraire les 2 nombre lorsque le cas se présnte
- empécher l'utilisateur de rentrer autre chose qu'un Nbre
entier




positif ou 2 nombres entiers positifs séparés par "-" ou tout
autre





caratère identifiable

quelle est la solution la plus élégante ?

cdlt
Alain