Bonsoir membres du forum,
Comment positionner par code le curseur sur une zone de texte
d'un formulaire
dépendant d'une table.
De sorte que le code derrière cette
zone de texte, permete d'enregistrer
des données dans un autre champ.
Cordialement.
Bonsoir membres du forum,
Comment positionner par code le curseur sur une zone de texte
d'un formulaire
dépendant d'une table.
De sorte que le code derrière cette
zone de texte, permete d'enregistrer
des données dans un autre champ.
Cordialement.
Je ne Suis Pas un Expert en Programmation
Le savoir est la lumière de l'esprit
Le chemin de la réussite
Les savants sont les héritiers de la science
Qui cherche positivement trouve
Tout ce qui brille n'est pas l'or ou diamant
Mais l'or et le diamant se trouvent avec sagesse, intelligence et effort
Bonjour.
Pour la partie :
si tu veux passer le nom du champ en paramètre :Comment positionner par code le curseur sur une zone de texte d'un formulaire dépendant d'une table.
où NomTonChamp est une variable contenant le nom du champ.
Code : Sélectionner tout - Visualiser dans une fenêtre à part me.Controls(NomTonChamp).setFocus
Si ton contrôle est toujours le même :
Code : Sélectionner tout - Visualiser dans une fenêtre à part me.TonChamp.setFocusLà aucune idée de ce que tu veux faire, peut-être un exemple aiderai.De sorte que le code derrière cette zone de texte, permette d'enregistrer des données dans un autre champ.
A+
Vous voulez une réponse rapide et efficace à vos questions téchniques ?
Ne les posez pas en message privé mais dans le forum, vous bénéficiez ainsi de la compétence et de la disponibilité de tous les contributeurs.
Et aussi regardez dans la FAQ Access et les Tutoriaux Access. C'est plein de bonnes choses.
Bonsoir marot_r,
Voici la capture des zones de texte concernées.
Le code de la commande qui devrait renvoyer les données dans le champ (zone de texte) "MontantPartHeritagePercu" de la première ligne à la dernière.
Au depart, j'ai essayé le code suivant qui ne marche pas tel que souhaité.
Ensuite, le suivant qui marche mais à la fin il y a un message d'erreur:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6 Private Sub CmdMAJ_Part_Montants_Click() Me.Controls("IDMontantpartager").SetFocus MiseAJourMontantPartagés DoCmd.GoToRecord , , acNext DoCmd.GoToRecord , , acLast End Sub
Cordialement.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6 Private Sub IDMontantpartager_GotFocus() Me.Controls("IDMontantpartager").SetFocus MiseAJourMontantPartagés DoCmd.GoToRecord , , acNext DoCmd.GoToRecord , , acLast End Sub
Je ne Suis Pas un Expert en Programmation
Le savoir est la lumière de l'esprit
Le chemin de la réussite
Les savants sont les héritiers de la science
Qui cherche positivement trouve
Tout ce qui brille n'est pas l'or ou diamant
Mais l'or et le diamant se trouvent avec sagesse, intelligence et effort
Si j'ai bien compris, vous voudriez marquer une pause ligne suivante montant = 0
Mais pour faire quoi ? Saisir le montant ?
"Le savoir est la seule matière qui s'accroit quand on la partage" (Socrate)
UR - ESIROI - GPME/CG/DCG8
QTH :21°19'18"S - 055°25'32"E
Inutile de me contacter par MP
Merci de cliquer sur si la réponse vous a permis de résoudre votre problème et n'oubliez pas de clôturer le fil en cliquant sur
Bonjour hyperion13,
Quelle joie de vous croiser,
En effet, j'aimerais que le code s'arrête de défiler au dernier enregistrement du sous formulaire en cours
Forms![FrmTblGestionParticuliereChaqueHeritierEMS]![Tbl_PartageGlobalPartMontantSesHeritiersSFrm].Form![IDMontant_partager]
Message d'erreur:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7 Private Sub IDMontantpartager_GotFocus() Me.Controls("IDMontantpartager").SetFocus MiseAJourMontantPartagés DoCmd.GoToRecord , , acNext DoCmd.GoToRecord , , acLast If IsNull(Me.IDMontantpartager) Then Exit Sub End Sub
Pièce jointe
Cordialement.
Je ne Suis Pas un Expert en Programmation
Le savoir est la lumière de l'esprit
Le chemin de la réussite
Les savants sont les héritiers de la science
Qui cherche positivement trouve
Tout ce qui brille n'est pas l'or ou diamant
Mais l'or et le diamant se trouvent avec sagesse, intelligence et effort
Je vais mieux reformuler ma question Post#4
Vous voudriez parcourir du premier au dernier les champs MontantHeritagePercu dont le montant est égal à zéro.
Mais pourquoi faire ? Vous arrêter à chaque champ dont le montant est égal à zéro pour saisir un montant ? Une autre manip ?
"Le savoir est la seule matière qui s'accroit quand on la partage" (Socrate)
UR - ESIROI - GPME/CG/DCG8
QTH :21°19'18"S - 055°25'32"E
Inutile de me contacter par MP
Merci de cliquer sur si la réponse vous a permis de résoudre votre problème et n'oubliez pas de clôturer le fil en cliquant sur
1°) Il y a du code derrière le champ IDMontantpartager. Si ce champ en question reçoit le focus,Vous voudriez parcourir du premier au dernier les champs MontantHeritagePercu dont le montant est égal à zéro.
son code me permet d'enregistrer la part de montant de chaque héritier dans le champ MontantPartHeritagePercu au cas où le montant est à 0,00 FCFA.
J'ai mis toutes les lignes du champ MontantPartHeritagePercu à 0,00 FCFA.
Mon objectif est qu'une fois la part de montant de chaque héritier introduit dans le champ MontantPartHeritagePercu, le code doit s'arrêter.
Non. Voir mon explication ci dessus.Mais pourquoi faire ? Vous arrêter à chaque champ dont le montant est égal à zéro pour saisir un montant ? Une autre manip ?
Vous pourriez tester ma pièce jointe en vidant le champ MontantPartHeritagePercu.
Espérant que vous ayez compris,
Merci et à bientôt.
Je ne Suis Pas un Expert en Programmation
Le savoir est la lumière de l'esprit
Le chemin de la réussite
Les savants sont les héritiers de la science
Qui cherche positivement trouve
Tout ce qui brille n'est pas l'or ou diamant
Mais l'or et le diamant se trouvent avec sagesse, intelligence et effort
Je pense que ce que vous tentez de réaliser est de l'ordre de l'impossible, enfin je pense.
De plus marot_r vous a donné la formule de répartition des parts ici.
Il suffirait de créer 3 "function" pour calculer la part qui revient selon que l'on soit mère, soeur et frère et d'utiliser une qry Update.
"Le savoir est la seule matière qui s'accroit quand on la partage" (Socrate)
UR - ESIROI - GPME/CG/DCG8
QTH :21°19'18"S - 055°25'32"E
Inutile de me contacter par MP
Merci de cliquer sur si la réponse vous a permis de résoudre votre problème et n'oubliez pas de clôturer le fil en cliquant sur
Je vous rappelle qu'il s'agit du code suivant dans cette discussion.
Comment faire en sorte qu'il s'arrete après la derniere ligne ?
Cordialement.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7 Private Sub IDMontantpartager_GotFocus() Me.Controls("IDMontantpartager").SetFocus MiseAJourMontantPartagés DoCmd.GoToRecord , , acNext DoCmd.GoToRecord , , acLast If IsNull(Me.IDMontantpartager) Then Exit Sub End Sub
Je ne Suis Pas un Expert en Programmation
Le savoir est la lumière de l'esprit
Le chemin de la réussite
Les savants sont les héritiers de la science
Qui cherche positivement trouve
Tout ce qui brille n'est pas l'or ou diamant
Mais l'or et le diamant se trouvent avec sagesse, intelligence et effort
N'y-a-t-il pas, selon votre approche, un problème d'itération ?
En l'état, un évènement (L2) déclenche une sub (L1) qui ce poursuit par l'exécution d'une autre sub (L3), enfin je pense. Une fois la sub (L3) exécutée vous lui demandez d'aller à la ligne suivante (L4) puis dernière ligne (L5).
Hypothétiquement, on peut penser que le 1er champ MontantPartHeritagePercu dont le montant est égal à zéro sera mis à jour avec votre sub (L3). Pour le second jusqu'au dernier, j'ai un gros doute. Je me trompe peut-être.
Je ne pense pas que l'on puisse combiner L4 et L5 dans votre sub. Peut-être confondez-vous avec rst.MoveLast rst.MoveFirst
Je pense que la seule issue serait un FOR ... NEXT (itération).
"Le savoir est la seule matière qui s'accroit quand on la partage" (Socrate)
UR - ESIROI - GPME/CG/DCG8
QTH :21°19'18"S - 055°25'32"E
Inutile de me contacter par MP
Merci de cliquer sur si la réponse vous a permis de résoudre votre problème et n'oubliez pas de clôturer le fil en cliquant sur
Bonjour hyperion13,
bonjour membres du forum,
Je viens de trouver une solution.
A tester puis donnez votre avis.
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
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33 Private Sub IDMontantpartager_BeforeUpdate(Cancel As Integer) If Not ControleChampsVides Then Cancel = True End Sub Private Sub IDMontantpartager_GotFocus() If ControleChampsVides = False Then 'Au moins 1 champs obligatoire est vide Exit Sub Me.Controls("IDMontantpartager").SetFocus MiseAJourMontantPartagés DoCmd.GoToRecord , , acNext DoCmd.GoToRecord , , acLast End If End Sub Function ControleChampsVides() As Boolean On Error Resume Next 'Contrôle de la zone de IDMontantpartager If IsNull(Me.IDMontantpartager) Then ControleChampsVides = False MsgBox "ATTENTION !" & vbCrLf & "Aucune donnée saisie.", vbExclamation + vbOKOnly, "Entrez des Données" If Me.IDMontantpartager = Null Then Stop '=====>>> DROPDOWN est préférable à Sendkeys et de toute façon n'est utile que pour les combobox, pas pour les zones de texte 'Me.IDMontantpartager.Dropdown **** Pour dérouler le combobox à l'aide de la méthode DROPDOWN 'SendKeys "{F4}" '*** Pour dérouler le combobox à l'aide de l'envoi de touche clavier (F4) Else ControleChampsVides = True End If End Function
Cordialement.
Je ne Suis Pas un Expert en Programmation
Le savoir est la lumière de l'esprit
Le chemin de la réussite
Les savants sont les héritiers de la science
Qui cherche positivement trouve
Tout ce qui brille n'est pas l'or ou diamant
Mais l'or et le diamant se trouvent avec sagesse, intelligence et effort
Désolé, mon code ne marche pas.
hyperion13,
Je reviens à vous car je n'avais pas prêté attention aux dernières lignes de vos explications:
afin que vous m'aidiez avec la méthodehyperion13,
Peut-être confondez-vous avec rst.MoveLast rst.MoveFirst
Je pense que la seule issue serait un FOR ... NEXT (itération)..Je pense que la seule issue serait un FOR ... NEXT (itération)
Cordialement.
Je ne Suis Pas un Expert en Programmation
Le savoir est la lumière de l'esprit
Le chemin de la réussite
Les savants sont les héritiers de la science
Qui cherche positivement trouve
Tout ce qui brille n'est pas l'or ou diamant
Mais l'or et le diamant se trouvent avec sagesse, intelligence et effort
Bonjour,
Vous voulez bloquer la saisie dans un champ d'un formulaire continu à partir du moment où une condition est remplie ou n'est pas remplie.
Ce mode de fonctionnement n'est pas très orthodoxe et peut rendre l'utilisation d'un point de vue comportement, incompréhensible s'il n'y a pas d'explication dans un petit en-cas au-dessus ou en dessous sous forme de message à l'égard de l'utilisateur.
Imaginez une feuille de calcul Excel, vous pouvez difficilement interdire à un utilisateur d'aller sur une autre cellule alors qu'il n'a pas fini la saisie dans celle sur laquelle il est en train d'écrire. Mais cela reste possible.
Chaque fois que vous insérez une ligne dans le sous-formulaire, celle-ci possède un identifiant unique et il est donc possible de garder le FOCUS sur la ligne en conséquence d'une condition que vous émettez sur l'événement BeforeUpdate().
Pourriez-vous s'il vous plaît être un peu plus explicite dans l'exposé de votre souhait ?
Argy
Ce qui donne son sens à la communication, c´est la réponse que l´on obtient. Si vous n´obtenez pas la réponse voulue, communiquez différemment.
Ils comptent sur vous...
Web Site ‡ @Mail
Tutoriels : Déployez vos applications Access 2010 à 2019 */* Réalisez un Assistant de présaisie...
MDB Viewer : Visionneuse Access v4.0
*** Je recherche des profils (2 ans min.) Java EE, Fullstack, Front, .Net, Mobile... pour CDI ***
Bonsoir argyronet,
Quel honneur pour moi car j'ai vu plein de tutoriels de formation que vous avez mis sur developpez.net.
Bref, voici ce que je recherche:
- J'ai par exemple 13 enregistrements sur le sous formulaire continu
[Forms]![Frm_Tbl_Gestion_ParticuliereChaqueHeritierEMS]![Frm_Tbl_Partage_Taux_Ses_Heritiers].[Form]![IDMontantpartager].
Donc je souhaite que le curseur(la sourie) parcoure du 1er au 13e enregistrement
seulement à partir de la zone [IDMontantpartager] dès la réception du focus puis quitte la procédure
au 13e enregistrement en évitant les messages d'erreurs.
- Point final.
cordialement.
Je ne Suis Pas un Expert en Programmation
Le savoir est la lumière de l'esprit
Le chemin de la réussite
Les savants sont les héritiers de la science
Qui cherche positivement trouve
Tout ce qui brille n'est pas l'or ou diamant
Mais l'or et le diamant se trouvent avec sagesse, intelligence et effort
Il faudrait revenir sur le fil de discussion d'origine qui est là.
Pour info, la formulation de marot_r est la bonne formulation dans le cas cité pour calculer la quote-part de chaque héritier. Ilank, désolé pour toi, se plante.
Dans votre Post#6, capture n°2 M. Sanogo et ses 13 héritiers.
1 form principal :
- pourquoi "Sélection ID_MontantAPartager est-il une combobox et non une textbox ? Sauf erreur, après règlement des dettes, frais de succession , etc. le montant à partager est figé où quelque chose m'échappe.
2 onglet Partage_taux_heritiers et son subform :
- quelle raison de la présence de la combobox IDMontantAPartager ? Est déjà présente dans le form principal !
- normalement c'est au moment où vous allez déclarer un décès à des fins de partage que vous allez compléter la liste des héritiers et c'est à ce moment là que vous allez devoir sélectionner le degré de l'héritier, la combobox id_LienDeParenté. Donc en toute logique c'est à partir de la mise à jour de cette combobox que l'on devrait calculer la part qui revient à l'héritier textbox MontantPartHeritagePercu.
- pour cela il faut déterminer avant le lien de parenté de tous les héritiers puisque les quotités ou parts successorales varient selon les règles de votre pays.
Dans le fil de discussion actuel nous sommes hors contexte. A priori vous avez déjà déclaré les héritiers sans pour autant avoir calculé la part successorale qui leurs est due. Donc là autant passer par une qry de mise à jour.
"Le savoir est la seule matière qui s'accroit quand on la partage" (Socrate)
UR - ESIROI - GPME/CG/DCG8
QTH :21°19'18"S - 055°25'32"E
Inutile de me contacter par MP
Merci de cliquer sur si la réponse vous a permis de résoudre votre problème et n'oubliez pas de clôturer le fil en cliquant sur
Bonsoir hyperion13,
Je rappelle que j'ai pu résoudre la discussion ici https://www.developpez.net/forums/d2...age-cas-2-3-a/
En ce moment, ce qui m'intéresse c'est le mouvement que le curseur doit effectuer sur la combobox IDMontantpartager tel qu'expliqué
Donc je souhaite que le curseur(la sourie) parcoure du 1er au 13e enregistrement
seulement à partir de la zone [IDMontantpartager] dès la réception du focus puis quitte la procédure
au 13e enregistrement en évitant les messages d'erreurs.
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
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35 Private Sub IDMontantpartager_BeforeUpdate(Cancel As Integer) If Not ControleChampsVides Then Cancel = True End Sub Private Sub IDMontantpartager_GotFocus() If Not ControleChampsVides = False Then 'Au moins 1 champs obligatoire est vide 'Exit Sub Me.Controls("IDMontantpartager").SetFocus MiseAJourMontantPartages DoCmd.GoToRecord , , acNext DoCmd.GoToRecord , , acLast Exit Sub End If End Sub Function ControleChampsVides() As Boolean On Error Resume Next 'Contrôle de la zone de IDMontantpartager If IsNull(Me.IDMontantpartager) Then ControleChampsVides = False MsgBox "ATTENTION !" & vbCrLf & "Aucune donnée saisie.", vbExclamation + vbOKOnly, "Entrez des Données" If Me.IDMontantpartager = Null Then Stop '=====>>> DROPDOWN est préférable à Sendkeys et de toute façon n'est utile que pour les combobox, pas pour les zones de texte 'Me.IDMontantpartager.Dropdown **** Pour dérouler le combobox à l'aide de la méthode DROPDOWN 'SendKeys "{F4}" '*** Pour dérouler le combobox à l'aide de l'envoi de touche clavier (F4) Else ControleChampsVides = True End If End Function
Vous pouvez le tester sur la pièce jointe.
Cordialement.
Je ne Suis Pas un Expert en Programmation
Le savoir est la lumière de l'esprit
Le chemin de la réussite
Les savants sont les héritiers de la science
Qui cherche positivement trouve
Tout ce qui brille n'est pas l'or ou diamant
Mais l'or et le diamant se trouvent avec sagesse, intelligence et effort
bonsoir,
si j'ai bien compris (car l'application est encore une vraie usine à gaz ! j'ai eu du mal à m'y retrouver), le but serait de mettre à jour le champ MontantPartHeritagePercu sur clic du bouton CmdMAJ_Part_Montants, dans ce cas, il suffit de lire chaque enregistrement (.Edit) du sous-formulaire Frm_Tbl_Partage_Taux_Ses_Heritiers et de le mettre à jour (.Update) avec la fameuse boucle d'hyperion13 (FOR ... NEXT), mais ici on utilisera Do ... Loop:
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 Private Sub CmdMAJ_Part_Montants_Click() With Me.Recordset .MoveFirst Do Until .EOF .Edit Select Case .[id_LienDeParente] Case "2" .MontantPartHeritagePercu = F_RamenantMontantParticulierMembreFEMS_SML(.IDMontantpartager, .id_LienDeParente) Case "3" .MontantPartHeritagePercu = F_RamenantMontantParticulierMembreFEMS_SML_PartFrere(.IDMontantpartager, .id_LienDeParente) Case "4" .MontantPartHeritagePercu = F_RamenantMontantParticulierMembreFEMS_SML_PartSoeur(.IDMontantpartager, .id_LienDeParente) End Select .Update .MoveNext Loop End With End Sub
Quand on est derrière l'écran on n'a aucun clavier sous les mains ...
ah non ? donc devant l'écran c'est la connectique ?
Bonjour tee_grandbois,
bonjour hyperion13 et argyronet, marot_r,
et toute la famille developpez.net,
Après quelques essais, le code de tee_grandbois marche bien.
J'y ai ajouté deux lignes de code. Pour le moment pas de message d'erreur.
Mis en commentaire les autres codes qui pourrais générer des erreurs:
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
19
20
21
22
23
24
25
26 Private Sub CmdMAJ_Part_Montants_Click() 'MiseAJourMontantPartages 'Me.IDMontantpartager.SetFocus 'DoCmd.GoToRecord , , acLast With Me.Recordset .MoveFirst Do Until .EOF .Edit Select Case .[id_LienDeParente] Case "2" .MontantPartHeritagePercu = F_RamenantMontantParticulierMembreFEMS_SML(.IDMontantpartager, .id_LienDeParente) Case "3" .MontantPartHeritagePercu = F_RamenantMontantParticulierMembreFEMS_SML_PartFrere(.IDMontantpartager, .id_LienDeParente) Case "4" .MontantPartHeritagePercu = F_RamenantMontantParticulierMembreFEMS_SML_PartSoeur(.IDMontantpartager, .id_LienDeParente) Case "6" .MontantPartHeritagePercu = F_RamenantMontantParticulierMembreFEMS_HDK_PartFille(Me.IDMontantpartager, Me.id_LienDeParente) Case "5" .MontantPartHeritagePercu = F_RamenantMontantParticulierMembreFEMS_HDK_PartFils(Me.IDMontantpartager, Me.id_LienDeParente) End Select .Update .MoveNext Loop End With End Sub
,
Code : Sélectionner tout - Visualiser dans une fenêtre à part ControleChampsVides.
Code : Sélectionner tout - Visualiser dans une fenêtre à part MiseAJourMontantPartages
Merci merci merci infiniment.
Cordialement.
Je ne Suis Pas un Expert en Programmation
Le savoir est la lumière de l'esprit
Le chemin de la réussite
Les savants sont les héritiers de la science
Qui cherche positivement trouve
Tout ce qui brille n'est pas l'or ou diamant
Mais l'or et le diamant se trouvent avec sagesse, intelligence et effort
bonjour,
et qui ne servaient absolument à rien dans le code fourniMis en commentaire les autres codes qui pourrais générer des erreurs:
ControleChampsVides
MiseAJourMontantPartages
j'aurais dû préciser que mon code annulait et remplaçait totalement l'ancien
Quand on est derrière l'écran on n'a aucun clavier sous les mains ...
ah non ? donc devant l'écran c'est la connectique ?
Salut,
Je complète les remarques :
5 qry qui ont la même structure à un détail près, le critère placé sur LienDeParente, alors qu'une seule sans critère suffirait.
D'autant plus que LienDeParente se retrouve sous une autre orthographe dans les 5 fonctions, alors qu'une seule suffirait avec un SELECT ... CASE, pour calculer le montant de la part d'héritage de chacun des héritiers.
Tout un chapitre !
"Le savoir est la seule matière qui s'accroit quand on la partage" (Socrate)
UR - ESIROI - GPME/CG/DCG8
QTH :21°19'18"S - 055°25'32"E
Inutile de me contacter par MP
Merci de cliquer sur si la réponse vous a permis de résoudre votre problème et n'oubliez pas de clôturer le fil en cliquant sur
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