Molenn
Messages postés797Date d'inscriptionmardi 7 juin 2005StatutMembreDernière intervention23 février 2011
-
9 févr. 2007 à 13:20
Molenn
Messages postés797Date d'inscriptionmardi 7 juin 2005StatutMembreDernière intervention23 février 2011
-
12 févr. 2007 à 11:30
Bonjour,
Ca fait un petit moment que je fouille le net à la recherche d'un tutorial ou au moins d'une explication, et je n'ai rien trouvé de très probant, alors, je tente ma chance :
Je sais créer mes propres fonctions en VB/VBA, avec des arguments, etc ... Pas de soucis.
Ce que je voudrais maintenant faire, c'est définir des constantes pour cette fonction.
Un exemple sera sûrement plus parlant. Prenons la fonction InStr.
Elle s'écrit donc comme suit :
InStr([start], [string1],[ string2], [compare as vbCompareMethod = vbBinaryCompare])
Ce que je voudrais savoir faire dans ma fonction, c'est l'équivalent de l'argument compare.
Comme dois-je écrire mon code, par exemple dans une fonction qui nécessiterait d'indiquer un sens, pour avoir :
CalculSens (Longueur, sens as vbSens = vbGauche)
avec une liste de choix pour vbSens qui soit vbGauche, vbDroite, vbHaut, vbBas ?
J'espère avoir été assez clair dans ce que je souhaite obtenir.
D'avance merci.
Molenn
A voir également:
Création de constantes pour les arguments d'une fonction
Molenn
Messages postés797Date d'inscriptionmardi 7 juin 2005StatutMembreDernière intervention23 février 20117 9 févr. 2007 à 13:43
Han, ça va trop vite, j'ai à peine eu le temps de voir la première et d'aller tester tout de suite que déjà, ça fuse
Donc, effectivement, ça marche bien, je ne connaissais pas les Enumérations.
Mais j'ai encore un petit souci, lorsque j'essaye d'affecter une valeur par défaut.
J'ai mon enumération comme suit :
Public Enum eSens
Gauche = 1
Droite = 2
End Enum
et mon appel de fonction :
Public Function CalculSens(Sens as eSens = Gauche)
Quand je valide, ça me fait une erreur de compilation sur le signe "=", avec "Attendu : séparateur de liste ou )"
Enfin, le plus important est déjà présent, cool.
Et je vais voir dans les posts suivant si je ne trouve pas ce qui pourrait répondre à ce dernier petit souci.
Molenn
Messages postés797Date d'inscriptionmardi 7 juin 2005StatutMembreDernière intervention23 février 20117 9 févr. 2007 à 14:01
Ah ok ok, et comme elle est obligatoire, c'est donc normal ^^
Il me reste une dernière question, puisque vous avez l'air de maitriser les énumérations comme personnes :
Ca, c'est bon :
Public Enum eSens
Gauche = 1
Droite = 2
End Enum
Je voudrais y coller du texte qui me servirait après dans ma fonction. A priori, ça ne fonctionne pas :
Public Enum eSens
Gauche = "Left"
Droite = "Right"
End Enum
Et quand je fais
Public Enum eSens
Gauche
Droite
End Enum
lorsque je tente d'appeler la valeur, ça me remonte 0 au lieu du nom.
Je peux bien entendu traiter ce cas avec un select case directement dans la fonction que je crée, mais je me demandais si je pouvais faire plus court.
Molenn
Messages postés797Date d'inscriptionmardi 7 juin 2005StatutMembreDernière intervention23 février 20117 12 févr. 2007 à 11:30
Oh, je n'y avais pas pensé du tout (c'est vrai que Array, c'est une fonction qui m'est complètement inconnue aussi )
L'utilité de la chose, c'est en fait par ex, qu'en fonction de l'option choisie, ça ne va pas m'ouvrir un même fichier Excel. Et je me disais que si je pouvais affecter du texte, il me suffisait de faire Workbooks.open("C:\Temp" & Option choisie) pour ouvrir le bon fichier Excel.
Mais c'est pas grave, j'ai collé un Select Case et ça marche tout pareil. C'était juste pour économiser quelques lignes de code.
Merci tout de même, j'essayerai de penser à Array une prochaine fois.