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 -
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 ;)
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 ;)
A voir également:
- Vba: function: le premier argument ne prend pas de valeur
- Excel compter cellule couleur sans vba - Guide
- Vba ouvrir un fichier excel avec chemin ✓ - Forum VB / VBA
- Incompatibilité de type vba ✓ - Forum VB / VBA
- Erreur 13 incompatibilité de type VBA excel ✓ - Forum Excel
- Vba récupérer valeur cellule ✓ - Forum VB / VBA
5 réponses
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
[...]
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
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é.
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é.
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!
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!
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question