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

Fonction dans Visual Basic pour créer des intervalles

8 réponses
Avatar
JF Desnoyers
Version d'access : 2003

Bonjour,
J'aimerais créer une fonction dans un module qui me permettrait de créer un
champ dans ma table principale, et qui contiendrait des intervalles
discontinues de montants.

Dans ma table "Montant", je voudrais créer le champ Interv_Montant qui
aurait par exemple la valeur texte "0 à 25" si le champ TOTLMONTANT = 14$.
Et que Interv_Montant aurait la valeur "75 à 100" si le champ TOTLMONTANT =
86$.

J'ai déjà essayé la requête PremVrai pour avoir les mêmes résultats, mais
elle n'accepte pas assez de caractères.

Merci

8 réponses

Avatar
Maxence HUBICHE
Hello JF,

Je te propose un truc du genre :

Function fIntervalle(ByVal Valeur as Double, Optional ByVal EspaceIntervalle
as Double = 25) as String
Dim l1 as Long
Dim l2 as Long

l1=(ValeurEspaceIntervalle)*EspaceIntervalle
l2=(1+ValeurEspaceIntervalle)*EspaceIntervalle

fIntervalle= l1 & " à " & l2

End Function

================== Maxence HUBICHE

MVP Access
Revendeur CaseStudio (http://www.casestudio.fr)
Responsable Access sur http://www.developpez.com
La plus grosse FAQ Access du Web : http://access.developpez.com/faq

Version d'access : 2003

Bonjour,
J'aimerais créer une fonction dans un module qui me permettrait de
créer un
champ dans ma table principale, et qui contiendrait des intervalles
discontinues de montants.
Dans ma table "Montant", je voudrais créer le champ Interv_Montant qui
aurait par exemple la valeur texte "0 à 25" si le champ TOTLMONTANT > 14$. Et que Interv_Montant aurait la valeur "75 à 100" si le champ
TOTLMONTANT = 86$.

J'ai déjà essayé la requête PremVrai pour avoir les mêmes résultats,
mais elle n'accepte pas assez de caractères.

Merci



Avatar
JF Desnoyers
Merci !

Ensuite, dois-je créer une requête de regroupement, et quel serait le code,
car je ne suis pas certain.
ex : Intervalle = Int( fintervalle ([TOLWCHG] )) ?

JF


Hello JF,

Je te propose un truc du genre :

Function fIntervalle(ByVal Valeur as Double, Optional ByVal EspaceIntervalle
as Double = 25) as String
Dim l1 as Long
Dim l2 as Long

l1=(ValeurEspaceIntervalle)*EspaceIntervalle
l2=(1+ValeurEspaceIntervalle)*EspaceIntervalle

fIntervalle= l1 & " à " & l2

End Function

================== > Maxence HUBICHE

MVP Access
Revendeur CaseStudio (http://www.casestudio.fr)
Responsable Access sur http://www.developpez.com
La plus grosse FAQ Access du Web : http://access.developpez.com/faq

Version d'access : 2003

Bonjour,
J'aimerais créer une fonction dans un module qui me permettrait de
créer un
champ dans ma table principale, et qui contiendrait des intervalles
discontinues de montants.
Dans ma table "Montant", je voudrais créer le champ Interv_Montant qui
aurait par exemple la valeur texte "0 à 25" si le champ TOTLMONTANT > > 14$. Et que Interv_Montant aurait la valeur "75 à 100" si le champ
TOTLMONTANT = 86$.

J'ai déjà essayé la requête PremVrai pour avoir les mêmes résultats,
mais elle n'accepte pas assez de caractères.

Merci









Avatar
JF Desnoyers
J'ai trouvé ma réponse à la dernière question. !

Toutefois, je n'arrive pas à intervalles précis.
Si mon montant est de 55$, la valeur de fintervalle me donne "55 à 80".
Je voudrais plutôt qu'il m'affiche "50 à 74", car je voudrais que les
valeurs d'intervalles soient "0 à 24", "25 à 49", "50 à 74", "75 à 99",
etc.....

Merci encore !!
JF


Merci !

Ensuite, dois-je créer une requête de regroupement, et quel serait le code,
car je ne suis pas certain.
ex : Intervalle = Int( fintervalle ([TOLWCHG] )) ?

JF


Hello JF,

Je te propose un truc du genre :

Function fIntervalle(ByVal Valeur as Double, Optional ByVal EspaceIntervalle
as Double = 25) as String
Dim l1 as Long
Dim l2 as Long

l1=(ValeurEspaceIntervalle)*EspaceIntervalle
l2=(1+ValeurEspaceIntervalle)*EspaceIntervalle

fIntervalle= l1 & " à " & l2

End Function

================== > > Maxence HUBICHE

MVP Access
Revendeur CaseStudio (http://www.casestudio.fr)
Responsable Access sur http://www.developpez.com
La plus grosse FAQ Access du Web : http://access.developpez.com/faq

Version d'access : 2003

Bonjour,
J'aimerais créer une fonction dans un module qui me permettrait de
créer un
champ dans ma table principale, et qui contiendrait des intervalles
discontinues de montants.
Dans ma table "Montant", je voudrais créer le champ Interv_Montant qui
aurait par exemple la valeur texte "0 à 25" si le champ TOTLMONTANT > > > 14$. Et que Interv_Montant aurait la valeur "75 à 100" si le champ
TOTLMONTANT = 86$.

J'ai déjà essayé la requête PremVrai pour avoir les mêmes résultats,
mais elle n'accepte pas assez de caractères.

Merci











Avatar
JF Desnoyers
merci
mais ca ne marche pas

voici qq précisions :

1- Je voudrais que la valeur minimale de fintervalle soit "0 à 25",
applicable aux montants négatifs et ceux à 0$.
2- Chaque intervalle doit être par tranche de 25. Donc si mon montant =
89.99$, le code utilisé m'a renvoyé : l1 = 89.99$ et l2 = 113.99$, ce qui
n'est pas bon. Je voudrais plutôt qu'il me renvoie les bonnes bornes,
c'est-à-dire : l1 = 75$ et l2 = 100$.

Merci beaucoup de ton aide Maxence
JF


Hello JF,



remplace
l2=(1+ValeurEspaceIntervalle)*EspaceIntervalle
par
l2=(1+ValeurEspaceIntervalle)*EspaceIntervalle -1


================== > Maxence HUBICHE

MVP Access
Revendeur CaseStudio (http://www.casestudio.fr)
Responsable Access sur http://www.developpez.com
La plus grosse FAQ Access du Web : http://access.developpez.com/faq

J'ai trouvé ma réponse à la dernière question. !

Toutefois, je n'arrive pas à intervalles précis.
Si mon montant est de 55$, la valeur de fintervalle me donne "55 à
80".
Je voudrais plutôt qu'il m'affiche "50 à 74", car je voudrais que les
valeurs d'intervalles soient "0 à 24", "25 à 49", "50 à 74", "75 à
99",
etc.....
Merci encore !!
JF

Merci !

Ensuite, dois-je créer une requête de regroupement, et quel serait le
code,
car je ne suis pas certain.
ex : Intervalle = Int( fintervalle ([TOLWCHG] )) ?
JF


Hello JF,

Je te propose un truc du genre :

Function fIntervalle(ByVal Valeur as Double, Optional ByVal
EspaceIntervalle
as Double = 25) as String
Dim l1 as Long
Dim l2 as Long
l1=(ValeurEspaceIntervalle)*EspaceIntervalle
l2=(1+ValeurEspaceIntervalle)*EspaceIntervalle
fIntervalle= l1 & " à " & l2

End Function

================== > >>> Maxence HUBICHE
MVP Access
Revendeur CaseStudio (http://www.casestudio.fr)
Responsable Access sur http://www.developpez.com
La plus grosse FAQ Access du Web : http://access.developpez.com/faq
Version d'access : 2003

Bonjour,
J'aimerais créer une fonction dans un module qui me permettrait de
créer un
champ dans ma table principale, et qui contiendrait des intervalles
discontinues de montants.
Dans ma table "Montant", je voudrais créer le champ Interv_Montant
qui
aurait par exemple la valeur texte "0 à 25" si le champ TOTLMONTANT
14$. Et que Interv_Montant aurait la valeur "75 à 100" si le champ
TOTLMONTANT = 86$.





J'ai déjà essayé la requête PremVrai pour avoir les mêmes
résultats, mais elle n'accepte pas assez de caractères.

Merci




















Avatar
Eric
Bnjour JF,

Elle marche très bien la fonction de Maxence.

? fIntervalle(89.99) retourne : 75 à 100

Pour les nombres <0 inférieurs à 25 tu veux avoir l'intervalle 0 à 25,
donc il suffit de mettre un test dans la fonction

If Valeur < 0 Then Valeur = 0

juste avant le calcul de l1 et l2

A+
Eric


merci
mais ca ne marche pas

voici qq précisions :

1- Je voudrais que la valeur minimale de fintervalle soit "0 à 25",
applicable aux montants négatifs et ceux à 0$.
2- Chaque intervalle doit être par tranche de 25. Donc si mon montant =
89.99$, le code utilisé m'a renvoyé : l1 = 89.99$ et l2 = 113.99$, ce qui
n'est pas bon. Je voudrais plutôt qu'il me renvoie les bonnes bornes,
c'est-à-dire : l1 = 75$ et l2 = 100$.

Merci beaucoup de ton aide Maxence
JF



Hello JF,



remplace
l2=(1+ValeurEspaceIntervalle)*EspaceIntervalle
par
l2=(1+ValeurEspaceIntervalle)*EspaceIntervalle -1


================== >>Maxence HUBICHE

MVP Access
Revendeur CaseStudio (http://www.casestudio.fr)
Responsable Access sur http://www.developpez.com
La plus grosse FAQ Access du Web : http://access.developpez.com/faq


J'ai trouvé ma réponse à la dernière question. !

Toutefois, je n'arrive pas à intervalles précis.
Si mon montant est de 55$, la valeur de fintervalle me donne "55 à
80".
Je voudrais plutôt qu'il m'affiche "50 à 74", car je voudrais que les
valeurs d'intervalles soient "0 à 24", "25 à 49", "50 à 74", "75 à
99",
etc.....
Merci encore !!
JF


Merci !

Ensuite, dois-je créer une requête de regroupement, et quel serait le
code,
car je ne suis pas certain.
ex : Intervalle = Int( fintervalle ([TOLWCHG] )) ?
JF



Hello JF,

Je te propose un truc du genre :

Function fIntervalle(ByVal Valeur as Double, Optional ByVal
EspaceIntervalle
as Double = 25) as String
Dim l1 as Long
Dim l2 as Long
l1=(ValeurEspaceIntervalle)*EspaceIntervalle
l2=(1+ValeurEspaceIntervalle)*EspaceIntervalle
fIntervalle= l1 & " à " & l2

End Function

================== >>>>>Maxence HUBICHE
MVP Access
Revendeur CaseStudio (http://www.casestudio.fr)
Responsable Access sur http://www.developpez.com
La plus grosse FAQ Access du Web : http://access.developpez.com/faq

Version d'access : 2003

Bonjour,
J'aimerais créer une fonction dans un module qui me permettrait de
créer un
champ dans ma table principale, et qui contiendrait des intervalles
discontinues de montants.
Dans ma table "Montant", je voudrais créer le champ Interv_Montant
qui
aurait par exemple la valeur texte "0 à 25" si le champ TOTLMONTANT
14$. Et que Interv_Montant aurait la valeur "75 à 100" si le champ
TOTLMONTANT = 86$.






J'ai déjà essayé la requête PremVrai pour avoir les mêmes
résultats, mais elle n'accepte pas assez de caractères.

Merci























Avatar
Eric
.../...

lire : Pour les nombres négatifs inférieurs à -25 au lieu de : Pour les
nombres <0 inférieurs à 25 ...

Eric

merci
mais ca ne marche pas

voici qq précisions :

1- Je voudrais que la valeur minimale de fintervalle soit "0 à 25",
applicable aux montants négatifs et ceux à 0$.
2- Chaque intervalle doit être par tranche de 25. Donc si mon montant =
89.99$, le code utilisé m'a renvoyé : l1 = 89.99$ et l2 = 113.99$, ce qui
n'est pas bon. Je voudrais plutôt qu'il me renvoie les bonnes bornes,
c'est-à-dire : l1 = 75$ et l2 = 100$.

Merci beaucoup de ton aide Maxence
JF



Hello JF,



remplace
l2=(1+ValeurEspaceIntervalle)*EspaceIntervalle
par
l2=(1+ValeurEspaceIntervalle)*EspaceIntervalle -1


================== >>Maxence HUBICHE

MVP Access
Revendeur CaseStudio (http://www.casestudio.fr)
Responsable Access sur http://www.developpez.com
La plus grosse FAQ Access du Web : http://access.developpez.com/faq


J'ai trouvé ma réponse à la dernière question. !

Toutefois, je n'arrive pas à intervalles précis.
Si mon montant est de 55$, la valeur de fintervalle me donne "55 à
80".
Je voudrais plutôt qu'il m'affiche "50 à 74", car je voudrais que les
valeurs d'intervalles soient "0 à 24", "25 à 49", "50 à 74", "75 à
99",
etc.....
Merci encore !!
JF


Merci !

Ensuite, dois-je créer une requête de regroupement, et quel serait le
code,
car je ne suis pas certain.
ex : Intervalle = Int( fintervalle ([TOLWCHG] )) ?
JF



Hello JF,

Je te propose un truc du genre :

Function fIntervalle(ByVal Valeur as Double, Optional ByVal
EspaceIntervalle
as Double = 25) as String
Dim l1 as Long
Dim l2 as Long
l1=(ValeurEspaceIntervalle)*EspaceIntervalle
l2=(1+ValeurEspaceIntervalle)*EspaceIntervalle
fIntervalle= l1 & " à " & l2

End Function

================== >>>>>Maxence HUBICHE
MVP Access
Revendeur CaseStudio (http://www.casestudio.fr)
Responsable Access sur http://www.developpez.com
La plus grosse FAQ Access du Web : http://access.developpez.com/faq

Version d'access : 2003

Bonjour,
J'aimerais créer une fonction dans un module qui me permettrait de
créer un
champ dans ma table principale, et qui contiendrait des intervalles
discontinues de montants.
Dans ma table "Montant", je voudrais créer le champ Interv_Montant
qui
aurait par exemple la valeur texte "0 à 25" si le champ TOTLMONTANT
14$. Et que Interv_Montant aurait la valeur "75 à 100" si le champ
TOTLMONTANT = 86$.






J'ai déjà essayé la requête PremVrai pour avoir les mêmes
résultats, mais elle n'accepte pas assez de caractères.

Merci























Avatar
JF Desnoyers
Merci ! Ca marche maintenant.

Dans le calcul, je mettais le signe / (pour diviser) au lieu de .

Le signe indique quoi alors ?


..../...

lire : Pour les nombres négatifs inférieurs à -25 au lieu de : Pour les
nombres <0 inférieurs à 25 ...

Eric

merci
mais ca ne marche pas

voici qq précisions :

1- Je voudrais que la valeur minimale de fintervalle soit "0 à 25",
applicable aux montants négatifs et ceux à 0$.
2- Chaque intervalle doit être par tranche de 25. Donc si mon montant =
89.99$, le code utilisé m'a renvoyé : l1 = 89.99$ et l2 = 113.99$, ce qui
n'est pas bon. Je voudrais plutôt qu'il me renvoie les bonnes bornes,
c'est-à-dire : l1 = 75$ et l2 = 100$.

Merci beaucoup de ton aide Maxence
JF



Hello JF,



remplace
l2=(1+ValeurEspaceIntervalle)*EspaceIntervalle
par
l2=(1+ValeurEspaceIntervalle)*EspaceIntervalle -1


================== > >>Maxence HUBICHE

MVP Access
Revendeur CaseStudio (http://www.casestudio.fr)
Responsable Access sur http://www.developpez.com
La plus grosse FAQ Access du Web : http://access.developpez.com/faq


J'ai trouvé ma réponse à la dernière question. !

Toutefois, je n'arrive pas à intervalles précis.
Si mon montant est de 55$, la valeur de fintervalle me donne "55 à
80".
Je voudrais plutôt qu'il m'affiche "50 à 74", car je voudrais que les
valeurs d'intervalles soient "0 à 24", "25 à 49", "50 à 74", "75 à
99",
etc.....
Merci encore !!
JF


Merci !

Ensuite, dois-je créer une requête de regroupement, et quel serait le
code,
car je ne suis pas certain.
ex : Intervalle = Int( fintervalle ([TOLWCHG] )) ?
JF



Hello JF,

Je te propose un truc du genre :

Function fIntervalle(ByVal Valeur as Double, Optional ByVal
EspaceIntervalle
as Double = 25) as String
Dim l1 as Long
Dim l2 as Long
l1=(ValeurEspaceIntervalle)*EspaceIntervalle
l2=(1+ValeurEspaceIntervalle)*EspaceIntervalle
fIntervalle= l1 & " à " & l2

End Function

================== > >>>>>Maxence HUBICHE
MVP Access
Revendeur CaseStudio (http://www.casestudio.fr)
Responsable Access sur http://www.developpez.com
La plus grosse FAQ Access du Web : http://access.developpez.com/faq

Version d'access : 2003

Bonjour,
J'aimerais créer une fonction dans un module qui me permettrait de
créer un
champ dans ma table principale, et qui contiendrait des intervalles
discontinues de montants.
Dans ma table "Montant", je voudrais créer le champ Interv_Montant
qui
aurait par exemple la valeur texte "0 à 25" si le champ TOTLMONTANT
14$. Et que Interv_Montant aurait la valeur "75 à 100" si le champ
TOTLMONTANT = 86$.







J'ai déjà essayé la requête PremVrai pour avoir les mêmes
résultats, mais elle n'accepte pas assez de caractères.

Merci



























Avatar
JF Desnoyers
Merci Maxence,
Oui j'utiliserai le copier coller la prochaine fois....hé hé

J'ai un autre problème maintenant. Je veux créer un tableau croisé dynamique
sur Excel à partir de ma requête Access. Excel ne veut pas accepter mes
données, car il ne reconnaît pas la fonction "fintervalle". Quel est le
problème ?



Hello JF,

Il sert à faire une division entière.
C'est à dire que, lorsque tu fais 20/3, normalement, le résultat est 6.66666666666666667
Par contre, lorsque tu fais 203, le résultat est maintenant 6
il 'oublie' les décimales (pas d'arrondi)

Voilà.

PS, la prochaine fois, pour éviter les erreurs, utilise un truc qui n'a pas
de bug : le copier-coller.

;)
================== > Maxence HUBICHE

MVP Access
Revendeur CaseStudio (http://www.casestudio.fr)
Responsable Access sur http://www.developpez.com
La plus grosse FAQ Access du Web : http://access.developpez.com/faq

Merci ! Ca marche maintenant.

Dans le calcul, je mettais le signe / (pour diviser) au lieu de .

Le signe indique quoi alors ?


..../...

lire : Pour les nombres négatifs inférieurs à -25 au lieu de : Pour
les nombres <0 inférieurs à 25 ...

Eric


merci
mais ca ne marche pas
voici qq précisions :

1- Je voudrais que la valeur minimale de fintervalle soit "0 à 25",
applicable aux montants négatifs et ceux à 0$.
2- Chaque intervalle doit être par tranche de 25. Donc si mon
montant > >>> 89.99$, le code utilisé m'a renvoyé : l1 = 89.99$ et l2 = 113.99$,
ce qui
n'est pas bon. Je voudrais plutôt qu'il me renvoie les bonnes
bornes,
c'est-à-dire : l1 = 75$ et l2 = 100$.
Merci beaucoup de ton aide Maxence
JF

Hello JF,

remplace
l2=(1+ValeurEspaceIntervalle)*EspaceIntervalle
par
l2=(1+ValeurEspaceIntervalle)*EspaceIntervalle -1
================== > >>>> Maxence HUBICHE
MVP Access
Revendeur CaseStudio (http://www.casestudio.fr)
Responsable Access sur http://www.developpez.com
La plus grosse FAQ Access du Web : http://access.developpez.com/faq
J'ai trouvé ma réponse à la dernière question. !

Toutefois, je n'arrive pas à intervalles précis.
Si mon montant est de 55$, la valeur de fintervalle me donne "55 à
80".
Je voudrais plutôt qu'il m'affiche "50 à 74", car je voudrais que
les
valeurs d'intervalles soient "0 à 24", "25 à 49", "50 à 74", "75 à
99",
etc.....
Merci encore !!
JF
Merci !

Ensuite, dois-je créer une requête de regroupement, et quel
serait le
code,
car je ne suis pas certain.
ex : Intervalle = Int( fintervalle ([TOLWCHG] )) ?
JF

Hello JF,

Je te propose un truc du genre :

Function fIntervalle(ByVal Valeur as Double, Optional ByVal
EspaceIntervalle
as Double = 25) as String
Dim l1 as Long
Dim l2 as Long
l1=(ValeurEspaceIntervalle)*EspaceIntervalle
l2=(1+ValeurEspaceIntervalle)*EspaceIntervalle
fIntervalle= l1 & " à " & l2
End Function

================== > >>>>>>> Maxence HUBICHE
MVP Access
Revendeur CaseStudio (http://www.casestudio.fr)
Responsable Access sur http://www.developpez.com
La plus grosse FAQ Access du Web :
http://access.developpez.com/faq
Version d'access : 2003

Bonjour,
J'aimerais créer une fonction dans un module qui me permettrait
de
créer un
champ dans ma table principale, et qui contiendrait des
intervalles
discontinues de montants.
Dans ma table "Montant", je voudrais créer le champ
Interv_Montant
qui
aurait par exemple la valeur texte "0 à 25" si le champ
TOTLMONTANT
14$. Et que Interv_Montant aurait la valeur "75 à 100" si le
champ









TOTLMONTANT = 86$.
J'ai déjà essayé la requête PremVrai pour avoir les mêmes
résultats, mais elle n'accepte pas assez de caractères.
Merci