Classe VBA CustomerOrderStatusEnum

Signaler
Messages postés
15
Date d'inscription
lundi 8 juin 2009
Statut
Membre
Dernière intervention
1 avril 2011
-
rabihm
Messages postés
15
Date d'inscription
lundi 8 juin 2009
Statut
Membre
Dernière intervention
1 avril 2011
-
Bonjour,
J'ai trouvé cette classe dans un code :


Public Enum CustomerOrderStatusEnum
New_CustomerOrder = 0
Invoiced_CustomerOrder = 1
Shipped_CustomerOrder = 2
Closed_CustomerOrder = 3
End Enum


Puis après on déclare une instance de la classe et on lui donne une valeur :

Dim Status As CustomerOrderStatusEnum
Status = Nz(Me![Réf statut], New_CustomerOrder)

Je n'ai pas compris l'utilité de cette classe et son utilisation

Quelqu'un pourrait m'importer des explications svp?
Et pourrez vous me dire svp la fonction de cette ligne de code par exemple :

Me.cmdCreateInvoice.Enabled (Status New_CustomerOrder)

Je vous remercie d'avance

2 réponses

Messages postés
140
Date d'inscription
mercredi 4 octobre 2000
Statut
Membre
Dernière intervention
12 août 2009

Ce n'est absolument pas une classe mais un énumérateur. En résumé, un énumérateur te permet de nommer des valeurs pour que le développement soit plus parlant.

Le code suivant :
Dim Status As CumstomerOrderStatusEnum
Status = New_CustomerOrder
Status = Closed_CustomerOrder

Revient au même que :
Dim Status As Long
Status = 0
Status = 3

(En effet, dans la déclaration de l'énumérateur on a indiqué que Closed_CustomerOrder vaut 3 et New_CustomerOrder vaut 0).

Attention, d'ailleurs, il faut toujours prévoir une valeur d'énumération à 0 car par défaut, la variable déclarée comme énumérateur vaut 0.

Enfin concernant l'opération suivante :
Me.cmdCreateInvoice.Enabled (Status New_CustomerOrder)

Il s'agit d'un test simplifié.

Me.cmdCreateInvoice.enabled est une propriété qui attend Vrai ou Faux.
Ici on la valorise avec le résultat de l'opération (Status = New_CustomerOrder)

Si Status vaut New_CustomerOrder ou si Status vaut 0, donc Le résultat du test renverra vrai sinon faux.

C'est la même chose que d'écrire :

If Status = New_CustomerOrder Then
Me.cmdCreateInvoice.Enabled = True
Else
Me.cmdCreateInvoice.Enabled = False
Endif

Ou que d'écrire :
If Status = 0 Then
Me.cmdCreateInvoice.Enabled = True
Else
Me.cmdCreateInvoice.Enabled = False
Endif


--
Cyril P.
Messages postés
15
Date d'inscription
lundi 8 juin 2009
Statut
Membre
Dernière intervention
1 avril 2011

Merci beaucoup pour ces explications.
Mais à quoi correspond New_CustomerOrder?
Comment on sait quelle constante lui associer? ainsi qu'aux autres énumérations?