Bonsoir.
Est-il possible d'exécuter la procédure évènementielle AprésMAJ d'un Menu Déroulant d'un formulaire MonForm_A depuis un bouton "Fermer" (par exemple) sur un formulaire MonForm_B ?
Merci d'avance et bonne soirée.
Bonsoir.
Est-il possible d'exécuter la procédure évènementielle AprésMAJ d'un Menu Déroulant d'un formulaire MonForm_A depuis un bouton "Fermer" (par exemple) sur un formulaire MonForm_B ?
Merci d'avance et bonne soirée.
Bonsoir,
Oui, mais
- la procédure doit être "public" (et non "private") ;
- le formulaire doit être ouvert.
Exemple de code :
Code : Sélectionner tout - Visualiser dans une fenêtre à part call forms("MonForm_A").ZoneDeListe_AfterUpdate
SVP ne m'envoyez pas de messages privés pour poser des questions techniques, vous n'aurez pas de réponse !
Bonsoir Claude,
Merci pour ta réponse.
J'ai donc modifié ma procédure en "Public".
Voici le résultat :
Cela dit, ce code génére une erreur d'exécution 2465.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16 Public Sub Taureau_DblClick(Cancel As Integer) Dim objForm As AccessObject, dbs As Object Set dbs = Application.CurrentProject For Each objForm In dbs.AllForms If objForm.IsLoaded = True And objForm.Name = "F_IA" Then Forms![F_IA]![Et_Taureau] = Taureau Call Forms("F_IA").Et_Taureau_AfterUpdate End If Next objForm DoCmd.Close End Sub
"Erreur définie par l'application ou par l'objet".
Qu'est-ce que cela veut dire ?
Merci pour ton aide.
Bonjour,
Quand tu signales une erreur, dis aussi sur quelle ligne de code elle se produit (elle s'affiche en surbrillance jaune).
Probablement ici sur cette ligne :
Deux remarques
Code : Sélectionner tout - Visualiser dans une fenêtre à part Call Forms("F_IA").Et_Taureau_AfterUpdate
1° Tu montres que la procédure appelante est "public". C'est la procédure appelée qui doit être "public" en l'occurrence : Et_Taureau_AfterUpdate.
2° Tu peux simplifier le code que tu montres comme ceci :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7 Private Sub Taureau_DblClick(Cancel As Integer) If CurrentProject.AllForms("F_IA").IsLoaded Then Forms![F_IA]![Et_Taureau] = Taureau Call Forms("F_IA").Et_Taureau_AfterUpdate End If
SVP ne m'envoyez pas de messages privés pour poser des questions techniques, vous n'aurez pas de réponse !
Bonjour,
Effectivement, c'est bien sur cette ligne qu'il y a un problème :
Excuse moi de ne pas l'avoir précisé.
Code : Sélectionner tout - Visualiser dans une fenêtre à part Call Forms("F_IA").Et_Taureau_AfterUpdate
J'ai donc appliqué le code que tu m'as proposé mais j'ai malheureusement la même erreur et toujours sur la même ligne de code.
Autre chose, je ne comprends pas ta remarque Private/Public.
Où faut-il que j'indique la fonction Public ?
De plus dans cette ligne :
Access ne semble pas accepter les doubles ""
Code : Sélectionner tout - Visualiser dans une fenêtre à part If CurrentProject.AllForms(""F_IA"").IsLoaded Then
Une erreur : Attendu : séparateur de liste ou ) s"affiche.
J'ai donc à tout hasard essayé ceci :
et je retrouve ce même message d'erreur à savoir :
Code : Sélectionner tout - Visualiser dans une fenêtre à part If CurrentProject.AllForms("F_IA").IsLoaded Then
"Erreur définie par l'application ou par l'objet"
Merci pour ton aide.
Excuse cette distraction de ma part, je viens d'éditer mon message : il ne faut pas doubler « " ».If CurrentProject.AllForms(""F_IA"").IsLoaded Then
Dans ton formulaire F_IA, dans le code associé à l'événement "Après mise à jour" de ton contrôle Et_Taureau tu as ceci :Autre chose, je ne comprends pas ta remarque Private/Public.
Où faut-il que j'indique la fonction Public ?
"Private" entraine que la portée de cette sub est limitée à ce formulaire. Si tu veux que cette procédure soit visible aussi en dehors (par exemple lorsque tu l'appelles depuis un autre formulaire) il faut la rendre "public", comme ceci :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2 Private Sub ZoneDeListe_AfterUpdate()
Donc dans ton formulaire F_IA, tu remplaces le mot "private" par "public".
Code : Sélectionner tout - Visualiser dans une fenêtre à part Public Sub ZoneDeListe_AfterUpdate()
SVP ne m'envoyez pas de messages privés pour poser des questions techniques, vous n'aurez pas de réponse !
Je comprends mieux le principe Private/Public.
Cela dit ce code :
me génère toujours une erreur, mais plus la même à présent :
Code : Sélectionner tout - Visualiser dans une fenêtre à part Call Forms("F_IA").Et_Taureau_AfterUpdate
"Erreur n° 2471 - L'expression entrée comme paramètre de requête est à l'origine de l'erreur suivante : [Et_Taureau]"
J'ai vérifié l'orthographe de mes noms et champs : RAS.
Et de toute façon ça ne vient pas de là puisque ce code :
me renvoie bien la valeur souhaitée.
Code : Sélectionner tout - Visualiser dans une fenêtre à part Forms![F_IA]![Et_Taureau] = Taureau
Le bug a lieu au moment d'appeler la procédure.
Je ne comprends pas pourquoiMalheureusement je n'utilise pas Access2010 (j'ai Access2000).L'expression entrée comme paramètre de requête est à l'origine de l'erreur suivante : [Et_Taureau]
Si tu peux poster une db compatible Access2000 avec tes deux formulaires et leurs tables, j'examinerai sur pièces.
Confirme que c'est bien la ligne
qui est surlignée lors de cette erreur.
Code : Sélectionner tout - Visualiser dans une fenêtre à part Call Forms("F_IA").Et_Taureau_AfterUpdate
SVP ne m'envoyez pas de messages privés pour poser des questions techniques, vous n'aurez pas de réponse !
Salut
Est-il possible de voir le code complet de la procédure appelée?
@+
Le monde est trop bien programmé pour être l’œuvre du hasard…
Mon produit pour la gestion d'école: www.logicoles.com
Ah du renfort !
Salut l'ami !
SVP ne m'envoyez pas de messages privés pour poser des questions techniques, vous n'aurez pas de réponse !
Me voici.
Bonjour alassanediakite.
Voici ci-joint mon appli (enfin, ume partie).
Voulez-vous ouvrir le formulaire F_IA puis sélectionner une vache dans le menu.
Ceci fait, il est possible de choisir un taureau dans la liste déroulante.
Mais je voudrais avoir accés à une autre liste via le bouton :"Rechercher dans la cuve".
Un form s'affiche et je voudrais qu'en double-cliquant sur le nom du taureau la procédure de Et_Taureau dans F_IA s'exécute. Et c'est à ce moment là que le message d'erreur s'affiche.
Vous constaterez que le taureau choisi s'affiche bien dans ma liste de F_IA mais l'exécution de sa procédure bug.
Comme demandé voici les codes affectés au menu déroulant F_IA!Et_Taureau :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9 Private Sub Et_Taureau_BeforeUpdate(Cancel As Integer) 'Oblige l'utilisateur a sélectionner une femelle If IsNull(Modifiable14) Then MsgBox "Sélectionnez une femelle", vbOKOnly, "Action interdite !" End If End Sub
Merci pour votre aide.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18 Public Sub Et_Taureau_AfterUpdate() 'Recherche l'identification du taureau choisi Me![Texte25] = DLookup("[Code ]", "[Taureaux]", "[Taureau] = [Et_Taureau]") Me![Texte27] = DLookup("[Numéro]", "[Taureaux]", "[Taureau] = [Et_Taureau]") Me![Texte29] = DLookup("[Taureau]", "[Taureaux]", "[Taureau] = [Et_Taureau]") 'Recherche le prix pour taureau If DLookup("[Commande]", "[Taureaux]", "[Taureau] = [Et_Taureau]") = True Then ET_Prix = DLookup("[Prix]", "[Cuve]", "[Taureau] = [Et_Taureau]") Else: ET_Prix = DLookup("[Prix]", "[Taureaux]", "[Taureau] = [Et_Taureau]") End If Et_inséminateur.SetFocus End Sub
Salut Claude.
Je pense que le problème viens du critère au niveau de DLookup.
Essaye...
@+
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18 Public Sub Et_Taureau_AfterUpdate() 'Recherche l'identification du taureau choisi Me![Texte25] = DLookup("[Code ]", "[Taureaux]", "[Taureau] ='" & Me.[Et_Taureau] & "'") Me![Texte27] = DLookup("[Numéro]", "[Taureaux]", "[Taureau] ='" & Me.[Et_Taureau] & "'") Me![Texte29] = DLookup("[Taureau]", "[Taureaux]", "[Taureau] ='" & Me.[Et_Taureau] & "'") 'Recherche le prix pour taureau If DLookup("[Commande]", "[Taureaux]", "[Taureau] ='" & Me.[Et_Taureau] & "'") = True Then ET_Prix = DLookup("[Prix]", "[Cuve]", "[Taureau] ='" & Me.[Et_Taureau] & "'") Else: ET_Prix = DLookup("[Prix]", "[Taureaux]", "[Taureau] ='" & Me.[Et_Taureau] & "'") End If Et_inséminateur.SetFocus End Sub
Le monde est trop bien programmé pour être l’œuvre du hasard…
Mon produit pour la gestion d'école: www.logicoles.com
En tout cas, comme Me.[Et_Taureau] est du texte, il faut :Je pense que le problème viens du critère au niveau de DLookup.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15 Public Sub Et_Taureau_AfterUpdate() Me![Texte25] = DLookup("Code", "[Taureaux]", "[Taureau] = """ & [Et_Taureau] & """") Me![Texte27] = DLookup("[Numéro]", "[Taureaux]", "[Taureau] = """ & [Et_Taureau] & """") Me![Texte29] = DLookup("[Taureau]", "[Taureaux]", "[Taureau] = """ & [Et_Taureau] & """") 'Recherche le prix pour taureau If DLookup("[Commande]", "[Taureaux]", "[Taureau] = """ & [Et_Taureau] & """") = True Then ET_Prix = DLookup("[Prix]", "[Cuve]", "[Taureau] = """ & [Et_Taureau] & """") Else: ET_Prix = DLookup("[Prix]", "[Taureaux]", "[Taureau] = """ & [Et_Taureau] & """") End If Et_inséminateur.SetFocus End Sub
Essaie en modifiant cela, on verra ensuite comment simplifier.
SVP ne m'envoyez pas de messages privés pour poser des questions techniques, vous n'aurez pas de réponse !
Génial !!!!!!
J'ai copié le code que vous m'avez proposé et plus spécialement celui que tu as modifié Claude et le résultat attendu est au RDV !!! Je suis content.
Claude, tu me proposes de simplifier ce code, j'attends de tes nouvelles avant d'afficher
En tout cas merci à tous les deux pour votre aide.
Je viens de me rendre compte que les deux propositions sont identiques :J'ai copié le code que vous m'avez proposé et plus spécialement celui que tu as modifié Claude et le résultat attendu est au RDV
alassanediakite utilise des simples quotes, là où j'utilise des doubles-quotes.
Simplification possible
Dans ta zone de liste, si tu remplaces la propriété « Contenu » par ceci :
Et que tu modifies les propriétés comme ceci :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3 SELECT Taureaux.Taureau, Taureaux.N°, Taureaux.Code, Taureaux.Prix FROM Taureaux ORDER BY Taureaux.Taureau;
Tu disposes dans ton formulaire de quatre valeurs pour Et_Taureau :
Me.Et_Taureau.Column(0) qui contient Taureau (celle affichée) ;
Me.Et_Taureau.Column(1) qui contient Code ;
Me.Et_Taureau.Column(2) qui contient N° ;
Me.Et_Taureau.Column(3) qui contient Prix.
Remarque que la 1re colonne correspond à l’indice 0, la 2e à 1, etc.
Et ton code devient ceci :
S'il est encore temps, tu devrais donner des noms explicites à tes contrôles.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9 Public Sub Et_Taureau_AfterUpdate() Me![Texte25] = Me.Et_Taureau.Column(1) Me![Texte27] = Me.Et_Taureau.Column(2) Me![Texte29] = Me.Et_Taureau.Column(0) Me![ET_Prix] = Me.Et_Taureau.Column(3) Et_inséminateur.SetFocus End Sub
Si tu veux une idée de ce que font les pros, lis ceci :
Descriptif des conventions typographiques du code Visual Basic de Jean-Philippe AMBROSINO.
Bonne continuation.
SVP ne m'envoyez pas de messages privés pour poser des questions techniques, vous n'aurez pas de réponse !
Bonjour,
Juste une dernière question simplement pour comprendre : pourquoi est-il nécessaire d'ajouter des quotes dans ce code ?
Qu'est-ce qu'elles représentent, qu'est-ce qu'elles signifient ?
Code : Sélectionner tout - Visualiser dans une fenêtre à part Me![Texte25] = DLookup("Code", "[Taureaux]", "[Taureau] = """ & [Et_Taureau] & """")
Sinon, concernant les noms de mes contrôles, oui je sais et je reconnais mes erreurs.
Pour ma défense, je travaille sur cette appli depuis plusieurs années, au gré du peu de temps libre que j'ai à y consacrer et j'ai découvert ce forum que trop tardivement !!! Le mal était fait ...
Mais depuis, sur chaque nouvelle création je veille à être plus explicite à ce niveau là.
Néanmois, merci pour la remarque...
Bonjour,
Eh ho ! On est en démocratie : il n’y a aucun souci !Sinon, concernant les noms de mes contrôles, oui je sais et je reconnais mes erreurs.
Pour ma défense, je travaille sur cette appli depuis plusieurs années, au gré du peu de temps libre que j'ai à y consacrer et j'ai découvert ce forum que trop tardivement !!! Le mal était fait ...
Mais depuis, sur chaque nouvelle création je veille à être plus explicite à ce niveau là.
pourquoi est-il nécessaire d'ajouter des quotes dans ce code ?
Quand tu fais référence au contenu d’un champ, tu dois « délimiter » la valeur que tu proposes de comparer.
Les délimiteurs dépendent du type de la valeur.
Pour délimiter du texte, on utilise « " » la double-quote ou la « ' » simple quote :
N.B. Si le code se trouve déjà entre quotes, il faut redoubler celles qui sont à l’intérieur comme ici :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2 If [Taureau] = "ABCD" then
Code : Sélectionner tout - Visualiser dans une fenêtre à part DLookup("Code", "[Taureaux]", "[Taureau] = """ & [Et_Taureau] & """")
Pour délimiter du numérique, pas de délimiteur : le 1er chiffre marque le début et le dernier chiffre marque la fin.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2 If [Prix] = 123.45 then
Pour une date on utilise le croisillon :
Code : Sélectionner tout - Visualiser dans une fenêtre à part #02/27/12#
SVP ne m'envoyez pas de messages privés pour poser des questions techniques, vous n'aurez pas de réponse !
Présenté comme ça, c'est plus clair.
Merci pour ces infos et au passage merci à tous ceux qui oeuvrent pour que cette mine d'or de forum dure et perdure !!!!
@ bientôt.![]()
Vous avez un bloqueur de publicités installé.
Le Club Developpez.com n'affiche que des publicités IT, discrètes et non intrusives.
Afin que nous puissions continuer à vous fournir gratuitement du contenu de qualité, merci de nous soutenir en désactivant votre bloqueur de publicités sur Developpez.com.
Partager