Bonjour

Dans un formulaire permettant l’ouverture d’une facture, j’ai plusieurs possibilités à l’ouverture, par le choix d’une liste déroulante (liste clients) :

- J’ouvre une nouvelle facture avec l’inscription des données client connues dans la table client. Puis je positionne le curseur sur un champ « produit » d’un sous formulaire de la facture.

-J’ouvre une nouvelle facture avec l’inscription d’un nouveau client, suite à une option retenue de création de nouvelle fiche client après introduction d’un nouveau client absent d’une liste déroulante. Et dans ce cas, je souhaite positionner le curseur sur le champ ‘client’ (qui s’appelle en fait ‘NomSociété’ dans le code) sur lequel vient de s'inscrire le nouveau client.

Visiblement, la variable utilisée pour mémoriser la manière d’accéder ne fonctionne pas, elle doit rester à ‘true’. C’est la première fois que j’utilise une variable (j’allais dire ‘dans ce but’, mais en fait, c’est la première fois tout court).

Où ais-je mer…. ?
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
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
 
Private Sub Liste_client_Click()
'Ouvre une nouvelle facture avec le nom du client de la liste
 
    'Met le sablier durant l'opération
    DoCmd.Hourglass True
    DoCmd.Echo False, ""
    ' Ouvre le formulaire de création de facture
    DoCmd.OpenForm "Facture", acNormal
    ' Ouvre une nouvelle facture
    DoCmd.GoToRecord acForm, "Facture", acNewRec
    ' Affiche la facture en plein écran
    DoCmd.Maximize
    ' Affiche pour accès le champ "code client"
    Forms!Facture![Client sur facture].Visible = True
    ' Accède au controle  "N° de  client" sur facture
    DoCmd.GoToControl "Client sur facture"
    ' Inscrit le N° du client dans la facture
    Forms!Facture![Client sur facture] = Forms![Sélection Client]![liste client]
    ' Cache le Sous formulaire "détail commande" (avec remise)
    Forms!Facture![Sous-formulaire Détails factures].Visible = False
    ' Affiche le Sous formulaire "détail commande sans remise"
    Forms!Facture![Sous-formulaire Détails factures sans remise].Visible = True
    ' Accède au sous formulaire "détail facture"
    DoCmd.GoToControl "Sous-formulaire Détails factures sans remise"
    ' Met le curseur sur le champ "Produit"
    DoCmd.GoToControl "RéfProduit"
    ' Cache le champ "code client"
    Forms!Facture![Client sur facture].Visible = False
    ' Ferme le formulaire d'ouverture facture "sélection client"
    DoCmd.Close acForm, "Sélection Client"
    DoCmd.Echo True, ""
    DoCmd.Hourglass False
 
    ' Si ouverture par le forcage d'un nouveau client
 Dim nouveauclient As Boolean
   If nouveauclient = True Then
    ' Accède au controle "société"
    DoCmd.GoToControl "nomSociété"
    ' réinitialise la variable "nouveauclient"
    nouveauclient = False
 
  Else
    End If
 
End Sub
 
Private Sub Liste_client_NotInList(NewData As String, Response As Integer)
 
' Ouvre la bddg afin de proposer l'entrée d'un nouveau client dans la table clientèle
    If MsgBox("    Le client que vous avez inscrit n'existe pas dans votre base." & Chr(13) & Chr(13) _
         & "Voulez-vous ajouter ' " & NewData & " ' à la liste de vos clients ?", _
                       vbYesNo + vbQuestion + vbDefaultButton2, "Ajout ?") = vbYes Then
 
        DoCmd.RunSQL "INSERT INTO clientèle ( société ) SELECT """ & NewData & """;"
        Response = acDataErrAdded
 
     ' mémorise l'opération pour positionner le curseur sur le champ "client/ nomSociété" à l'ouverture de la facture
        Dim nouveauclient As Boolean
        nouveauclient = True
 
' Si plutôt erreur de saisie
    Else
        Response = acDataErrContinue
        Liste_client.Undo
 
    End If
 
End Sub