Bonjour ou Bonsoir le forum,
Je bataille depuis quelques temps avec une fonction personalisée que je parviens pas à faire aboutir ; celle-ci appelle une autre fonction censée lui retournée une valeur booléenne. Le pb c'est que la fonction en question ne retourne rien. Visiblement, il y a quelque chose qui m'échappe, d'autant que lorsque j'exécute le tout pas à pas c'est encore plus déroutant... Ci-après le code et ci-joint la partie du classeur posant pb (module 1). Merci pour toute suggestion :
[file name=Function_20050902002527.zip size=40375]http://www.excel-downloads.com/components/com_simpleboard/uploaded/files/Function_20050902002527.zip[/file]
Je bataille depuis quelques temps avec une fonction personalisée que je parviens pas à faire aboutir ; celle-ci appelle une autre fonction censée lui retournée une valeur booléenne. Le pb c'est que la fonction en question ne retourne rien. Visiblement, il y a quelque chose qui m'échappe, d'autant que lorsque j'exécute le tout pas à pas c'est encore plus déroutant... Ci-après le code et ci-joint la partie du classeur posant pb (module 1). Merci pour toute suggestion :
Code:
'Déclarations
________________________________________________
Public Const col_selection As Integer = 5 'pointeur sur options sélectionnées dans feuille <Plan>
Public Const col_prec As Integer = 3
dim fixes() As Integer
dim lignes() As Boolean
dim chemin(), longueur As Single
___________________________________________________
Function DUREE2(ParamArray ref_index() As Variant) As String
k = 0
'initialisation des chemins fixes et non fixes
For i = 0 To UBound(ref_index())
If Worksheets('Plan').Cells(ref_index(i), col_selection) = 'Vrai' Then
ReDim Preserve lignes(k)
ReDim Preserve chemin(k)
ReDim Preserve fixes(k)
'recherche des prédecesseurs de la tâche i
If Worksheets('Plan').Cells(ref_index(i), col_prec) = '' Then
'pas de prédécesseur -> chemin fixe
chemin(k) = 0
Else
'prédécesseur(s) -> chemin non fixe
chemin(k) = -1
End If
lignes(k) = ref_index(i)
fixes(k) = False
k = k + 1
End If
Next i
'CI-APRES L'APPEL DE FONCTION POSANT PB
r = Nonfixe(fixes())
'reste du traitement...
DUREE2 = r
End Function
______________________________________________________
Function Nonfixe(fixes() As Integer) As Boolean
Nonfixe = True
For i = 0 To UBound(fixes())
If fixes(i) = False Then
Nonfixe = False
End
End If
Next i
End Function