Conditionnement d'un type de données d'un paramètre de fonction
Victor Porée
Messages postés
75
Date d'inscription
Statut
Membre
Dernière intervention
-
Victor Porée Messages postés 75 Date d'inscription Statut Membre Dernière intervention -
Victor Porée Messages postés 75 Date d'inscription Statut Membre Dernière intervention -
Bonjour à tous ! :)
Comment faire pour que — dans une procédure de fonction — un paramètre puisse définir le type de données d'un autre paramètre ?
Par exemple, si le premier argument de la fonction est 1, alors le deuxième argument est une cellule ; si 2, alors la valeur de la cellule, etc.
Comment faire pour que — dans une procédure de fonction — un paramètre puisse définir le type de données d'un autre paramètre ?
Par exemple, si le premier argument de la fonction est 1, alors le deuxième argument est une cellule ; si 2, alors la valeur de la cellule, etc.
A voir également:
- Conditionnement d'un type de données d'un paramètre de fonction
- Fuite données maif - Guide
- Fonction si et - Guide
- Remettre parametre usine pc - Guide
- Parametre dns - Guide
- Supprimer les données de navigation - Guide
3 réponses
Bonjour,
Tu peux utiliser le type Variant ainsi que le mot clé [ Optional ].
Exemple :
En utilisant le type [ Variant ], chaque variable peut contenir
n'importe quel [ Type ]. Et en utilisant le mot clé [ Optional ],
l'argument peut ne pas être présent.
Avec une combinaison des deux, tu devrais pouvoir obtenir
le comportement souhaité.
K
Tu peux utiliser le type Variant ainsi que le mot clé [ Optional ].
Exemple :
Public Sub EssaiParamatres(ByVal pArg1 As Variant, Optional ByVal pArg2 As Variant, Optional ByVal pArg3 As Variant)
Select Case pArg1
Case "1"
' Traiter le cas 1
Case "2"
' Traiter le cas 2
' etc...
End Select
End Sub
En utilisant le type [ Variant ], chaque variable peut contenir
n'importe quel [ Type ]. Et en utilisant le mot clé [ Optional ],
l'argument peut ne pas être présent.
Avec une combinaison des deux, tu devrais pouvoir obtenir
le comportement souhaité.
K
Bonjour,
Autre possibilité qui est moins utilisé et pourtant très efficace
est de créer des structures [ Type ].
Ainsi, tu peux n'avoir qu'un seule variable qui contiendra, tous les
types dont tu as besoin.
Ainsi, tu pourras avoir tous les types nécessaires
au déroulement des opérations à l'intérieur d'une seule
structure (d'une seule variable).
J'utilise beaucoup cette façon de faire avec des structures imbriquées.
K
Autre possibilité qui est moins utilisé et pourtant très efficace
est de créer des structures [ Type ].
Ainsi, tu peux n'avoir qu'un seule variable qui contiendra, tous les
types dont tu as besoin.
Option Explicit
Type TypBloc
Cible As Range
Valeur As String
Limite As Double
Compteur As Long
Identifiant As Integer
Val1 As Integer
Val2 As Long
Val3 As Double
Val4 As Variant
End Type
Type TypBoite
Bte1 As TypBloc
Bte2 As TypBloc
Bte3 As TypBloc
End Type
Sub Essai(ByRef LaVariable1 As TypBloc, ByRef LaVariable2 As TypBloc)
Select Case LaVariable1.Val1
Case 1
Set LaVariable2.Cible = LaVariable1.Cible
Case 2
LaVariable2.Valeur = LaVariable1.Valeur
Case 3
' etc...
End Select
End Sub
Ainsi, tu pourras avoir tous les types nécessaires
au déroulement des opérations à l'intérieur d'une seule
structure (d'une seule variable).
J'utilise beaucoup cette façon de faire avec des structures imbriquées.
K
Merci pour ta réponse ! :)
Je l'avais déjà testé, et ça fonctionne, effectivement. Mais l'inconvénient, c'est qu'il faut jouer avec les virgules (ou points-virgules) pour obtenir le bon type de données. Ce qui n'est finalement pas très pratique. L'intérêt serait d'avoir à la même position de paramètre, par exemple, tantôt un , tantôt un . Et puis j'ai pas mal de types à déclarer, alors les paramètres n'en finiraient pas.
Sinon, est-il possible de modifier le type de données d'une variable au cours de la procédure ?
Tout ceci n'est pas très clair !
« Sinon, est-il possible de modifier le type de données d'une variable au cours de la procédure ? » Non, en VBA, il n'est pas possible de modifier le type d'une variable.
Par contre il est possible de déterminer le type de variable contenue dans une variable déclarée en Variant à l'aide des fonctions VarType ou TypeName :
Si nécessaire, tu peux réaffecter ensuite cette variable à une autre variable de type correspondant (par exemple pour bénéficier de l'intellisense) :