Précédent   Forum des professionnels en informatique > Logiciels > Microsoft Office > Access > IHM
IHM Ce forum est dédié aux questions relatives à la création de formulaires et d'états, avec ou sans code VBA, et macros.
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 11/08/2011, 17h10   #1
Invité de passage
 
Homme
Étudiant
Inscription : juillet 2011
Messages : 16
Détails du profil
Informations personnelles :
Sexe : Homme
Âge : 20
Localisation : France, Finistère (Bretagne)

Informations professionnelles :
Activité : Étudiant
Secteur : Industrie

Informations forums :
Inscription : juillet 2011
Messages : 16
Points : 3
Points : 3
Par défaut Afficher message/formulaire en fonction macro

Bonjour,

J'ai un petit soucis. Je souhaiterais que lorsque j'ouvre ma base access, un petit message ou un formulaire s'affiche en fonction d'une macro. Je m'explique :

J'ai une table où plusieurs dates sont inscrites, par exemple, 20/07/2011, 30/07/2011 et 02/08/2011.
Je souhaiterais que lorsque la dernière date de cette table (en l'occurence ici 02/08/2011) dépasse de X jours la date actuelle (lors de l'ouverture de la base) une petite fenetre s'ouvre avec un message à l'interieur, où on clique sur OK et cette fenetre disparait.

Est ce qu'il est possible de créer un code, une macro pour réaliser ceci. Dans l'immédiat j'ai uniquement créé une requête qui me dit quel est la date la plus récente de ma table, mais après je ne sais pas comment faire . Je ne sais pas si on peut réaliser des opérations avec les date (IF "plus_ancienne_date" +7 < "date_actuelle" , then) quelque chose comme ça.

Si quelqu'un peut m'aider, ça serait top

Merci d'avance
pikayo est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 11/08/2011, 17h38   #2
Membre du Club
 
Homme
Étudiant
Inscription : juillet 2011
Messages : 47
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : France

Informations professionnelles :
Activité : Étudiant
Secteur : Industrie

Informations forums :
Inscription : juillet 2011
Messages : 47
Points : 46
Points : 46
Bonjour,

Sous access si tu appelles une macro AutoExec elle va s'exécuter à l'ouverture de ton application Access.
Sachant que tu peut assigner à cette macro l'action RunCode (en vo) tu vas pouvoir exécuter du code à l'ouverture de ton appli.

Tu vas donc pouvoir utiliser un code vba de ce style :

Code :
1
2
3
If PlusRecenteDate > date() + X Then
    msgbox "Ton petit message"
End if
Avec PlusRecenteDate une variable de type date qui contient le résultat de ta requête.
Nitsuja est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 11/08/2011, 17h41   #3
Membre actif
 
Avatar de SeaWolf601
 
Inscription : août 2006
Messages : 239
Détails du profil
Informations forums :
Inscription : août 2006
Messages : 239
Points : 192
Points : 192
Hello,
tu peux effectivement passer par ta requête qui va comparer la date du jour avec ta DateX (ta date de référence).

Dans une requete cela s'écrit en SQL

Ça donnera quelque chose comme :

Code :
VerifDate : IIf([DateX] + 7 >Date();"La date est passée de 7 jours";"Date Ok")
Attention cela est basé sur la date de ton CPU, donc si quelqu'un change la date du PC, cela contourne le code.
En un mot si c'est une protection que tu veux faire cela est facilement contournable.
__________________

La théorie, c'est quand on sait tout et que rien ne fonctionne.
La pratique, c'est quand tout fonctionne et que personne ne sait pourquoi.
Ici nous avons réuni théorie et pratique: Rien ne fonctionne ... et personne ne sait pourquoi !

Albert Einstein
SeaWolf601 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 12/08/2011, 08h43   #4
Invité de passage
 
Homme
Étudiant
Inscription : juillet 2011
Messages : 16
Détails du profil
Informations personnelles :
Sexe : Homme
Âge : 20
Localisation : France, Finistère (Bretagne)

Informations professionnelles :
Activité : Étudiant
Secteur : Industrie

