'REM rechercher un mot dans un tableau, renvoie l'index si trouvé, ou -1 si FAUX
'REM si tableau à 2 dimensions : rechercher dans la dim1 sur la ligne val1 de dim1,
'REM renvoie i si trouvé, -1 sinon et dans ce cas dim1 contient la 1ere position vide
'REM si val1 = -1 ou manquant : rechercher dans les 2 directions, la fonction renvoie i et val1 contiendra j
'REM renvoie i si trouvé, -1 sinon et dim1 contient j si trouvé
'REM s'arrete sur la 1ere valeur vide
Function InArray(mot as string, array() as string, optional dim1 as integer, optional val1 as integer) as Integer
On Error goto Err_InArray
dim i as integer, j as integer
If IsMissing(dim1) Then
dim1 = 1
For i = lbound(array, dim1) To ubound(array, dim1)
If mot = array(i) Then
InArray = i
Exit Function
ElseIf array(i) = "" Then
InArray = -1
Exit Function
End If
Next I
ElseIf dim1 <= 2 Then ' sait pas traiter les matrices 3 dimensions
If Not IsMissing(val1) or val1 >= 0 Then
REM rechercher dans l'autre dimension (dim2?) sur la ligne val1 de la dim1
For i = lbound(array, dim1) To ubound(array, dim1)
If dim1 = 1 Then ' val1 est sur la 2e dimension
If mot = array(i, val1) Then
InArray = i
Exit Function
ElseIf array(i, val1) = "" Then ' fin de recherche
InArray = -1
dim1 = i
Exit Function
End If
ElseIf dim1 = 2 Then
If mot = array(val1, i) Then
InArray = i
Exit Function
ElseIf array(val1, i) = "" Then ' fin de recherche
InArray = -1
dim1 = i
Exit Function
End If
End If
Next i
Else REM recherche dans les 2 dimensions
For i = lbound(array, 1) To ubound(array, 1)
For j = lbound(array, 2) To ubound(array, 2)
If mot = array(i, j) Then
InArray = i
dim1 = j ' retour 2e valeur dans le param d'entrée !
Exit Function
ElseIf array(val1, i) = "" Then ' pas dans cette ligne ?
If j = lbound(array, 2) Then ' début de ligne vide ?
InArray = -1
Exit Function ' fin de recherche, pas trouvé
Else
Exit For ' ligne suivante
End If
End If
Next j
Next i
End If
End If
InArray = -1
Exit Function
Err_InArray:
InArray = -1
Msgbox "Erreur " & err & " dans InArray (L." & erl & ") : " & error(err) & chr(13) & sValue & chr(13) & "*" & sTxt & "* "
End
End Function