select case

F

Fabien

Guest
bonjour le forum
qui vousdrais bien m'expliquer la conception et le fonctionnement de select case
en vous en remerciant
 

Abel

XLDnaute Accro
Bonjour Fabien,

Voici ce que donne l'aide d'Excel.

Exécute un des blocs d'instructions indiqués, selon la valeur d'une expression.

Syntaxe

Select Case testexpression
[Case expressionlist-n
[statements-n]] ...
[Case Else
[elsestatements]]

End Select

La syntaxe de l'instruction Select Case comprend les éléments suivants :

Élément Description
testexpression Toute expression numérique ou expression de chaîne.
expressionlist-n Si une instruction Case apparaît. Liste délimitée dont les éléments peuvent prendre l'une des formes suivantes : expression, expression To expression, Is comparisonoperator expression. Le mot clé To indique une plage de valeurs. Si vous utilisez To, la valeur la plus petite doit figurer avant To. Utilisez le mot clé Is avec les opérateurs de comparaison (sauf Is et Like) pour indiquer une plage de valeurs. S'il n'est pas indiqué, le mot clé Is est inséré automatiquement.
statements-n Facultatif. Une ou plusieurs instructions exécutées si testexpression correspond à l'un des éléments de expressionlist-n.
elsestatements Facultatif. Une ou plusieurs instructions exécutées si testexpression ne correspond à aucun élément de la clause Case.



Remarques

Si testexpression correspond à un élément de la liste expressionlist associé à une clause Case, le bloc d'instructions qui suit cette clause est exécuté jusqu'à la clause Case suivante ou jusqu'à End Select, dans le cas de la dernière clause. Le contrôle passe ensuite à l'instruction qui suit End Select. Si expressiontest correspond à une expression de la liste expressionlist dans plusieurs clauses Case, seules les instructions qui suivent la première correspondance sont exécutées.

La clause Case Else permet d'indiquer que elsestatements doit être exécutée si testexpression ne correspond à aucune autre clause Case. Bien que cela ne soit pas indispensable, la présence d'une instruction Case Else dans votre bloc Select Case peut être utile lorsque testexpression prend des valeurs inattendues. S'il n'y a pas d'instruction Case Else et si aucune des expressions des clauses Case ne correspond à testexpression, l'exécution du programme se poursuit à partir de l'instruction qui suit End Select.

Vous pouvez utiliser plusieurs expressions ou plages dans chaque clause Case. En voici un exemple :

Case 1 To 4, 7 To 9, 11, 13, Is > MaxNumber

Note L'opérateur de comparaison Is ne joue pas le même rôle que le mot clé Is utilisé dans l'instruction Select Case.

Vous pouvez aussi indiquer des plages et des expressions multiples pour des chaînes de caractères. Dans l'exemple suivant, Case correspond aux chaînes de caractères qui sont absolument identiques à tout, aux chaînes comprises entre noix et soupe dans l'ordre alphabétique, ainsi qu'à la valeur en cours de TestItem :

Case 'tout', 'noix' To 'soupe', TestItem

Les instructions Select Case peuvent être imbriquées. À chaque instruction Select Case doit correspondre une instructions End Select.


Abel.
 

Dan

XLDnaute Barbatruc
Bonjour,

Une première chose serait que tu consultes l'aide VBA --> ALT+F11 puis appuies sur F1.

Sinon voici un résumé par un exemple :

Code:
Select Case Range('A1') 'action à partir de la cellule A1
Case 1 'Cas numéro 1
Range('B2') = 2 'la cellule B2 prend la valeur 2
Case 2 'Cas numéro 2
Range('B2') = 3 'la cellule B2 prend la valeur 3
End select

Essaie ce code en le plaçant en VBA dans un fichier et attribue des valeur à A1 pour voir ce qui se passe.


;)
 
F

Fabien

Guest
Bonjour,

Où est l'erreur ?

Voici ce que j'essaie de faire, sachant que la macro que j'essaie de faire concerne la feuille acive.
Ou B1 contient la formule donnant la date du jour.
Le but est de sélectionner de B37 à H37, puis de B53 à H53 etc...
la date du jour, de la comparer à B1 et si Ok appeler déclenchement d'une autre macro.

Sub Public_SélectionJourActif()
Select Case Range('B37')
Case 1 = ('B1')
Call ActiveSemUn
End Select
Select Case Range('C37')
Case 1 = B1
Call ActiveSemDeux
End Select
Select Case Range('D37')
Case 1 = B1
Call ActiveSemTrois
End Select
Case Else
Exit Sub
End Sub

Je vous remercie pour votre aide
 
E

ernest

Guest
salut

comme ca :

Sub Public_SélectionJourActif()
Select Case Range('B1')
Case Range('B37'): Call ActiveSemUn
Case Range('c37'): Call ActiveSemDeux
Case Range('D37'): Call ActiveSemTrois
Case Else: Exit Sub
End Select

End Sub

tu travaillais à l'envers.

bye
 

Dan

XLDnaute Barbatruc
re,

Modifie ta macro comme suit :

Code:
Sub Public_SelectionJourActif() 
Select Case Range('B37') 
Case is = Range('B1') 
Call ActiveSemUn 
End Select 
Select Case Range('C37') 
Case is = Range('B1')
Call ActiveSemDeux 
End Select 
Select Case Range('D37') 
Case is = Range('B1')
Call ActiveSemTrois 
End Select  
end sub

NB : évite aussi les accents dans le nom de tes procedures.
Bon travail

;)
 

Discussions similaires

Statistiques des forums

Discussions
312 329
Messages
2 087 334
Membres
103 519
dernier inscrit
Thomas_grc11