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

VB 6 et antérieur Discussion :

Souci avec "Argument not optional"


Sujet :

VB 6 et antérieur

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé
    Inscrit en
    Juillet 2004
    Messages
    218
    Détails du profil
    Informations forums :
    Inscription : Juillet 2004
    Messages : 218
    Par défaut Souci avec "Argument not optional"
    Bonjour,

    J'ai déclaré une fonction comme ceci
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    Private Function getValueFromMail(col As Collection)
     
        For Each tag In col
            Debug.Print tag
        Next tag
     
    End Function
    Et lorsque je l'appele via le code suivant (labelFR et labelDE sont des collections définies avant dans le code et garnies):
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
         Dim returnData As New Collection
     
         If mailLang = "FR" Then
              returnData = getValueFromMail(labelFR)
         Else
              returnData = getValueFromMail(labelDE)
         End If
    Et bien j'ai une erreur "Argument not optional", pourquoi ???

    D'avance merci pour votre aide.

  2. #2
    Membre émérite
    Inscrit en
    Décembre 2007
    Messages
    512
    Détails du profil
    Informations forums :
    Inscription : Décembre 2007
    Messages : 512
    Par défaut
    Bonjour,

    Et lorsque je l'appele via le code suivant (labelFR et labelDE sont des collections définies avant dans le code et garnies):
    Définies où? A quel endroit dans le code?

  3. #3
    Membre éclairé
    Inscrit en
    Juillet 2004
    Messages
    218
    Détails du profil
    Informations forums :
    Inscription : Juillet 2004
    Messages : 218
    Par défaut
    Les collections sont définies en global et les initialisations sont faites dans le main de l'application.

  4. #4
    Membre Expert
    Avatar de pc75
    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    3 662
    Détails du profil
    Informations personnelles :
    Âge : 70
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Septembre 2004
    Messages : 3 662
    Par défaut
    Bonjour,

    Ca n'a peut-être rien à voir, mais j'éviterai de nommer des variables "col" et "tag".

  5. #5
    Rédacteur
    Avatar de DarkVader
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mai 2002
    Messages
    2 131
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2002
    Messages : 2 131
    Par défaut
    Citation Envoyé par stujava Voir le message
    Bonjour,

    J'ai déclaré une fonction comme ceci
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    Private Function getValueFromMail(col As Collection)
     
        For Each tag In col
            Debug.Print tag
        Next tag
     
    End Function
    Et lorsque je l'appele via le code suivant (labelFR et labelDE sont des collections définies avant dans le code et garnies):
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
         Dim returnData As New Collection
     
         If mailLang = "FR" Then
              returnData = getValueFromMail(labelFR)
         Else
              returnData = getValueFromMail(labelDE)
         End If
    Et bien j'ai une erreur "Argument not optional", pourquoi ???

    D'avance merci pour votre aide.
    Telle que la function est définie, l'inverse serait plus logique

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
         If mailLang = "FR" Then
              labelFR= getValueFromMail(returnData)
         Else
              labelDE = getValueFromMail(returnData)
         End If
    (en supposant que la collection soit remplie)

  6. #6
    Expert confirmé
    Avatar de ProgElecT
    Homme Profil pro
    Retraité
    Inscrit en
    Décembre 2004
    Messages
    6 132
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 69
    Localisation : France, Haute Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Retraité
    Secteur : Communication - Médias

    Informations forums :
    Inscription : Décembre 2004
    Messages : 6 132
    Par défaut
    Salut

    Pour moi le fait de choisir une procédure Function est de pouvoir récupérer quelque chose par le nom de la dite fonction, sinon je choisie une procédure Sub.
    A un moment donné dans le code de la fonction, j’attribue le résultat recherché au nom de la fonction.
    Bref , pour le peu que j'ai compris du code mis pour que l'on t'aide, pour éliminer le problème
    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
    18
    19
    20
    Option Explicit
    '-----------------------------------------------------------------
    Private Function getValueFromMail(col As Collection) As Collection
    Dim Tag
        For Each Tag In col
            Debug.Print Tag
        Next Tag
    End Function
    '-----------------------------------------------------------------
    Private Sub Form_Load()
    Dim labelFR As New Collection, returnData As New Collection
    Dim MailLang As String
     
    MailLang = "FR"
    labelFR.Add "essais1": labelFR.Add "essais2"
     
    If MailLang = "FR" Then
         Set returnData = getValueFromMail(labelFR)
    End If
    End Sub
    Ligne 18, j'ai ajouté un Set
    Ligne 3, j'ai typé à la fonction As Collection.
    Bien sûr, rien n'est récupéré par la fonction et donc returnData reste non définie.
    :whistle:pourquoi pas, pour remercier, un :plusser: pour celui/ceux qui vous ont dépannés.
    saut de ligne
    OOOOOOOOO👉 → → Ma page perso sur DVP ← ← 👈

  7. #7
    Modérateur

    Homme Profil pro
    Inscrit en
    Janvier 2007
    Messages
    1 722
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Janvier 2007
    Messages : 1 722
    Par défaut
    Bonjour,

    Nous manquons d'information sur ce que tu souhaites faire.

    Mais
    Citation Envoyé par stujava Voir le message
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
         Dim returnData As New Collection
         ...
    le new laisse supposer que tu veux faire une copie d'une autre collection.

    Dans ce cas tu dois procéder ainsi.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
         Dim returnData As New Collection
     
         If mailLang = "FR" Then
              Call getValueFromMail(labelFR, returnData)
         Else
              Call getValueFromMail(labelDE, returnData)
         End If
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    Private Sub getValueFromMail(colSource As Collection, colDest As Collection)
         For Each element In colSource
            colDest.Add (element)
        Next element
    End Sub
    A+, Hervé.
    Traductions d'articles :
    La mémoire en .NET - Qu'est-ce qui va où ?
    Architecture DAL de haute performance et DTO ; Version C# : Partie 1,Partie 2,Partie 3 — Version VB.NET : Partie 1,Partie 2,Partie 3
    N'hésitez pas à consulter la FAQ VB.NET, le cours complet de Philippe Lasserre et tous les cours, articles et tutoriels.

Discussions similaires

  1. Réponses: 21
    Dernier message: 21/08/2014, 06h52
  2. [AC-2010] Erreur "Argument not optional"
    Par Tytelle dans le forum VBA Access
    Réponses: 2
    Dernier message: 26/03/2012, 15h51
  3. InsertLines : argument not optional
    Par Stutak dans le forum Macros et VBA Excel
    Réponses: 7
    Dernier message: 31/05/2011, 20h15
  4. [Tableaux] souci avec des simples quotes
    Par Jean Fi dans le forum Langage
    Réponses: 6
    Dernier message: 29/03/2006, 20h13

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