Formules EXCEL sous ACCESS (help me please!)

cs_Ristou Messages postés 29 Date d'inscription lundi 24 janvier 2005 Statut Membre Dernière intervention 26 mai 2005 - 5 avril 2005 à 10:02
cs_Ristou Messages postés 29 Date d'inscription lundi 24 janvier 2005 Statut Membre Dernière intervention 26 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.

Merci!

31 réponses

valtrase Messages postés 937 Date d'inscription lundi 19 janvier 2004 Statut Membre Dernière intervention 9 mai 2022 3
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.

Cordialement, Jean-Paul
______________________________________________________________________

Le Savoir n'a de valeur que s'il est partagé
0
cs_Ristou Messages postés 29 Date d'inscription lundi 24 janvier 2005 Statut Membre Dernière intervention 26 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!
0
tbbuim1 Messages postés 940 Date d'inscription jeudi 20 février 2003 Statut Membre Dernière intervention 3 février 2011 9
5 avril 2005 à 16:58
En fait, tu veux trouver la valeur qui est la plus grande parmis les 3, c ça?

pourquoi ne pas faire:

si C > A ou B alors affiche C sinon affiche A ou B

iif(C>(iif(A>B;A;B));C;iif(A>B;A;B))

IIF( Expression; Si c vrai; Si c faux)
TBBUIM
0
valtrase Messages postés 937 Date d'inscription lundi 19 janvier 2004 Statut Membre Dernière intervention 9 mai 2022 3
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

Cordialement, Jean-Paul
______________________________________________________________________

Le Savoir n'a de valeur que s'il est partagé
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
cs_Ristou Messages postés 29 Date d'inscription lundi 24 janvier 2005 Statut Membre Dernière intervention 26 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...

Si vous savez aussi comment régler ce problème...
0
valtrase Messages postés 937 Date d'inscription lundi 19 janvier 2004 Statut Membre Dernière intervention 9 mai 2022 3
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

Cordialement, Jean-Paul
______________________________________________________________________

Le Savoir n'a de valeur que s'il est partagé
0
cs_Ristou Messages postés 29 Date d'inscription lundi 24 janvier 2005 Statut Membre Dernière intervention 26 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!
0
valtrase Messages postés 937 Date d'inscription lundi 19 janvier 2004 Statut Membre Dernière intervention 9 mai 2022 3
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


End Sub



Cordialement, Jean-Paul
______________________________________________________________________

Le Savoir n'a de valeur que s'il est partagé
0
cs_Ristou Messages postés 29 Date d'inscription lundi 24 janvier 2005 Statut Membre Dernière intervention 26 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!
0
valtrase Messages postés 937 Date d'inscription lundi 19 janvier 2004 Statut Membre Dernière intervention 9 mai 2022 3
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]);

Cordialement, Jean-Paul
______________________________________________________________________

Le Savoir n'a de valeur que s'il est partagé
0
cs_Ristou Messages postés 29 Date d'inscription lundi 24 janvier 2005 Statut Membre Dernière intervention 26 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! ;-)
0
cs_Ristou Messages postés 29 Date d'inscription lundi 24 janvier 2005 Statut Membre Dernière intervention 26 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...

Vous avez une idée SV¨P?
0
cs_Ristou Messages postés 29 Date d'inscription lundi 24 janvier 2005 Statut Membre Dernière intervention 26 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!!!
0
tbbuim1 Messages postés 940 Date d'inscription jeudi 20 février 2003 Statut Membre Dernière intervention 3 février 2011 9
20 avril 2005 à 19:24
lol, tu ne peux pas décemment faire de comparaison de date sous access

Il faut pour se faire utiliser la fonction CDATE

En procédant comme ceci, par exemple



CDate("28/04/1980") < CDate("28/04/2005")



Donc essayes de composer la date comme une chaine de caractère avec tes données



Sinon, Access ne comprendra pas!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!

Sauf si tu mets la date entière entre # mais là pas question de variable...

Cela devrait résoudre définitivement tes problèmes de comparaisons de dates.

TBBUIM
0
cs_Ristou Messages postés 29 Date d'inscription lundi 24 janvier 2005 Statut Membre Dernière intervention 26 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...
0
tbbuim1 Messages postés 940 Date d'inscription jeudi 20 février 2003 Statut Membre Dernière intervention 3 février 2011 9
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...

TBBUIM
0
cs_Ristou Messages postés 29 Date d'inscription lundi 24 janvier 2005 Statut Membre Dernière intervention 26 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...
0
tbbuim1 Messages postés 940 Date d'inscription jeudi 20 février 2003 Statut Membre Dernière intervention 3 février 2011 9
21 avril 2005 à 19:09
Il faut mettre les noms de requête entre guillemet comme une string.

Sinon ça veut rien dire pour lui. Et tout dépend de ce à quoi tu veux le faire être égal...

TBBUIM
0
cs_Ristou Messages postés 29 Date d'inscription lundi 24 janvier 2005 Statut Membre Dernière intervention 26 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...
0
cs_Ristou Messages postés 29 Date d'inscription lundi 24 janvier 2005 Statut Membre Dernière intervention 26 mai 2005
22 avril 2005 à 14:55
Heu... Finalement je crois que tu avais raison TBBUIM.... J'ai des comparaisons de dates qui ne fonctionnent pas... Celle-là par exemple :
VraiFaux([N°]<>"";(CDate(Année(Date()) & "-" & Mois(Date())-12 & "-" & 1)<CDate([Année ouv] & "-" & Mois([Date Ouverture]) & "-" & 1)) Et (CDate([Année ouv] & "-" & Mois([Date ouverture]) & "-" & 1)<>CDate(Année(Date()) & "-" & Mois(Date()) & "-" & 1));"")

Tu peux me dire ce qui ne va pas STP? Merci!
0
Rejoignez-nous