Vba Appel de fonction avec tableau
batisto
-
pilas31 Messages postés 1878 Statut Contributeur -
pilas31 Messages postés 1878 Statut Contributeur -
Bonjour,
J ai ecrit une fonction find_lowest, mais quand je l appelle, ca ne marche que si je met un "range" dedans, sinon ca m affiche : #valeur dans la case excel.
Voici apres le code que j ai ecrit. J ai essaye de declarer un tableau dans la fonction : Function find_lowest(vecteur_prix() As Double), mais ca ne marche pas non plus et dans ce cas des la declaration.
Merci pour votre aide,
Function find_lowest(vecteur_prix As Variant)
min = vecteur_prix(1)
index = 1
nb1 = vecteur_prix.Columns().Count
For i = 1 To nb1
If vecteur_prix(i) < min Then
min = vecteur_prix(i)
index = i
End If
Next i
find_lowest = index
End Function
Function test1()
ReDim vecteur3(2) As Variant
vecteur3(1) = 1
vecteur3(2) = 0.5
index1 = find_lowest(vecteur3)
test1 = index1
End Function
J ai ecrit une fonction find_lowest, mais quand je l appelle, ca ne marche que si je met un "range" dedans, sinon ca m affiche : #valeur dans la case excel.
Voici apres le code que j ai ecrit. J ai essaye de declarer un tableau dans la fonction : Function find_lowest(vecteur_prix() As Double), mais ca ne marche pas non plus et dans ce cas des la declaration.
Merci pour votre aide,
Function find_lowest(vecteur_prix As Variant)
min = vecteur_prix(1)
index = 1
nb1 = vecteur_prix.Columns().Count
For i = 1 To nb1
If vecteur_prix(i) < min Then
min = vecteur_prix(i)
index = i
End If
Next i
find_lowest = index
End Function
Function test1()
ReDim vecteur3(2) As Variant
vecteur3(1) = 1
vecteur3(2) = 0.5
index1 = find_lowest(vecteur3)
test1 = index1
End Function
A voir également:
- Vba Appel de fonction avec tableau
- Tableau word - Guide
- Fonction si et - Guide
- Nommez une application d'appel vidéo ou de visioconférence - Guide
- Tableau ascii - Guide
- Trier un tableau excel - Guide
3 réponses
Bonjour
Je pense qu'il faut écrire comme cela :
C'est la fonction Ubound() qui donne la taille du tableau.
A+
Je pense qu'il faut écrire comme cela :
Function find_lowest(vecteur_prix() As Variant) Min = vecteur_prix(1) Index = 1 nb1 = UBound(vecteur_prix) For i = 1 To nb1 If vecteur_prix(i) < Min Then Min = vecteur_prix(i) Index = i End If Next i find_lowest = Index End Function
C'est la fonction Ubound() qui donne la taille du tableau.
A+
Merci Pilas pour ta réponse.
J ai essayé ta proposition, mais ca ne marche pas. J avais essaye quelque chose de semblable, mais j avais le meme probleme : vu que l argument est un variant, il n y pas besoin de preciser que c est un tableau avec les ().
Pour le ubound(), il ne marche pas sans doute egalement parce que c est un variant.
Et si je mets le code suivant, la fonction find_lowest ne marche pas :
Function find_lowest(vecteur_prix() As Double)
min = vecteur_prix(1)
index = 1
nb1 = UBound(vecteur_prix)
For i = 1 To nb1
If vecteur_prix(i) < min Then
min = vecteur_prix(i)
index = i
End If
Next i
find_lowest = index
End Function
J ai essayé ta proposition, mais ca ne marche pas. J avais essaye quelque chose de semblable, mais j avais le meme probleme : vu que l argument est un variant, il n y pas besoin de preciser que c est un tableau avec les ().
Pour le ubound(), il ne marche pas sans doute egalement parce que c est un variant.
Et si je mets le code suivant, la fonction find_lowest ne marche pas :
Function find_lowest(vecteur_prix() As Double)
min = vecteur_prix(1)
index = 1
nb1 = UBound(vecteur_prix)
For i = 1 To nb1
If vecteur_prix(i) < min Then
min = vecteur_prix(i)
index = i
End If
Next i
find_lowest = index
End Function
Bonjour,
C'est curieux car chez moi ça fonctionne.
Mais il faut bien sur que les types soit compatibles. C'est à dire que vecteur_prix et vecteur3 sont tous les deux en variant ou tous les deux en double.
Dans les deux cas ça marche chez moi avec l'exemple donné. Je suis en Excel 2003 mais je ne vois pas ce que ça change pour d'autres versions d'Excel
A+
C'est curieux car chez moi ça fonctionne.
Mais il faut bien sur que les types soit compatibles. C'est à dire que vecteur_prix et vecteur3 sont tous les deux en variant ou tous les deux en double.
Dans les deux cas ça marche chez moi avec l'exemple donné. Je suis en Excel 2003 mais je ne vois pas ce que ça change pour d'autres versions d'Excel
A+