Vba Appel de fonction avec tableau

Fermé
batisto - 26 avril 2011 à 19:12
pilas31 Messages postés 1825 Date d'inscription vendredi 5 septembre 2008 Statut Contributeur Dernière intervention 24 avril 2020 - 27 avril 2011 à 11:58
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
A voir également:

3 réponses

pilas31 Messages postés 1825 Date d'inscription vendredi 5 septembre 2008 Statut Contributeur Dernière intervention 24 avril 2020 643
27 avril 2011 à 00:21
Bonjour

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+
0
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
0
pilas31 Messages postés 1825 Date d'inscription vendredi 5 septembre 2008 Statut Contributeur Dernière intervention 24 avril 2020 643
27 avril 2011 à 11:58
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+
0