Bonjour à tous et merci de votre temps et de votre aide.
J'ai une appli où j'ai la séquence suivante :
- sur le formulaire frmElement, l'utilisateur demande d'ajouter un nouvelle element associé.
- Le systeme ouvre le formulaire frmAjouterElement et
- L'utilisateur saisi les informations et valide sa saisie.
- Le système enregistre les nouvelles éléments et mets à jour diverses autres informations.
- le formulaire frmAjouterElement génère un événement "ElementAjoue".
- frmElement capte cet événement.
- frmElement instancie une copie de lui-même (frmElement_1 juste pour le distinguer de l'autre dans la discussion car il porte le même nom dans le système.)et lui assigne le focus.
- Le formulaire frmAjouterElement se ferme.
Si frmAjouterElement n'est pas modale, le focus reste bien sur frmElement_1.
Mais, si le formulaire frmAjouterElement est modale, le focus revient sur frmElement.
J'aimerai vraiment gardé le formulaire frmAjouterElement modale donc existe t'il un moyen de gardé le focus sur la copie.
Le code pour l'appel de frmAjouterElement est le suivant :
Et il s'exécute en totalité même si le formulaire est modale.
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 Private Sub GererBtnAjouterElement_Click(prmAction As eAction_AjouterElement) If Not EST_MODE_DEBUG Then On Error GoTo Err_GererBtnAjouterElement_Click End If Call mdlFormulaire.Sauvegarder 'force l'enr des données saisie Set m_FrmAjouterElement = New Form_frmAjouterElement m_FrmAjouterElement.Action_AjouterElement = prmAction m_FrmAjouterElement.NomElementRef = Me.Nom m_FrmAjouterElement.CodeTypeElementRef = Me.CodeTypeElement m_FrmAjouterElement.ClefElementRef = Me.Clef m_FrmAjouterElement.Visible = True Exit_GererBtnAjouterElement_Click: Exit Sub Err_GererBtnAjouterElement_Click: Call mdlErreur.AfficherMessErreurStandard(Err) Resume Exit_GererBtnAjouterElement_Click End Sub
Il semble que si on instancie le formulaire, Access n'arrête pas le code comme dans un DoCmd.
La demande d'affichage se fait ici :
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 Private Sub m_FrmAjouterElement_ElementAjoute() 'Un élément vient d'être ajouté ou trouvé Dim actionAjouterElement As eAction_AjouterElement Dim ClefElementAjoute As Long actionAjouterElement = m_FrmAjouterElement.Action_AjouterElement ClefElementAjoute = m_FrmAjouterElement.ClefElementAjoute Select Case actionAjouterElement Case eAction_AjouterElementUtilise Me.sfrmAssElementElementUtilise.Requery Call Me.sfrmAssElementElementUtilise.Form.Recordset.FindFirst("[ClefElementUtilise]=" & ClefElementAjoute) Case eAction_AjouterElementUtilisateur Me.sfrmAssElementElementUtilisateur.Requery Call Me.sfrmAssElementElementUtilise.Form.Recordset.FindFirst("[ClefElementUtilisateur]=" & ClefElementAjoute) Case Else Call Err.Raise(5, , Error$(5) & " - Action inconnue.") End Select Call ActualiserFrmAffichageListeElement Call mdlElement.OuvrirFrmElement(ClefElementAjoute) 'C'est cette ligne là qui fait l'assignation du focus. End Sub
A+
Partager