Informations forums :
Inscription : juillet 2011
Messages : 16
Points : 3
Points : 3
Ok dac, je vais essayer avec ces pistes, je vous tiens au courant.

Non c'est pas pour une protection, juste un message de rappel si jamais au bout de 7 jours une tache précise n'a pas été faite

EDIT : Bon je vais essayer de partir sur la requête, la première solution j'arrive pas J'ai deja une macro Autoexec, donc à la suite des différentes opérations deja existantes je fais "Executercode", et la lorsque je clique en bas (sur les 3 "petits points") il m'ouvre un générateur d'expression... Alors que je souhaite inscrire du VBA.

Par contre pour la requête, il y quelque chose que je dois mal faire, il me dit que la fonction If est non définie. (voir image jointe). Par contre dans le cas de la requête comment faire pour qu'elle s'ouvre au lancement de la base ?
Images attachées
Type de fichier : jpg Requete date.JPG (26,8 Ko, 5 affichages)
pikayo est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 12/08/2011, 10h58   #5
Membre du Club
 
Homme
Étudiant
Inscription : juillet 2011
Messages : 47
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : France

Informations professionnelles :
Activité : Étudiant
Secteur : Industrie

Informations forums :
Inscription : juillet 2011
Messages : 47
Points : 46
Points : 46
On te demande simplement de choisir une fonction (vba) à exécuter.
Bien sûr, cette fonction doit être préalablement écrite dans un module.

PS : je n'ai pas regardé ta pièce jointe mais déjà il s'agit de la fonction Iif et non if (if est un mot clé et non une fonction)
Nitsuja est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 12/08/2011, 13h12   #6
Invité de passage
 
Homme
Étudiant
Inscription : juillet 2011
Messages : 16
Détails du profil
Informations personnelles :
Sexe : Homme
Âge : 20
Localisation : France, Finistère (Bretagne)

Informations professionnelles :
Activité : Étudiant
Secteur : Industrie

Informations forums :
Inscription : juillet 2011
Messages : 16
Points : 3
Points : 3
Ah ok, autant pour moi, merci de ton aide, je vais réessayer ça.

Ah pardon, je pensais que c'était une faute de frappe de Seawolf . Punaise, j'en ai des choses à apprendre
pikayo est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 12/08/2011, 13h21   #7
Membre actif
 
Avatar de SeaWolf601
 
Inscription : août 2006
Messages : 239
Détails du profil
Informations forums :
Inscription : août 2006
Messages : 239
Points : 192
Points : 192
il faut que tu mette cela dans le champs, pas dans le critère, tu crée une nouvelle colenne à coté de celle de date et tu tapes le code :

Code :
VerifDate : IIf([DateX] + 7 >Date();"La date est passée de 7 jours";"Date Ok")
Ensuite ton champ "Date" tu l'as appelé "Date", normal me diras tu.
Mais tu ferais mieux de le renommer.
Sinon si tu continue ton développement ensuite sur un formulaire, en VBA, il risque de s'emmeler les pinceaux entre ton champ "Date" et la fonction Date.
C'est pour cela que dans mon exemple je l'ai appelé "DateX".
__________________

La théorie, c'est quand on sait tout et que rien ne fonctionne.
La pratique, c'est quand tout fonctionne et que personne ne sait pourquoi.
Ici nous avons réuni théorie et pratique: Rien ne fonctionne ... et personne ne sait pourquoi !

Albert Einstein
SeaWolf601 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 12/08/2011, 13h31   #8
Invité de passage
 
Homme
Étudiant
Inscription : juillet 2011
Messages : 16
Détails du profil
Informations personnelles :
Sexe : Homme
Âge : 20
Localisation : France, Finistère (Bretagne)

Informations professionnelles :
Activité : Étudiant
Secteur : Industrie

Informations forums :
Inscription : juillet 2011
Messages : 16
Points : 3
Points : 3
Impec Seawolf, me reste plus qu'a réussir à ouvrir le formulaire associé à la requête lors de l'ouverture de la base (dans la macro Autoexec ça devrait pas poser trop de soucis) et ça va le faire, impeccable ! Thank you
pikayo est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 11h05.


 
 
 
 
Partenaires

Hébergement Web