Classe VBA CustomerOrderStatusEnum

rabihm Messages postés 15 Date d'inscription lundi 8 juin 2009 Statut Membre Dernière intervention 1 avril 2011 - 12 août 2009 à 15:54
rabihm Messages postés 15 Date d'inscription lundi 8 juin 2009 Statut Membre Dernière intervention 1 avril 2011 - 12 août 2009 à 18:08
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

cs_cyrilp Messages postés 140 Date d'inscription mercredi 4 octobre 2000 Statut Membre Dernière intervention 12 août 2009
12 août 2009 à 17:41
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.
0
rabihm Messages postés 15 Date d'inscription lundi 8 juin 2009 Statut Membre Dernière intervention 1 avril 2011
12 août 2009 à 18:08
Merci beaucoup pour ces explications.
Mais à quoi correspond New_CustomerOrder?
Comment on sait quelle constante lui associer? ainsi qu'aux autres énumérations?
0
Rejoignez-nous