Précédent   Forum des professionnels en informatique > Logiciels > Microsoft Office > Access > VBA Access
VBA Access Le forum pour les questions relatives au code VBA sous Access, et à son environnement de développement VBE.
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 07/12/2011, 10h36   #1
Invité de passage
 
Homme
Étudiant
Inscription : décembre 2011
Messages : 8
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : France

Informations professionnelles :
Activité : Étudiant
Secteur : Santé

Informations forums :
Inscription : décembre 2011
Messages : 8
Points : 3
Points : 3
Par défaut Atteindre valeur de sous formalaire pour test VBA

Bonjour, je suis en train de mettre en place un système de gestion de stock et de dispensation de médicament (=Spécialité ATU) au sein d'un hôpital. J'ai créé un formulaire de dispensation qui permet de renseigner plusieurs champs (par exemple un nom de patient et un nom de médicament entre autre). Dans ce formulaire principal se trouve un sous formulaire affichant le numéro d'autorisation (=N° ATU) pour le patient. (En effet, ce sous formulaire est lié au principal par l'intermédiaire des champs père: médicament et patient.)
Mon problème consiste à faire un test en VBA sur l'évènement "Après MAJ" du champ médicament (Le dernier renseigné) pour vérifier que le numéro existe bien, et secondairement tester si la date de péremption de cette autorisation n'est pas dépassée.
Je suis parti sur ce début de code mais ne connait pas très bien le VBA.

Code :
1
2
3
4
5
6
7
8
9
10
11
12
Private Sub Specialite_ATU_AfterUpdate()
 
If Formulaires![Nouvelle Délivrance hospitalisation]![Numéros et péremptions des ATU sous-formulaire].Form![N° d'ATU ou N° d'inclusion].Value <> 0 Then
    If DateDiff("d", Formulaires![Nouvelle Délivrance hospitalisation]![Numéros et péremptions des ATU sous-formulaire].Form![Péremption de l'ATU].Value, Now) < 0 Then
    Else
    MsgBox ("ATTENTION! Vous ne pouvez pas délivrer ce médicament pour ce patient car l'ATU est périmée. Veuillez contacter le pharmacien responsable des ATU pour effectuer un renouvellement d'ATU auprès du médecin en charge du patient.")
    End If
Else
MsgBox ("ATTENTION! Vous ne pouvez pas délivrer ce médicament pour ce patient car l'ATU n'existe pas. Veuillez contacter le pharmacien responsable des ATU pour effectuer une demande initiale d'ATU auprès du médecin en charge du patient.")
End If
 
End Sub
Merci d'avance pour votre aide.
Jojovanadium est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 07/12/2011, 16h22   #2
Membre confirmé
 
Inscription : juillet 2006
Messages : 347
Détails du profil
Informations forums :
Inscription : juillet 2006
Messages : 347
Points : 289
Points : 289
Bonjour,

Un petit coup d'oeil sur la FAQ peut-être ? http://access.developpez.com/faq/?page=Ctrl#ctlsForm

Si vous avez plusieurs sou formulaires imbriqués, vous devez utiliser une synthaxe dans cet esprit :

Code :
Forms![NomFormulaire]![NomSousFormulaire1].Form![NomSousFormulaire2].Form![MonControle]
PS : Petit "conseil", il est préférable d'éviter de mettre des accents, des espaces ou des caractères spéciaux dans les noms de tous vos composants (formulaires, boutons, contrôles ...) ca évite des soucis !
Access Newbie est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 07/12/2011, 17h55   #3
Invité de passage
 
Homme
Étudiant
Inscription : décembre 2011
Messages : 8
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : France

Informations professionnelles :
Activité : Étudiant
Secteur : Santé

Informations forums :
Inscription : décembre 2011
Messages : 8
Points : 3
Points : 3
Merci de votre réponse, j'ai effectivemement vu cette nomenclature mais le problème, c'est que même avec la bonne synthaxe, le test VBA ne semble pas fonctionner puisque les messages d'erreur n'apparaissent pas lors de la saisie dans le formulaire.
Jojovanadium est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 08/12/2011, 09h44   #4
Membre confirmé
 
Inscription : juillet 2006
Messages : 347
Détails du profil
Informations forums :
Inscription : juillet 2006
Messages : 347
Points : 289
Points : 289
Sinon, pour avoir la bonne synthaxe, vous pouvez vous servir des requetes access, créez une requete via l'editeur, puis mettez vous sur une ligne de critères, faites un clic droit puis cliquez sur créer. Ensuite accédez à votre contrôle. Ca y est vous avez le code qui va bien (attention en récupérant le code, il faut remplacer le mot "formulaires" par "forms").
Access Newbie est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 08/12/2011, 12h43   #5
Invité de passage
 
Homme
Étudiant
Inscription : décembre 2011
Messages : 8
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : France

Informations professionnelles :
Activité : Étudiant
Secteur : Santé

Informations forums :
Inscription : décembre 2011
Messages : 8
Points : 3
Points : 3
Merci pour votre réponse. Serait-il possible de faire la meme démarche avec une macro?
Jojovanadium est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 08/12/2011, 14h10   #6
Membre confirmé
 
Inscription : juillet 2006
Messages : 347
Détails du profil
Informations forums :
Inscription : juillet 2006
Messages : 347
Points : 289
Points : 289
Oulala ... les macros ... ce n'est pas du tout ma specialité !

Personellement, je ne m'en sers pas donc je laisse quelqu'un répondre qui s'y connait mieux que moi !
Access Newbie est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 12/12/2011, 14h59   #7
Invité de passage
 
Homme
Étudiant
Inscription : décembre 2011
Messages : 8
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : France

Informations professionnelles :
Activité : Étudiant
Secteur : Santé

Informations forums :
Inscription : décembre 2011
Messages : 8
Points : 3
Points : 3
Bonjour, dans une autre partie du forum j'ai eu ce code:
Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
Private Sub txtMedoc_BeforeUpdate(Cancel As Integer)
Dim strMedicamentNum                                   As String
Dim vntVerif                                           As Variant
 
    strMedicamentNum = Me.txtMedoc.Value
    vntVerif = DLookup("[MedicamentNum]", "TableMidicaments", "MedicamentNum='" & strMedicamentNum & "'")
    If IsNull(vntVerif) Then
        MsgBox "Ouh ouh, y a pas de médoc comme ça dans la table !", vbExclamation
        Cancel = True
    Else
        vntVerif = DLookup("[DatePeremption]", "TableMidicaments", "MedicamentNum='" & strMedicamentNum & "'")
        If IsDate(vntVerif) Then
            If CLng(vntVerif) < CLng(Now) Then
                MsgBox "Ouh ouh, faudrait voir à pas délivrer des truc périmés, humm !!", vbExclamation
                Cancel = True
            End If
        End If
    End If
End Sub
Mais le problème, c'est que quand je rentre les champs au format que vous m'avez suggéré (Forms![...]!Form![...] etc), Il me retourne une erreur et n'accepte apparemment pas ce format????
Jojovanadium est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 13/12/2011, 10h52   #8
Membre confirmé
 
Inscription : juillet 2006
Messages : 347
Détails du profil
Informations forums :
Inscription : juillet 2006
Messages : 347
Points : 289
Points : 289
Bonjour,

Dans le bout de code que vous donnez je ne vois pas ou se situe la ligne avec forms!...

PS : vous pouvez mettre votre base en PJ ? (en dénaturant les données si besoin)
Access Newbie est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 22h10.


 
 
 
 
Partenaires

Hébergement Web