VBA : IsIn() une fonction d’analyse de paramètres

Cette fonction détermine si la valeur (value) passée appartient à la liste (listvalue).

Public Function isIn(value As Variant, listValue As String, _
                     Optional sep As String = ";") As Boolean
'------------------------------------------------------------------------------------
' Procedure : isIn
' Author    : Fabrice CONSTANS (MVP)
' Date      : 10/08/2023
' Purpose   : renvoi VRAI si value transmise fait partie de la liste listValue
' Parameters: listValue est une liste d'éléments séparés par sep
'             value peut être un élément de la liste listValue
' Return    : Boolean
' Copyright : © L'intégralité du code ci-dessous est la propriété de son auteur (Author)
'             
'------------------------------------------------------------------------------------

    Dim tbl As Variant
    Dim i As Long
    If isNullOuVide(value) Then Exit Function

    tbl = Split(listValue, sep)
    For i = 0 To UBound(tbl)
        If tbl(i) = CStr(value) Then
            isIn = True
            Exit Function
        End If
    Next
End Function

2 paramètres obligatoires :

  • value pour la valeur à chercher
  • listvalue pour la liste des valeurs à explorer

1 paramètre facultatif :

  • sep pour le séparateur de la liste à explorer.

On l’utilise de cette manière avec le séparateur par défaut.

If isIn(1,"2;5;8;6") Then
   Msgbox "1 fait bien parti de la liste
Else
   Msgbox "1 ne fait pas parti de la liste"
Endif

Ou encore en précisant le séparateur.

mavar = 1
maliste = "1|2|3|8|94|100|15|50"

If isIn(mavar, maliste, "|") then
   Msgbox "1 fait bien parti de la liste
Else
   Msgbox "1 ne fait pas parti de la liste"
Endif  
 

Cette fonction peut être modifiée pour traiter le Null. J’ai également créé des variantes avec des Array et ParamArray pour le paramètre listvalue.

Vous utilisez une autre méthode ?
Vous souhaitez échanger sur ce sujet ?
N’hésitez pas à laisser un commentaire.

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *