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 :

Comment préciser ses paramètres en utilisant ParamArray


Sujet :

Macros et VBA Excel

  1. #1
    Expert éminent
    Comment préciser ses paramètres en utilisant ParamArray
    Bonjour à tous,

    Soit une fonction

    Code :Sélectionner tout -Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    Option Explicit
     
     
    Public Function masomme(lemultiple As Integer, ParamArray lalistenum() As Variant) As Long
     
    Dim s As Long
    Dim i As Byte
     
    s = 0
     
    For i = LBound(lalistenum) To UBound(lalistenum)
            s = s + lalistenum(i)
    Next i
     
    masomme = s * lemultiple
     
    End Function


    Ce code
    Code :Sélectionner tout -Visualiser dans une fenêtre à part
    Debug.Print masomme(10, 1, 2, 3)


    retourne la valeur attendue (60) sans problème.

    MAIS, comme je l'ai déjà exprimé maintes fois, notamment dans mon billet à ce sujet, ma préférence va à la précision des paramètres
    Or, cette ligne de code

    Code :Sélectionner tout -Visualiser dans une fenêtre à part
    Debug.Print masomme(lemultiple:=10, lalistenum:=Array(1, 2, 3))


    me retourne l'erreur
    l'argument dans ParamArray ne peut pas être nommé
    Je ne comprends pas.

    D'avance, merci pour vos lumières.

    Bien Cordialement.

    Marcel

    Dernier billet:
    Suppression des doublons d'un tableau structuré, gestion d'un array

    Pas de messagerie personnelle pour vos questions, s'il vous plaît. La réponse peut servir aux autres membres. Merci.


  2. #2
    Expert confirmé
    hello,

    ce n'est pas la peine d'insister car voici ce que dit Microsoft sur ce problème :

    ===================================================================================================

    Une procédure avec un argument ParamArray ne peut pas être appelée avec des arguments nommés


    • 08/06/2017
    • 2 minutes de lecture

    Tous les arguments d’un appel à une procédure défini à l’aide d’un argument ParamArray doivent être positionnels. Cause et solution de cette erreur :

    • Une syntaxe constituée d’arguments nommés apparaît dans un appel de procédure.
      La syntaxe appelant les arguments nommés ne permet pas d’appeler une procédure qui comporte un paramètre ParamArray. Pour fournir seulement certains éléments de l’argument ParamArray, utilisez des virgules comme espaces réservés pour les arguments que vous souhaitez omettre. Par exemple, dans l’appel suivant, si les arguments ParamArray commencent après Arg2, les valeurs sont passées uniquement pour les première, troisième et sixième valeurs de ParamArray:
      MySub Arg1, Arg2, 7,, 44,,,3
      Note Le ParamArray représente toujours les derniers éléments dans la liste d’arguments.

    Pour plus d’informations, sélectionnez l’élément en question et appuyez sur F1 (sur Windows) ou AIDE (sur Macintosh).
    Assistance et commentaires

    Avez-vous des questions ou des commentaires sur Office VBA ou sur cette documentation ? Consultez la rubrique concernant l’assistance pour Office VBA et l’envoi de commentaires afin d’obtenir des instructions pour recevoir une assistance et envoyer vos commentaires.
    ================================================================================================

    Ami calmant, J.P
    Jurassic computer : Sinclair ZX81 - Zilog Z80A à 3,25 MHz - RAM 1 Ko - ROM 8 Ko

  3. #3
    Expert éminent
    Salut JP,

    Ravi de te retrouver.

    Mon commentaire: "Nul!".

    Merci à toi (Je vais effectuer la mise à jour de mon billet)

    Bien Cordialement.

    Marcel

    Dernier billet:
    Suppression des doublons d'un tableau structuré, gestion d'un array

    Pas de messagerie personnelle pour vos questions, s'il vous plaît. La réponse peut servir aux autres membres. Merci.


###raw>template_hook.ano_emploi###