IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Macros et VBA Excel Discussion :

Question optionnal dans les paramètres d'une fonction


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Décembre 2009
    Messages
    193
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2009
    Messages : 193
    Par défaut Question optionnal dans les paramètres d'une fonction
    Bonjour,

    Je suis débutant en VBA et je souhaite savoir comment régler le problème.
    J'ai deux fonction
    function1(par1 as Worksheet,par2 as Integer)
    function2(par1 as Worksheet,par3 as Integer)
    La différence entre function1 et function2 ne réside qu'autour d'une seule instruction
    La bonne idée est de faire
    function3(par1 as Worksheet, optionnal par2 as Integer, optionnal par3 as Integer)

    Mais comment faire pour que l'on puisse uniquement faire l'appel:
    function3(par1,par2)
    ou function3(par1,par3)
    et non pas que que function3(par1)

    Merci d'avance

  2. #2
    Expert éminent Avatar de mercatog
    Homme Profil pro
    Inscrit en
    Juillet 2008
    Messages
    9 435
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Autre

    Informations forums :
    Inscription : Juillet 2008
    Messages : 9 435

  3. #3
    Membre confirmé
    Profil pro
    Inscrit en
    Décembre 2009
    Messages
    193
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2009
    Messages : 193
    Par défaut
    Oui mais on a le droit de faire function3(par1) et moi je n'ai pas envie qu'on est le droit...

  4. #4
    Expert éminent Avatar de mercatog
    Homme Profil pro
    Inscrit en
    Juillet 2008
    Messages
    9 435
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Autre

    Informations forums :
    Inscription : Juillet 2008
    Messages : 9 435
    Par défaut
    Et si c'est la cas Function3 retournera quoi?

    Exemple
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    Function Function3(ByVal Par1 As Integer, Optional Par2 As Variant, Optional Par3 As Variant)
    Dim S As Variant
     
    If IsMissing(Par2) And IsMissing(Par3) Then
        S = "Parameter missing"
    ElseIf IsMissing(Par2) Then
        S = Par1 * Par3
    ElseIf IsMissing(Par3) Then
        S = Par1 + Par2
    End If
    Function3 = S
    End Function
    PS: pour utiliser IsMissing, les paramètres optionnels doivent être un variant

  5. #5
    Membre confirmé
    Profil pro
    Inscrit en
    Décembre 2009
    Messages
    193
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2009
    Messages : 193
    Par défaut
    Function3 retourne un variant...

    Mais n'est ce pas possible de garder par2 et par 3 en integer?

  6. #6
    Expert éminent Avatar de mercatog
    Homme Profil pro
    Inscrit en
    Juillet 2008
    Messages
    9 435
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Autre

    Informations forums :
    Inscription : Juillet 2008
    Messages : 9 435
    Par défaut
    Pour cela, il faudra donner une valeur par défaut Toujours le même exemple
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    Function Function3(ByVal Par1 As Integer, Optional Par2 As Integer = -1, Optional Par3 As Integer = -1)
    Dim S As Variant
     
    If Par2 = -1 And Par3 = -1 Then
        S = "Erreur"
    ElseIf Par2 = -1 Then
        S = Par1 * Par3
    ElseIf Par3 = -1 Then
        S = Par1 + Par2
    End If
    Function3 = S
    End Function

Discussions similaires

  1. Struct dans les paramètres d'une fonction
    Par qdaemon_fr dans le forum C
    Réponses: 3
    Dernier message: 20/04/2011, 14h41
  2. [XL-2007] Insérer une variable dans les paramètre d'un fonction
    Par anolo40 dans le forum Macros et VBA Excel
    Réponses: 3
    Dernier message: 17/01/2011, 21h08
  3. ArrayList initialisation dans les paramètres d'une fonction
    Par Mageni dans le forum Collection et Stream
    Réponses: 7
    Dernier message: 15/02/2010, 10h54
  4. Réponses: 2
    Dernier message: 29/08/2007, 19h43
  5. [PHP 4.4.2] Récupérer les paramètres d'une fonction
    Par stailer dans le forum Langage
    Réponses: 5
    Dernier message: 07/04/2006, 21h41

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo