Mémoriser une variable pour utilisation dans plusieurs procédures
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:
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 |