SELECT CASE
Le sommaire :
Cette instruction permet
de choisir un traitement selon la valeur d’une variable.
La syntaxe :
Select Case MaVariable
Case Valeur1
Traitement1
Case Valeur2
Traitement2
Case Valeur3 To Valeur4
Traitement3
Case Valeur5, Valeur6,
Valeur7
Traitement4
Case Else
Traitement5
End Select
MaVariable est la variable
dont la valeur va déterminer le traitement dans Select Case.
A l’intérieur de Select
Case, nous effectuerons les comparaisons de MaVariable à des valeurs par
l’intermédiaire de Case.
A chaque fois que vous
souhaitez réaliser une opération de comparaison, commencez la ligne par Case,
puis écrivez l’expression de comparaison.
L’expression peut être une
valeur, dans quel cas vous écrivez directement la valeur.
L’expression peut être une
suite de valeurs, dans quel cas vous séparez chaque valeur par une virgule.
L’expression peut être un intervalle
entre deux valeurs, dans quel cas vous séparez ces deux valeurs par To.
Vous pouvez également
introduire les signes inférieur et supérieur à l’intérieures des expressions.
Case Else dirige vers le
traitement par défaut si aucune expression Case n'est vraie.
On pourrait comparer les
case à des Si, et le Case Else à Sinon.
Nous allons reprendre
l’exemple du chapitre 6,
« l’embranchement conditionnel if ».
Seulement, au moment de
l’exécution de la macro FiltrerNoms, si l’utilisateur n’est pas dans la bonne
feuille de calculs, par exemple la feuille intitulée « MaFeuille »,
nous allons lui proposer de quitter la feuille active pour atteindre la feuille
intitulée MaFeuille.
La question lui sera posée
dans une boîte de dialogue de type msgbox, la réponse sera affectée dans la
variable Reponse.
Le traitement de la réponse
sera réalisé par un select Case…
S’il accepte en validant
le bouton « Oui », la feuille MaFeuille sera activée et la macro
réexécutée.
S’il refuse, nous lui
afficherons un message de désolation…
Remarque : Le fait de réexécuter une
macro à partir d’elle-même est appelé la récursivité.
Voici maintenant le code
VISUAL BASIC de la macro FiltrerNoms :
Sub FiltrerNoms()
'
' FiltrerNoms Macro
' Macro enregistrée le
04/02/2008 par BOULANGER
'
' Touche de raccourci du
clavier: Ctrl+y
'
Application.Goto
Reference:="R1C1"
If ActiveCell.Value = "NOMS" Then
Critere = InputBox("Saisissez les
premières lettres du nom")
Critere = "=" + Critere +
"*"
Selection.AutoFilter Field:=1,
Criteria1:=Critere, Operator:=xlAnd
Else
Reponse = MsgBox("Erreur", vbYesNo,
",Attention, vous n'êtes pas dans la bonne feuille, désirez-vous quitter
la feuille actuellement affichée ?")
Select Case Reponse
Case 6
Application.Goto
Reference:="MaFeuille!RC"
FiltrerNoms
Case Else
Reponse =
MsgBox("Avertissement", vbOKOnly, "Désolé, votre macro va être
arrêtée...")
End Select
End If
End Sub
Remarque :
Dans le cadre de
l’utilisation de la boîte de message msgbox avec les bouton « Oui »
et « non », les valeurs retournées sont 6 pour « Oui » et 7
pour « non ».
Philippe BOULANGER