Vba: function: le premier argument ne prend pas de valeur

bast_dem Messages postés 4 Statut Membre -  
lermite222 Messages postés 9042 Statut Contributeur -
Bonjour à tous,

J'ai créé une fonction à 3 arguments; Lors de l'appel de la fonction dans une procédure, les arguments de ma fonction prennent les bonnes valeurs. Pour l'instant tout va bien. Puis "erreur d'execution 9: l'indice n'appartient pas à la selection": erreur indirect car en fait le premier argument de ma fonction ne prend pas la valeur demandé lors de l'appel !

Un exemple sera peut etre plus clair:

procedure ()
...
x=fonction(1,2,3)
...
fin de procedure

fonction(vide,2,3)
...

et en changant de place les arguments, c'est toujours le premier argument qui est vide !

merci de votre aide ;)

5 réponses

  1. lermite222 Messages postés 9042 Statut Contributeur 1 199
     
    Bonjour,
    Si tu mettais du code plus explicite ont pourrait peut-être comprendre.
    A+
    0
  2. bast_dem Messages postés 4 Statut Membre
     
    Sub testCompletBras()
    [...]
    TabRes_bras_VerifContr = VerificationContrainte(NbreNiv1, ligne1, colonne1)
    [...]
    End Sub

    Function VerificationContrainte(ByVal NbreNiv As Integer, ByVal ligne As Integer, ByVal colonne As Integer) as variant
    [...]
    End Function

    Ma procédure appelle la fonction puis erreur:

    Quand je mets le pointeur sur NbreNiv1 j'ai une valeur ( ex: 4 ), idem pour ligne1 et colonne1: normal
    ligne et colonne repennent les valeurs de ligne1 et colonne1: normal

    Mais NbreNiv ne reprend pas la valeur de NbreNiv1 !

    Quand je change l'ordre de mes arguments c'est toujours l'argument en première position qui ne récupère pas la valeur de l'argument de l'appel !

    Tout se passe dans le même module, les variables sont bien public.

    je sais pas si c'est plus clair !?

    Merci d'avance
    0
  3. lermite222 Messages postés 9042 Statut Contributeur 1 199
     
    Tu a fait copier/Coller pour le code ou tu l'a recopier manuellement ?
    Parce que normalement, si tu à fais copier/Coller le -> as variant devrait être As Variant, avec des majuscules.

    Si tout est bien comme tu dis, l'erreur est forcément ailleurs.
    Met un point d'arrêt sur la toute première ligne de code de la fonction.
    Et regarde ce que tu à dans NbreNiv

    Tu dis.. Erreur ? mais quel genre d'erreur ? ou ? et quel en est le libellé.
    0
  4. bast_dem Messages postés 4 Statut Membre
     
    Bonjour !

    NbreNiv est vide.
    C'est l' "erreur 9: l'indice n'appartient pas à la selection"
    Mais comme tu peux le voir dans le reste du code que je te mets en dessous, cette erreur apparait parce que NbreNiv est vide: quand je redimensionne mon tableau, j'ai une des dimensions = (NbreNiv -1) qui donne -1 vu que NbreDiv est vide ! L'erreur apparait à cause du -1, mais pas à cause du NbreDiv vide ...

    Je te met le reste du code, bon courage avec mes variables ...

    ___________________
    Public TabResBras() As Variant
    Public NbreNiv1 As Integer
    Public NbreNivSansEmbase As Integer
    Public Nbre_Bras As Integer

    ___________________
    Sub testCompletBras()

    Nbre_Bras = Sheets("bras").Range("A6").End(xlDown).Row - 5
    Nbre_colonne = Sheets("colonnes").Range("A6").End(xlDown).Row - 1
    tabres_bras1_verifContr = VerificationContrainte(NbreNiv1, ligLgBras1, colLgBras1)

    [...]

    End Sub

    ___________________
    Function VerificationContrainte(ByVal NbreNiv As Integer, ByVal ligLgBras As Integer, ByVal colLgBras As Integer) As Variant

    ContrainteElasticite = Sheets("cste").Cells(1, 2)
    Nbre_Bras = Sheets("bras").Range("A6").End(xlDown).Row - 5
    NbreNivSansEmbase = NbreNiv - 1
    ReDim TabResBras(NbreNivSansEmbase, Nbre_Bras)

    [...]
    End Function

    L'erreur apparait à cause du NbreNivSansEmbase=-1
    Si j'inverse NbreNiv avec ligLgBras, c'est ligLgBras qui sera vide ... Je comprends pas ^^

    Merci de votre aide!
    0
    1. bast_dem Messages postés 4 Statut Membre
       
      Après nouveaux tests, si j'inverse NbreNiv avec ligLgBras, ça marche ... J'ai du me planter quand j'ai tenté la première fois! Cela dit ça n'explique pas le problème !
      0
  5. Vous n’avez pas trouvé la réponse que vous recherchez ?

    Posez votre question
  6. lermite222 Messages postés 9042 Statut Contributeur 1 199
     
    Toujours difficile de cerner le prob avec des bribes de codes.
    Ceci dit, je ne vois pas où tu assigne une valeur à NbreNiv ?
    Si tu ne trouve pas tu pourrais mettre ton classeur à disposition ? éventuellement en MP ?
    A+
    0