Tu n'as pas répondu à ma question, bien que je connaisse d'avance la réponse.
Il n'est jamais trop tard pour apprendre. Une pile (dans le sens empilement) est l'ensemble des formulaires ouvert dans l'ordre chrono.
Forms(0) étant le premier ouvert.
Idem pour les états avec Reports(0).
En 9 lignes :
Public Function NouvelleFactureMe() 'Totalement inutile !!! 'rstFact ne sert pas donc maBD non plus 'Rep est u string alors que tu y stocke un long 'Dim rstFact As Recordset, maBD As Database, Rep As String 'meF ne sert pas non plus puisque le formulaire une fois ouvert ' est dans la pile des formulaire (forms()) 'meCL n'est pas utilisé et s'il l'était il serait dans la pile des ' formulaire comme FacturesExMeca 'Dim meF As Form, meCL As Form 'Set maBD = CurrentDb 'ici beaucoup de lignes inutiles 'Rep = MsgBox("Est-ce bien une nouvelle facture" & vbLf & vbLf & _ ' "MECANIQUE" & vbLf & vbLf & _ ' "que vous voulez créer ?", vbQuestion + vbDefaultButton1 + vbYesNo, "Contrôle type facture") 'If Rep = vbNo Then ' Exit Function 'End If 'alors que If vbNo = MsgBox("Est-ce bien une nouvelle facture" & vbLf & vbLf & _ "MECANIQUE" & vbLf & vbLf & _ "que vous voulez créer ?", vbQuestion + vbDefaultButton1 + vbYesNo, "Contrôle type facture") Then Exit Function 'suffit largement '------------------------------------------------------------------- 'Pourquoi utiliser cette table ? 'Set rstFact = maBD.OpenRecordset("Facturation", dbOpenDynaset) 'With rstFact 'If .RecordCount > 0 Then 'DoCmd.OpenForm "FacturesExMeCa" DoCmd.OpenForm "FacturesExMeCa", acNormal, "", "", acAdd, acNormal 'Set meF = Forms![FacturesExMeCa] 'Le formulaire est dans la pile autant l'utiliser With Forms.FacturesExMeCa .Numfact = DMax("numfact", "facturation") + 1 .[NCL] = Forms.Clients![NCL] 'ici tu utilises bien la pile !!! .[Nom] = Forms.Clients![Nom] .TF = "FME" .NFactLettre = "FME" & .Numfact .Cadre48.Visible = False 'End If End With '-------------------------------------------------------------------- 'Set maBD = Nothing ' Set rstFact = Nothing 'Set meF = Nothing End Function
Honnêtement il ne s'agit pas d'un bug ni d'une régression mais d'une simple correction d'un mauvais comportement.
Pour l'anecdote un client me donnait l'exemple d'une de ces applications qui fonctionnait' selon lui, parfaitement en ACCESS 2.0, il utilisait un bug du moteur de base de données pour écraser les n° auto, et d'un autre coté il pestait contre ACCESS et Microsoft
parce qu'il était obligé de réparer sa base régulièrement.
Commençons par utiliser correctement le produit avant d'y voir des bugs partout.