• Initiateur de la discussion Initiateur de la discussion phil
  • Date de début Date de début

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

P

phil

Guest
Bonjour,

Est-il possible dans VBA qu'une variable soit déterminée à partir d'une formule contenant if. Voici ce que j'ai écrit mais ça ne l'accepte pas. Quelle est la syntaxe exacte ?

tranche_age = if(age_enfant<=4,"00 à 04 ans",if(and age_enfant>=5,age_enfant<=10),"05 à 10 ans",if(and(age_enfant>=11,age_enfant<=14),"11 à 14 ans",if(and(age_enfant>=15,age_enfant<=16),"15 à 16 ans","Trop agé"))))


Je vous remercie pour votre aide

Phil
 
bonjour

pour répondre au pied de la lettre, oui c'est possible en utilisant l'instruction iif (un if avec deux i devant)

sinon il y a des moyens peut être plus propre de répondre à tes besoins notamment avec la méthode Select Case

bye
Stéphane
 
Merci mais je ne connais pas la méthode select case. J'ai regardé dans l'aide mais çà ne m'a pas beaucoup éclairé. Peux tu me donner un exemple avec mon cas sachant que age_enfant est entré par inputbox ?

Phil
 
Bonsoir Philippe,

STéphane doit faire un bon dodo là....

La méthode Select est là plus rapide à capter en VBA (enfin moi je trouve, mais souvent on cherche à faire trop compliqué et on passe à coté)

Tu n'as qu'à adapter çà ...

Sub LesCases()
Age = InputBox("Entrer l'age du gamin", "Case Age", "taper un chiffre...")
Select Case Age
Case 0 To 4
MsgBox "00 à 04 ans"
Case 5 To 10
MsgBox "05 à 10 ans"
Case 11 To 14
MsgBox "11 à 14 ans"
Case Else
MsgBox "Trop agé"
End Select
End Sub


Ce n'est pas compliqué... comme je disais !! (on pouvait laisser STéphane dormir tranquille)

Bon Week End
@+Thierry
 
Bonjour Phil,

Le iif avec deux "i" que STéphane t'a indiqué ne peut permettre qu'une seule condition sur deux possibilité "truepart" ou "falsepart".

Si tu n'avais qu'une tranche d'age à gérer ce serait applicable facilement avec ce genre de function (tirée de l'aide)
Function CheckIt(TestMe As Integer)
CheckIt = IIf(TestMe < 16, "Age OK", "Trop Agé")
End Function

Mais ici non ! ou alors faudrait faire une sorte de cascade de variable et ce ne serait franchement pas l'idéal.


Si tu veux vraiment des If (If you really want If !!! lol)
On peut aussi faire çà :

Sub AgeIf ()
age = InputBox("Entrer un age")
If age > 0 And age <= 4 Then Message = "00 à 04 ans"
If age > 4 And age <= 10 Then Message = "05 à 10 ans"
If age > 10 And age <= 14 Then Message = "11 à 14 ans"
If age > 14 Then Message = "Trop agé"
MsgBox Message
End Sub

Voilà comme çà on a fait le tour de la question... (mais je préfère les case select, comme STéphane)

Bon appétit
@+Thierry
 
- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD
Assurez vous de marquer un message comme solution pour une meilleure transparence.

Discussions similaires

Réponses
7
Affichages
880
Retour