Intégrer une fonction vba à une requête
flopre
Messages postés
5
Date d'inscription
Statut
Membre
Dernière intervention
-
blux Messages postés 27137 Date d'inscription Statut Modérateur Dernière intervention -
blux Messages postés 27137 Date d'inscription Statut Modérateur Dernière intervention -
Bonjour,
Je souhaite créer un formulaire qui calcule une date d'expédition à partir d'une date de livraison et d'un délai et une date de début au plus tard de la production à partir de cette date d'expédition et d'un temps de production. J'ai trouvé un code vba qui fonctionne mais étant donné que mon formulaire est en tabulaire, je dois l'intégrer dans ma requête (mon formulaire est créé à partir d'une requête). Toutefois je ne sais pas comment intégrer cette fonction écrite en visual basic dans la requête.
Voici mon code qui est dans un module appelé "delai" (delai, date_livraison sont des champs dans des tables, date_exp deviendra un champ dans la requête).
Faut-il que je spécifie "function Dateexp(date_livraison,delai)" vu que le calcul se fait en fonction de ces champs?
Option Compare Database
Public date_exp As Date
Public jour As Integer
Public ecart As Integer
Public delai As Integer
Public Date_livraison As Date
Function Dateexp()
ecart = 0
jour = Weekday(Date_livraison)
While delai > 0
If jour = 2 Then
ecart = ecart + 3
jour = 6
Else
ecart = ecart + 1
jour = jour - 1
End If
delai = delai - 1
Wend
date_exp = Date_livraison - ecart
End Function
Quand je vais dans ma requête,et dans le générateur d'expression je trouve ma fonction dateexp je double clique dessus et ça note "dateexp()". Mais ça ne donne pas de résultat dans la colonne lors de l'exécution.
Comment faire pour que le calcul se fasse?
J'espère que mon explication est claire.
Merci d'avance.
Je souhaite créer un formulaire qui calcule une date d'expédition à partir d'une date de livraison et d'un délai et une date de début au plus tard de la production à partir de cette date d'expédition et d'un temps de production. J'ai trouvé un code vba qui fonctionne mais étant donné que mon formulaire est en tabulaire, je dois l'intégrer dans ma requête (mon formulaire est créé à partir d'une requête). Toutefois je ne sais pas comment intégrer cette fonction écrite en visual basic dans la requête.
Voici mon code qui est dans un module appelé "delai" (delai, date_livraison sont des champs dans des tables, date_exp deviendra un champ dans la requête).
Faut-il que je spécifie "function Dateexp(date_livraison,delai)" vu que le calcul se fait en fonction de ces champs?
Option Compare Database
Public date_exp As Date
Public jour As Integer
Public ecart As Integer
Public delai As Integer
Public Date_livraison As Date
Function Dateexp()
ecart = 0
jour = Weekday(Date_livraison)
While delai > 0
If jour = 2 Then
ecart = ecart + 3
jour = 6
Else
ecart = ecart + 1
jour = jour - 1
End If
delai = delai - 1
Wend
date_exp = Date_livraison - ecart
End Function
Quand je vais dans ma requête,et dans le générateur d'expression je trouve ma fonction dateexp je double clique dessus et ça note "dateexp()". Mais ça ne donne pas de résultat dans la colonne lors de l'exécution.
Comment faire pour que le calcul se fasse?
J'espère que mon explication est claire.
Merci d'avance.
A voir également:
- Intégrer une fonction vba à une requête
- Fonction si et - Guide
- Intégrer une vidéo dans un powerpoint - Guide
- Intégrer une liste déroulante dans excel - Guide
- Fonction find vba - Astuces et Solutions
- Comment colorer une cellule excel en fonction du contenu d'une autre cellule ✓ - Forum Excel
3 réponses
D'accord merci.
En ce qui concerne les paramètres il faut que je mette que les champs créés dans ma base de données ou les champs créés dans ma base de données et ceux créés dans le code?
Dans mon cas, faut-il que je mette juste comme paramètre date_livraison et delai ou date_livraison, delai et ecart? (vu que ecart est utilisé pour le calcul de la date_exp)
En ce qui concerne les paramètres il faut que je mette que les champs créés dans ma base de données ou les champs créés dans ma base de données et ceux créés dans le code?
Dans mon cas, faut-il que je mette juste comme paramètre date_livraison et delai ou date_livraison, delai et ecart? (vu que ecart est utilisé pour le calcul de la date_exp)
En fait, tu dois mettre ce que la fonction attend.
Dans ce que tu as mis, la fonction n'attend rien de particulier, se contentant de calculer des valeurs et de les mettre dans une variable.
Le mieux serait que tu crées deux fonctions, puisque tu dois renvoyer deux résultats et que tu les appelles avec des paramètres (qui pourront être des champs de formulaire).
Et plutôt que de mettre ça dans la requête, tu crées un champ de plus dans ton formulaire où tu appelleras ces fonctions...
Dans ce que tu as mis, la fonction n'attend rien de particulier, se contentant de calculer des valeurs et de les mettre dans une variable.
Le mieux serait que tu crées deux fonctions, puisque tu dois renvoyer deux résultats et que tu les appelles avec des paramètres (qui pourront être des champs de formulaire).
Et plutôt que de mettre ça dans la requête, tu crées un champ de plus dans ton formulaire où tu appelleras ces fonctions...
Désolé mais ça ne fonctionne pas, j'ai noté :
date_exp: (select Dateexp([Date_livraison],[délai_livraison]) from )
J'ai mis select entre parenthèse car le logiciel m'a dit que c'était une sous requête, et maintenant il me met "erreur de syntaxe dans l'expression". Ai-je mal noté dans le générateur d'expression?
date_exp: (select Dateexp([Date_livraison],[délai_livraison]) from )
J'ai mis select entre parenthèse car le logiciel m'a dit que c'était une sous requête, et maintenant il me met "erreur de syntaxe dans l'expression". Ai-je mal noté dans le générateur d'expression?