'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
Vous n'êtes pas encore membre ?
inscrivez-vous, c'est gratuit et ça prend moins d'une minute !
Les membres obtiennent plus de réponses que les utilisateurs anonymes.
Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.
Le fait d'être membre vous permet d'avoir des options supplémentaires.