1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42
| Function Get_Row(ByVal Tableau As Variant, Texto, Optional Colonne As Long) As Long
'Détermine l'index d'un élément à partir de son contenu
'Retourne un Long représentant l'index de cet élément
'Retourne -1 si l'élément n'existe pas dans le tableau ou erreur (de colonne, de Tableau, etc).
Dim i As Long, strTemp As String
Get_Row = -1
Select Case Nb_Dimensions(Tableau)
Case 1
'===== le présent code, déposé par ucfoutu sur VBFrance, est la seule propriété de VBFrance
'=====VBFrance en autorise les libres copie et utilisation à la seule condition d'y laisser
'=====insérées les trois présentes lignes commentées --- ucfoutu ---
strTemp = Chr(0) & Join(Tableau, Chr(0)) & Chr(0)
i = InStr(strTemp, Chr(0) & Texto & Chr(0))
If i = 0 Then
Get_Row = -1
Else
strTemp = Mid(strTemp, 1, i)
Get_Row = UBound(Split(strTemp, Chr(0))) - 1
If Get_Row < 0 Then Get_Row = -1
End If
'======================
Case 2
'si paramètre colonne omis, on prends la première
If Colonne = 0 Then Colonne = LBound(Tableau, 2)
For i = LBound(Tableau, 1) To UBound(Tableau, 1)
If Tableau(i, Colonne) = Texto Then Get_Row = i: Exit For
Next i
End Select
End Function
Function Nb_Dimensions(Tableau As Variant) As Integer
'Retourne le nombre de dimensions d'une variable tableau
Dim d As Integer, t As Long
On Error GoTo Fin
Do
d = d + 1
t = UBound(Tableau, d)
Loop
Fin:
On Error GoTo 0
Nb_Dimensions = d - 1
End Function |
Partager