Bonjour,

J'ai un petit soucis, (voir mon code plus bas), le but de cette fonction est d'ouvrir un nouveau formulaire en fonction d'un élément qui est sélectionner dans un autre formulaire. Le problème se situe lorsque la ligne 'Form_BonAchat.SetFocus' se fait, il ouvre un second formulaire 'BonAchat', et je ne sais pas pourquoi? Je dois faire un setFocus, car ma procédure RefreshPoData permet de remplir mes combobox/textebox/ListBox de mon formulaire BonAhcat, et si je ne met pas le focus sur mon formulaire aucun des élément ne se met à jour.... J'ai pourtant vérifier et tout semble fonctionné normalement c'est juste que mes contrôle reste vide... Je contourne donc se problème avec un focus sur mon formulaire, mais j'en crée un aurte.

Merci d'avance de 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
19
20
21
Private Sub cmdModifier_Click()
Dim intTypePO As Integer
Me.txtActiveIdPO = Me.Form![SousFormRecherchePO]![IdAchat].Value
lngIdActivePO = Me.txtActiveIdPO
 
If IsNull(Me.txtActiveIdPO) Then
    MsgBox "Vous devez sélectionner un item de la liste"
    Exit Sub
End If
If Not CurrentProject.AllForms("BonAchat").IsLoaded Then
    DoCmd.OpenForm Form_BonAchat.Name, acNormal
End If
 
intTypePO = Me.Form![SousFormRecherchePO]![POType].Value
Form_BonAchat.SetFocus
Form_BonAchat.CadretypePO = intTypePO
Call Form_BonAchat.TypePO
Call Form_BonAchat.RefreshPOdata(Me.txtActiveIdPO)
 
'DoCmd.Close acForm, Form_ListePO.Name
End Sub
J'ajoute ma procédure RefreshPOData au cas ou ça pourrait aider :

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
36
37
38
39
40
41
Sub RefreshPOdata(ByVal idPO As Long)
Dim rs As DAO.Recordset
Dim qry As DAO.QueryDef
Dim strSQL As String
 
'Me.Détail.Visible = True
Set qry = CurrentDb.QueryDefs("REQ_InfoPO")
strSQL = qry.SQL
strSQL = Left(strSQL, InStr(strSQL, "WHERE") - 1)
strSQL = strSQL & "WHERE Achattl.IdAchat = " & idPO
qry.SQL = strSQL
Set rs = qry.OpenRecordset
'If rs.EOF Then Exit Sub
 
With Form_BonAchat
    Form_BonAchat.txtIdPO = idPO
 
    Form_BonAchat.CadretypePO = Nz(rs.Fields("POType"), 1)
    Form_BonAchat.cmbCie = rs.Fields("IdCie")
    Form_BonAchat.cmbSite = rs.Fields("IdSite")
    Form_BonAchat.txtFournisseur = rs.Fields("NomCourt")
 
    Call RefreshContact
    Form_BonAchat.cmbContact = rs.Fields("contact")
 
    On Error Resume Next
    Form_BonAchat.txtNoPO = rs.Fields("NoPO")
    Form_BonAchat.txtPODate = Format(rs.Fields("DateAchat"), "yyyy-mm-dd")
    Form_BonAchat.DTdateLiv = Nz(rs.Fields("DateLivraison"), Date)
    Form_BonAchat.txtRef = rs.Fields("Reference")
    Form_BonAchat.txtIsActif = rs.Fields("IsActif")
    On Error GoTo 0
 
    If IsNull(Me.txtRef) Then
        Me.txtRef = GetPoReference()
    End If
 
 
    Call GetPODetail(idPO)
End With
End Sub