IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Macros et VBA Excel Discussion :

VBA : Select case et inputbox gestion des erreurs


Sujet :

Macros et VBA Excel

  1. #1
    Futur Membre du Club
    Profil pro
    Inscrit en
    Mai 2011
    Messages
    16
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2011
    Messages : 16
    Points : 7
    Points
    7
    Par défaut VBA : Select case et inputbox gestion des erreurs
    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 ?

    Merci !!

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    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

  2. #2
    Membre habitué
    Profil pro
    Inscrit en
    Janvier 2008
    Messages
    117
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2008
    Messages : 117
    Points : 149
    Points
    149
    Par défaut
    Salut,

    Tout d'abord je te conseille d'ajouter les balises de code ce serait plus lisible.
    Ensuite, pour vérifier que la saisie correspond à un chiffre entre 1 et 9

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
     
    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))
     
    If not IsNumeric(x) then
       Exit sub
    end if
     
    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)
    Case else msgbox "Hors limites"
    End Select
    End Sub

  3. #3
    Expert éminent sénior Avatar de mercatog
    Homme Profil pro
    Inscrit en
    Juillet 2008
    Messages
    9 435
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Autre

    Informations forums :
    Inscription : Juillet 2008
    Messages : 9 435
    Points : 31 877
    Points
    31 877
    Par défaut
    Tu n'as pas besoin du Select case dans ce cas
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    Sub Groupe()
    Dim x As Variant
    Dim y As Byte
     
    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))
    y = CByte(Val(x))
    If y > 0 And y < 10 Then Call perso(y)
    End Sub
    Cordialement.
    J'utilise toujours le point comme séparateur décimal dans mes tests.

  4. #4
    Futur Membre du Club
    Profil pro
    Inscrit en
    Mai 2011
    Messages
    16
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2011
    Messages : 16
    Points : 7
    Points
    7
    Par défaut
    Merci à vous deux, j'aime beaucoup la deuxième réponse me permet d'aller bien plus vite, je vais aussi me servir de la message box du premier.. !

    Merci pour votre réactivité !!

  5. #5
    pgz
    pgz est déconnecté
    Expert éminent Avatar de pgz
    Homme Profil pro
    Développeur Office VBA
    Inscrit en
    Août 2005
    Messages
    3 692
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 70
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Office VBA
    Secteur : Conseil

    Informations forums :
    Inscription : Août 2005
    Messages : 3 692
    Points : 6 591
    Points
    6 591
    Par défaut
    Bonjour

    Il peut être intéressant de contrôler la saisie et de boucler sur l'InputBox tant que l'opérateur n'a pas saisi un chiffre de 1 à 9, ni cliqué [Annuler].
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    Sub machin()
     
    Dim sRep As String
     
    sRep = "X"
    While (sRep <> vbNullString) And Not (sRep Like "[1-9]")
    sRep = 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))
    Wend
     
    If sRep <> "" Then Call perso(CInt(sRep))
     
    End Sub
    J'ai considéré que la fonction perso attendanit un argument de type Integer, mais si c'est autre chose, à adapter.

    Cordialement,

    PGZ
    pluritas non est ponenda sine necessitate - Le rasoir d'Okham
    Ne jamais attribuer à la malignité ce que la stupidité peut expliquer -Le rasoir d'Hanlon

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. question d'un débutant sur la gestion des erreurs en VBA
    Par David1259 dans le forum VBA Access
    Réponses: 1
    Dernier message: 03/01/2009, 12h43
  2. [VBA-EXCEL] Gestion des erreurs et manipulation du contenu d'une cellule
    Par Froggy007 dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 29/09/2008, 20h42
  3. [VBA] Gestion des Erreurs, type de l'objet Err
    Par bastienh dans le forum VBA Access
    Réponses: 7
    Dernier message: 26/06/2007, 10h28
  4. [VBA-E] Dysfonctionnement dans la gestion des erreurs
    Par Choco49 dans le forum Macros et VBA Excel
    Réponses: 4
    Dernier message: 14/06/2006, 11h44
  5. [VBA-E] Pb sur gestion des erreurs
    Par micoscas dans le forum Macros et VBA Excel
    Réponses: 19
    Dernier message: 08/03/2005, 17h08

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo