Ceci est une page optimisée pour les mobiles. Cliquez sur ce texte pour afficher la vraie page.

VBA : Select case et inputbox gestion des erreurs

1ma9

XLDnaute Nouveau
Bonjour à tous !!

J'ai un soucis sur ma macro, si vous pouvez m'aider cela me rendrait un grand service !

ma macro demande à l'utilisateur d'entrer un nom de groupe, cepedant avec le select case je ne sais pas traduire quand il rentre par exemple une lettre au lieu d'un chiffre de 1 à 9 ou une donnée qu'il ne doit pas rentrer . Quelqu'un saurait ?

Sub Groupe()

x = InputBox(" Tapez le numero de groupe(1 à 9) dont vous desirez avoir les statistiques " & Chr(13) + "(1) l'Ile de France" + Chr(13) + "(2) le Nord Pas de Calais" + Chr(13) + "(3) la Picardie" + Chr(13) + "(4)les Pays de la Loire" + Chr(13) + "(5) la Bourgogne" + Chr(13) + "(6) l'Aquitaine" + Chr(13) + "(7) la Champagne Ardenne" + Chr(13) + "(8) Le Midi Pyrénées" + Chr(13) + "(9) L'alsace" + Chr(13))

x = CInt(x)
Select Case x
Case 1: Call perso(1)
Case 2: Call perso(2)
Case 3: Call perso(3)
Case 4: Call perso(4)
Case 5: Call perso(5)
Case 6: Call perso(6)
Case 7: Call perso(7)
Case 8: Call perso(8)
Case 9: Call perso(9)
End Select
End Sub

Sub perso(j)
Sheets("feuil1").Activate
Set p1 = Sheets("feuil2")
p1.Cells(15, 1) = "Statistiques en fonction du Groupe"
f = 0
For i = 12 To 150
If Cells(i, 5) = "" Then Exit For
Call sommeligneperso(j, i, g)
f = g + f
Next
p1.Cells(17, 1) = "nombre de personnes dans le panel"
p1.Cells(17, 2) = f
p1.Cells(16, 1) = " VOICI VOS VALEURS POUR LE GROUPE "
p1.Cells(16, 2) = j
f = CStr(f)
MsgBox ("le nombre total de personnes que ce groupe a interrogé est :" + f)
For t = 5 To 14
Call sommecoloperso(j, t, x)
x = 100 * (x / f)
p1.Cells(t + 13, 2) = x
p1.Cells(t + 13, 1) = Cells(10, t)
p1.Cells(t + 13, 3) = "%"
Next
Sheets("feuil2").Activate
Range("A15:B15").Select
Selection.Font.Bold = True
End Sub
 

Modeste

XLDnaute Barbatruc
Re : VBA : Select case et inputbox gestion des erreurs

Bonjour 1ma9,

Tu aurais mieux fait de poster sur le forum Excel

Ceci dit, la syntaxe renseignée par l'aide est la suivante:
Select Case testexpression
[Case expressionlist-n
[statements-n]] ...
[Case Else
[elsestatements]]

End Select

Le Case Else ne répondrait-il pas à ta question?
Par ailleurs, un ComboBox en lieu et place d'une InputBox aurait permis de limiter les choix, me semble-t-il?
 

JNP

XLDnaute Barbatruc
Re : VBA : Select case et inputbox gestion des erreurs

Bonjour le fil ,
Pour complèter :
Utilise Application.InputBox au lieu de InputBox, cela te permetra de n'accepter que des nombres ...
Utilise plutôt les & que les + pour concaténer (ça t'évitera des surprises ...)
Pour aller à la ligne, un espace suivi d'un tiret bas permet de ne pas faire du code de 10 km ...
Le 1 par défaut permettra de montrer à l'utilisateur que tu attends un chiffre ...
Code:
Recommence:
x = Application.InputBox("Tapez le numero de groupe(1 à 9) dont vous desirez avoir " _
    & "les statistiques " & Chr(13) & "(1) l'Ile de France" & Chr(13) & _
    "(2) le Nord Pas de Calais" & Chr(13) & "(3) la Picardie" & Chr(13) & _
    "(4)les Pays de la Loire" & Chr(13) & "(5) la Bourgogne" & Chr(13) & _
    "(6) l'Aquitaine" & Chr(13) & "(7) la Champagne Ardenne" & Chr(13) & _
    "(8) Le Midi Pyrénées" & Chr(13) & "(9) L'alsace", "Choisissez le secteur :", 1, , , , , 1)
If x > 9 Or x < 1 Or Int(x) <> x Then
MsgBox "Vous devez saisir un chiffre de 1 à 9 !", vbCritical + vbOKOnly, "ATTENTION !"
GoTo Recommence
End If
Bonne journée
 

Discussions similaires

Réponses
4
Affichages
418
Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…