Remplacer les Elseif par Select Case

Bonjour,

Qui peut que renseigner ?

Je désirais remplacer Else If, par Select case.

Je ne comprends la manière de procéder.

Je place en fichier attaché le fichier avec les ElseIf.

Merci de votre aide

mistral

Bonjour

Une solution parmi d'autres

Sub Prime() 'calcul de prime fonction de l'âge

Dim Prénom As String, Nom As String, Age As String, _
Grade As String, Prime As Double

Prénom = InputBox("Quel est votre Prénom :?")
Nom = InputBox("Quel est votre Nom :?")
Age = InputBox("Quel est votre âge :?")
Grade = UCase(InputBox("Quel est votre Grade :?"))

Select Case Grade
    Case "A"
        Select Case Age
            Case 18 To 30
                Prime = 123.67
            Case 31 To 55
                Prime = 144.78
            Case 56 To 64
                Prime = 196.15
            Case 65
                Prime = 235.56
        End Select
    Case "B"
        Select Case Age
            Case 18 To 30
                Prime = 146.12
            Case 31 To 55
                Prime = 184.33
            Case 56 To 64
                Prime = 184.06
            Case 65
                Prime = 267.22
        End Select
    Case "C"
        Select Case Age
            Case 18 To 30
                Prime = 202.38
            Case 31 To 55
                Prime = 256.89
            Case 56 To 64
                Prime = 314.37
            Case 65
                Prime = 434.09
        End Select

    Case "D"
        Select Case Age
            Case 18 To 30
                Prime = 304.03
            Case 31 To 55
                Prime = 412.23
            Case 56 To 64
                Prime = 545.17
            Case 65
                Prime = 645.51
        End Select
    End Select

MsgBox " Prénom et Nom : " & Prénom & "  " & Nom & _
 Chr(10) & " votre grade : " & Grade & _
  Chr(10) & " votre âge : " & Age & " ans" & _
  Chr(10) & " votre prime est de : " & Prime & " €"

 End Sub

Re,

Merci de votre réponse aussi rapide.

Non pas que je n'aie pas confiance, bien du contraire, j'essaie cela tout suite.

Grand merci.


Re,

Il me met erreur de syntaxe à la toute première ligne c-à-d case "A"

Ah, j'y croyais quand même.

Je fonctionne avec excel 2016

Que faire?

Merci

Re,

Voici l'aire vue avec l'erreur de syntaxe

Je n'y comprends rien, si cela peut vous aider !

Merci

Un mot clé ou argument est orthographié incorrectement.

Les mots clés et les noms d’arguments nommés doivent correspondre exactement à ceux indiqués dans leur spécification de syntaxe. Vérifiez l’Aide en ligne, puis corrigez l’orthographe.

La ponctuation est incorrecte. Par exemple, lorsque vous omettez des arguments facultatifs par position, vous devez insérer une virgule (,) comme espace réservé pour l’argument omis.

Une procédure n’est pas définie.

Vérifiez l’orthographe du nom de la procédure.

Vous avez essayé de spécifier à la fois Optional et ParamArray dans la même déclaration de procédure. Un argument ParamArray ne peut pas être Optional. Choisissez-en un et supprimez l’autre.

Vous avez essayé de définir une procédure événementielle avec un paramètre Optional ou ParamArray. Supprimez le mot clé Optional ou ParamArray de la spécification de paramètre.

Vous avez essayé d’utiliser un argument nommé dans une instruction RaiseEvent. Les événements ne prennent pas en charge les arguments nommés.

Pour plus d’informations, sélectionnez l’élément en question et appuyez sur F1 (sur Windows) ou AIDE (sur Macintosh).

Imprimer

Partage

Cette page

Bonjour mistral, bonjour le fil, bonjour le forum,

Le code de 78chris, qu'il faut saluer en passant, fonctionne à merveille.

Je suis aussi sous Excel 2016.

Tu as bien fait un copié/collé du code de 78chris ?

As-tu fait un pas-à-pas avec le touche F8 ?

