cs_Ristou
Messages postés29Date d'inscriptionlundi 24 janvier 2005StatutMembreDernière intervention26 mai 2005
-
5 avril 2005 à 10:02
cs_Ristou
Messages postés29Date d'inscriptionlundi 24 janvier 2005StatutMembreDernière intervention26 mai 2005
-
27 avril 2005 à 09:27
Salut tout le monde!
Je suis en train de développer une Base de Données sous Access et j'aimerais calculer une date dans un formulaire. La formule Excel est : SI(B279<>"";MAX(C279;P279;B279);"")
Comment puis-je la mettre sous Access? J'aimerais qu'un champ de formulaire fasse le calcul automatiquement lorsue les autres données sont entrées.
valtrase
Messages postés937Date d'inscriptionlundi 19 janvier 2004StatutMembreDernière intervention 9 mai 20223 5 avril 2005 à 14:43
Salut,
d'abord ta formule est sur une feuille Excel je supose ...... as tu chargé un objet OLE sur ton formulaire ?
Les autres données sont entrées ou ?
enfin il faut un peu plus d'explications si tu veux une réponse plausible.
cs_Ristou
Messages postés29Date d'inscriptionlundi 24 janvier 2005StatutMembreDernière intervention26 mai 2005 5 avril 2005 à 16:02
Ouais c'est une formule Excel. Et j'aimerais la passer sous Access. Je crée une table et il y a un champ qu j'aimerais remplir avec cette formule. Comme ça la valeur du champ se calcule automatiquement. Donc voilà, je fais un formulaire pour remplir cette table, et j'aimerais que les champs concernés se remplissent automatiquement avec les autres données entrées dans le formulaire. Mon problème c'est donc : transposer la formule Excel en formule Access. J'ai essayé, j'ai obtenu ça :
SI("Date Ouverture"<>"";SI("Date Réception">"Date de réception des échantillons";SI("Date Réception">"Date Ouverture";"Dossier complet le"="Date Réception";"Dossier complet le"="Date Ouverture");SI("Date de réception des échantillons">"Date Ouverture";"Dossier complet le"="Date de réception des échantillons";"Dossier complet le"="Date Ouverture"));"Dossier complet le"="")
Ah ben ouais c'est long! lol. En fait je l'ai remis sous forme d'algorithme et vu que Access connait pas la fonction MAX... J'ai dû faire ça avec des SI, ce qui rallonge énormément la formule. Le problème c'est que Access connait pas la fonction SI...
Alors si quelqu'un peut m'aider à traduire cette formule Excel... Merci!
valtrase
Messages postés937Date d'inscriptionlundi 19 janvier 2004StatutMembreDernière intervention 9 mai 20223 5 avril 2005 à 23:09
Re,
C'est mieu là
Bon deux choses, je ne suis pas un expert d'Access mais bon j'ai regardé la doc la fonction Max éxiste bien sous Access consulte l'aide en ligne (tu tappes Max).
la fonction SI doit-être remplacée par VraiFaux.
Tu peux utiliser le générateur d'expression pour cela.Tu sélectionnes ton étiquette puis propriété/données/source de controle
Donc ça devrai ressembler à ceci:
=VRAIFAUX([Date Ouverture]<>"";MAX("[Date Réception];[Date Ouverture];[Date de réception des échantillons]");"")
D'aprés la doc la fonction max joue sur une requette donc à essayer sinon faire une requette
cs_Ristou
Messages postés29Date d'inscriptionlundi 24 janvier 2005StatutMembreDernière intervention26 mai 2005 6 avril 2005 à 11:56
Ok, merci les mecs! J'ai trouvé, par contre ça m'affiche des erreurs...
J'ai fait d'autres formules du même genre et ça m'affiche soit #Erreur soit #Nom? . J'ai regardé dans l'aide d'Access, y a rien sur #Erreur. Par contre pour #Nom? il me dit que j'ai peut-être un fichier dll qui manque mais non, il est bien là...
Donc là mes formules sont acceptées sauf qu'il ne m'affiche pas de résultats...
valtrase
Messages postés937Date d'inscriptionlundi 19 janvier 2004StatutMembreDernière intervention 9 mai 20223 7 avril 2005 à 11:04
Re,
Je te l'ai dis suis pas fortiche sous access.
Tu devrai essayer en bidoullant les " et les ; les uns aprés les autre dans la fonction MAX je pense que c'est elle qui pose problème.
donc tu fais un essais sans les "
puis avec " et sans les ;
etc .....
Ca devrai le faire
cs_Ristou
Messages postés29Date d'inscriptionlundi 24 janvier 2005StatutMembreDernière intervention26 mai 2005 7 avril 2005 à 22:35
Bon, pour la fonction MAX j'ai trouvé! Je l'ai remplacée par des Si avec des A > B. En gros, j'ai fait l'algorithme de la fonction MAX, plutôt que d'utiliser la fonction MAX. Elle ne s'applique pas aux dates mais seulement aux nombres et textes je crois.
Par contre maintenant j'ai un autre problème! lol.
J'ai des cases à cocher. Et dans d'autres formules, ces cases lorsqu'elles sont cochées sont normalement égales à "OUI". Mais apparement ça marche pas... Il faudrait que j'arrive à convertir la case cochée en texte ou alors que je change carrément le type du champ (enlever la case à cocher et mettre du texte) mais ça ne me plaît pas trop. La case cochée convient mieux à ce que je veux faire, même si ça fait foirer mes formules. Ou alors je peut essayer avec des requêtes...
Je vais voir ça, mais si vous avez des suggestions, n'hésitez pas!
valtrase
Messages postés937Date d'inscriptionlundi 19 janvier 2004StatutMembreDernière intervention 9 mai 20223 10 avril 2005 à 02:15
Re,
Non tes cases à cocher te renvoies un entier et non pas un boulean donc attention quand tu codes.
test ce bout de code pour t'en rendre compte
un checkbox chk1, un option opt1, un label lbl1 et un bouton cmd1
Private Sub cmd2_Click()
Static i
Select Case i
Case 0
chk1.Value = vbGrayed
opt1.Value = True
i = 1
Case 1
chk1.Value = vbChecked
opt1.Value = False
i = 2
Case 2
chk1.Value = vbUnchecked
opt1.Value = True
i = 0
Case Else
i = 0
End Select
lbl1.Caption "chk1 " & chk1.Value & " ; " & "opt1 = " & opt1.Value
cs_Ristou
Messages postés29Date d'inscriptionlundi 24 janvier 2005StatutMembreDernière intervention26 mai 2005 12 avril 2005 à 09:46
Ok, j'ai arrangé tout ça! ;-)
Me voilà avec un nouveau problème!
J'ai une fonction NB.JOURS.OUVRES sous Excel, elle est utilisable en VB mais je veut le faire avec une formule dans un formulaire. Bien, sûr, cette fonction ne se fait pas dans un formulaire... Merci Microsoft...
Vous savez comment je peux sélectionner des jours fériés dans une table J_FERIES entre une date A et une date B donnée dans le formulaire, le tout avec une formule? Sinon j'ai essayé avec une requête SQL :
SELECT count(*)
FROM J_FERIES
WHERE [Annee] BETWEEN YEAR([Date Ouverture]) AND YEAR([Date de clôture])
AND [Mois] BETWEEN MONTH([Date Ouverture]) AND MONTH([Date de clôture])
AND [NumJour] BETWEEN DAY([Date Ouverture]) AND DAY([Date de clôture]);
Je l'ai fait dans une requête. ça ne marche pas. ça ne compte rien. Mon résultat est toujours 0.
J'ai également essayé de la mettre dans une macro "ExecuterSQL", voici ce que Access me dit : "une action ExecuterSQL nécessite un argument consistant en une instruction SQL."
Vous pouvez m'aider SVP? Merci d'avance! Vous m'avez déjà bien aidé depuis le début!
valtrase
Messages postés937Date d'inscriptionlundi 19 janvier 2004StatutMembreDernière intervention 9 mai 20223 14 avril 2005 à 11:31
Salut,
Comme je te l'ai déjà dis je ne suis pas fortiche en Acess mais bon on va essayer
si t'as un textbox qui doit t'afficher le résultat colles ce code dedans et vois
En changant [Ton_Champ_A_Récupérer] par le nom de ton champ
=SELECT [Ton_Champ_A_Récupérer] ,count(*) FROM J_FERIES
WHERE [Annee] BETWEEN YEAR([Date Ouverture]) AND YEAR([Date de clôture])
AND [Mois] BETWEEN MONTH([Date Ouverture]) AND MONTH([Date de clôture])
AND [NumJour] BETWEEN DAY([Date Ouverture]) AND DAY([Date de clôture]);
cs_Ristou
Messages postés29Date d'inscriptionlundi 24 janvier 2005StatutMembreDernière intervention26 mai 2005 14 avril 2005 à 14:47
Ta requête n'est pas correcte Jean-Paul! :p
Regarde mon précédent message, la requête est niquel.
Le seul truc c'est que je ne comprends pas pourquoi elle ne compte pas les jours fériés de ma table J_FERIES qui sont entre les dates d'ouverture et de clôture...
Il faudrait peut-être que j'essaye en soustrayant (MINUS dans la requête) les jours fériés de la table J_FERIES à un calendrier complet. Ou alors y a même pas besoin de soustraire... On compare et on compte le nombre de jours identiques... Mais dans ce cas, il me faudrait un calendrier complet à partir d'il y a quelques années jusqu'à très longtemps! Genre 2050...
C'est pas top comme système... Je préfèrerais faire ce calcul de nombre de jours fériés d'une façon plus efficace, sans le calendrier...
Peut-être que Access à un calendrier inclu en mémoire et qu'il pourrait le faire automatiquement... Faut que je vérifie ça.
Enfin bon... Si vous pouvez m'aider là-dessus, n'hésitez pas! ;-)
cs_Ristou
Messages postés29Date d'inscriptionlundi 24 janvier 2005StatutMembreDernière intervention26 mai 2005 18 avril 2005 à 09:29
Woups!
Je m'excuse les mecs, rien n'étati correct... lol.
J'ai changé mon mode de fonctionnement. J'ai changé la table J_FERIES, j'ai mis une seule colonne dans laquelle on ajoute les dates des jours fériés, comme ça c'est plus simple de comparer les dates!
Donc ça, ça marche. Maintenant il faut arriver à caser ces requêtes dans les formules des cases du formulaire. J'ai deux requêtes, une qui compte les nombres de jours jusqu'à aujourd'hui, et une autre jusqu'à une date de clôture. J'ai donc cette formule :
=VraiFaux([Date Ouverture]<>"";VraiFaux([Date de clôture]<>"";[Requete_tps_brut_cloture];[Requete_tps_brut_aujourdhui]);"")
Mais bien sûr, cette formule ne fonctionne pas. Lorsque je teste le formulaire, dans le champ il ya écrit : #NOM?
ça veut dire qu'il y a un nom que le formulaire ne reconnaît pas... Pourtant tous mes noms sont corrects... Aussi bien dans la formule que dans les requêtes...
cs_Ristou
Messages postés29Date d'inscriptionlundi 24 janvier 2005StatutMembreDernière intervention26 mai 2005 20 avril 2005 à 11:46
Un autre problème de formule...
J'ai cette formule EXCEL, en sachant que A3 est le champ [Code Usine] et que le champ S3 est le champ [Date création] :
SI(A3<>"";SI(ET(FIN.MOIS(S3;0)<>FIN.MOIS(AUJOURDHUI();0);FIN.MOIS(S3;12)>FIN.MOIS(AUJOURDHUI();0));"OUI";"NON");"")
En formule ACCESS, j'obtiens ceci : =VraiFaux([Code Usine]<>"";VraiFaux((FIN.MOIS((((([Date création];0)))))<>FIN.MOIS(((((Date();0)))))) Et (FIN.MOIS((((([Date création];12)))))>=FIN.MOIS(((((Date();0))))));"OUI";"NON");"")
Je pense que la formule ACCESS est correcte mais lorsque je lance le formulaire, dans le champ il y a écrit : #NOM?
C'est quoi le problème selon vous? La formule est fausse? Il y a une fonction qu'il ne connait pas? Là vraiment je galère...
Aidez-moi SVP!!!
cs_Ristou
Messages postés29Date d'inscriptionlundi 24 janvier 2005StatutMembreDernière intervention26 mai 2005 20 avril 2005 à 22:03
Non, j'ai l'impression que mes comparaisons de dates se portent très bien!
Le problème c'est que ACCESS ne connait pas les fonctions FIN.MOIS, et RECHERCHEV. Et puis il ne reconnait pas les noms des requêtes...
Les comparaisons de date marchent sans problème... C'est juste ces 2 fonctions et le problème de reconnaissance des requêtes qui me gênent...
tbbuim1
Messages postés940Date d'inscriptionjeudi 20 février 2003StatutMembreDernière intervention 3 février 20119 21 avril 2005 à 09:25
lol, beh avec Access 2000, il m'était impossible de faire une
comparaison de date fiaible, en fait, on dirait que ça marche mais en
faite, ça ne marche pas... J'ai donc utilisé ça, surtout si tu composes
des dates. Tu fais tes requêtes dans le code ou avec l'assistant de
requête?
Les fonctions FIN.MOIS et RECHECHEV sont conçus spécialement pour EXCEL.
Si tu veux faire pareil, tu dois les reprogrammer. Fais une fonction
qui renvoi la date de fin de mois et appelles là dans ta requête. C'est
facile à faire. Surtout, fais une fonction public dans un module qui
renvoi une valeur. Pour rechercheV, ça va être plus complexe, mais tu
peux le faire. Sinon, pourquoi y a t-il autant de parenthèses ((((((
))))))) ça te sers à quoi?
J'aimerais bien savoir ce que tu entends pas reconnaissance de rq. Ya
pas de pb avec la reconnaissance de rq, si tu les écris bien, elles
sont toujours reconnues...
cs_Ristou
Messages postés29Date d'inscriptionlundi 24 janvier 2005StatutMembreDernière intervention26 mai 2005 21 avril 2005 à 13:49
Ben mes comparaisons de dates sont nickel... J'ai testé ça marche.
Sinon mes requêtes j'ai essayé de les faire directement dans le formulaire mais ça marche pas non plus.
Pour ce qui est de faire des fonctions, faut les programmer en VB et ça je peux pas... je dois le faire sans VB, mais bon, je verrais bien si j'y suis obligé je les ferais en VB.
Sinon les parenthèses c'est parce que j'ai fait un copier/coller de Access. J'avais pas mis autant de parenthèses, c'est lui qui me les rajoute à chaque fois... je sais pas pourquoi mais bon, le résultat est le même...
Sinon quand je disais "reconnaissance de rq", je veux dire que quand je met :
=[nom_requête] dans un champ d'un formulaire, le formulaire comprend pas... Il reconnait pas le nom de la requête apparemment...
cs_Ristou
Messages postés29Date d'inscriptionlundi 24 janvier 2005StatutMembreDernière intervention26 mai 2005 22 avril 2005 à 13:55
J'ai essayé de mettre les noms de requêtes entre guillemets mais ça ne marche pas... Il m'affiche le nom de la requête au lieu du résultat qu'elle produit...
Dans ce cas précis, mon résultat doit être un entier, mais il se peut que j'ai besoin d'avoir une date ou une string en résultat...