VBA Select Case et opérateur Like

Septembre 2016



Introduction

Si vous êtes arrivés ici, vous le savez par vos tests, Select Case n'admet pas l'opérateur Like. Il existe pas mal de méthodes pour contourner ce souci, notamment avec des If ElseIf etc...
Cependant, celle proposée ici devrait permettre de solutionner quelques cas.

Select Case & Like le test

Essayez le code suivant, pour vérifier l'affirmation de l'introduction.

Sub Select_Case_Like()
mot = "KAKAO"
Select Case mot
    Case mot Like "*K*K*"
        MsgBox "bon"
    Case Else
        MsgBox "pas bon"
End Select
End Sub


Quelque soit le contenu de la variable mot, il renverra toujours "pas bon"...
Select Case n'aime donc pas Like.

testexpression : True

La solution, afin d'utiliser l'opérateur Like dans un Select Case, est d'ajouter l'expression True.

Voici un code exemple :

Sub Select_Case_True_Like()
mot = "KAO"
Select Case True
    Case mot Like "*K*K*"
        MsgBox "bon"
    Case Else
        MsgBox "pas bon"
End Select
mot = "KAKAO"
Select Case True
    Case mot Like "*K*K*"
        MsgBox "bon"
    Case Else
        MsgBox "pas bon"
End Select
End Sub

Une fonction Boolean fort utile

La fonction

Function Case_True_Like(mot As String) As Boolean
Select Case True
    Case mot Like "*K*K*"
        Case_True_Like = True
    Case Else
        Case_True_Like = False
End Select
End Function

L'appel de cette fonction

Sub Test()
MsgBox Case_True_Like("KAKAO")
End Sub

Conclusion

Cet article ne propose qu'une alternative à If ElseIf.
Elle est utile dans les cas ou, préférant Select Case, il est indispensable de tester avec Like...

A voir également :

Ce document intitulé «  VBA Select Case et opérateur Like  » issu de CommentCaMarche (www.commentcamarche.net) est mis à disposition sous les termes de la licence Creative Commons. Vous pouvez copier, modifier des copies de cette page, dans les conditions fixées par la licence, tant que cette note apparaît clairement.