Si ça ne fonctionne toujours pas, il faudrait que tu essaies le code dans un nouveau classeur.

Si ça ne fonctionne toujours pas, envoie-nous ce nouveau classeur avec le code qui bug.

Joseph

Bonjour à tous,

je confirme que la solution de 78Chris fonctionne.

N'y a t'il pas une erreur de prime (erreur de saisie) pour le grade B et la tranche d'âge [56,64] ?

Cdlt.

Merci de votre aide.

mais j'ai fais une capture de la nouvelle feuille en fichier attaché.

Regarder, par vous même

Grade = UCase(InputBox("Quel est votre Grade "))

Après cet instruction tous est rouge, logique ou pas?

Je ne sais pas corriger, car je ne sais pas quoi faire!!

Merci

sub prime

Re,

J'envoie le fichier complet.

Bonsoir,

Merci de joindre à nouveau le fichier avec le nouveau code que tu as copié.

Le fichier joint est juste au dessus de la réponse de Raja.

Je viens de l'ouvrir et ne fonctionne pas chez moi.

mistral

Idem ne fonctionne pas chez moi.

Par contre c'est fou si je copie exactement la même ligne à la main l'erreur se déplace à la ligne suivante

Re,

Recopie proprement avec l'outil "Tout sélectionner" copie le code colle en écrasant ton code. Il y a surement des caractères qu'on ne voit pas à cause d'une copie je ne sais comment tu as fait.

C'est justement la commande que j'ai adopté en dernier recourt.

Tout sélectionné.

Mais pas le bon résultat.

Bonjour,

si tu as du rouge alors que les lignes de code sont correctes c'est que tu as dû introduire des caractères indésirables invisibles (souvent un espace insécable).

Supprime tous les espace devant une ligne et tu la verra passer correcte.

Le plus simple est de refaire ton copié-collé depuis le code au-dessus.

eric

edit : ah, je n'avais pas vu la 2nde page.

Si ça persiste après un nouveau copié-collé supprime tous les espaces à la main

Mais personnellement j'aurais plutôt fait un tableau sur une feuille plus facile à mettre à jour et code beaucoup plus court qui pourrait s'auto-adapter à un changement de nombre de tranche d'ages ou de grades.

Bonjour Eriiic,,

OK, enfin cela fonctionne.

Merci pour l'aide que toi et tous les autres m'ont apporté.

Mais, je désirais savoir qu'elle est la fonction de la ligne "Grade UCase ( InpuBox ( "------ "))

c'est surtout UCase qui demande explication!!! de où, cela vient-il ?

Cela ne se trouve pas dans le manuel du parfait programmeur ( quel livre est le plus explicatif ?)

Si je peux encore ajouter une petite demande, comment écrire les phrases de Inputbox en caractère gras ?

Merci 1 milliard de fois à toute l'équipe

Bonjour,

tu fais F1 dessus, l'aide d'excel est très bien.

eric

Re,

J'ai compris. (c'est de transformer les minuscules en majuscules)

Car, si pas de majuscules, la réponse devient zéro.

Mais, comment écrire les MsgBox en caractères gras, c'est une de mes dernières demandent.

Merci.

Salut,

Je crois que l'on ne peut pas.

Cordialement,

Je confirme.

Il faudrait que tu fasses un userform avec un textbox dedans, ça serait bien compliquer pour pas grand chose.

Mais si tu veux en profiter pour en apprendre plus, tu as plein de tuto dessus. A commencer par 'cours vba' et 'formation pratique vba' dans les menus en haut de cette page.

eric

Re,

On laisse tomber, car cela était un exercice d'examen de juin.

Vu la complexité, on laisse.

je n'aie que rechercher la solution, alors que ce n'était pas du tout mon domaine.

C'est mon tout premier essai de programmation VBA.

Merci, à toutes les personnes qui ont répondu à mes questions qui pouvaient me rendre idiot à ce point.

Rechercher des sujets similaires à "remplacer elseif select case"