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 :

Besoin aide vba "Select Case"


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Mars 2010
    Messages
    12
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2010
    Messages : 12
    Par défaut Besoin aide vba "Select Case"
    Bonjour à tous,

    Je suis confronté à une difficulté lors de la réalisation de mon programme, tout d’abord je tiens a précisé que je suis novice en programmation et que j’ai essayé de faire avec les quelques notions que j’ai.

    J’ai essayé de faire un système de boules pour obtenir des statistiques.
    Au début in choisi le nombre de répétition correspondant au nombre de boules du système.


    J’ai programmer mes « vannes » avec conditions select case mais ça ne fonctionne pas, il ne me fait pas la succession de conditions.

    Merci a tous de votre aide.
    Bonne continuation.

  2. #2
    Membre Expert Avatar de Godzestla
    Homme Profil pro
    Chercheur de bonheur
    Inscrit en
    Août 2007
    Messages
    2 403
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 60
    Localisation : Belgique

    Informations professionnelles :
    Activité : Chercheur de bonheur
    Secteur : Industrie

    Informations forums :
    Inscription : Août 2007
    Messages : 2 403
    Par défaut
    Bonjour,
    si tu regardes l'aide VBA de Select Case, tu verras ton erreur dans les lignes case is = .

  3. #3
    Membre Expert
    Profil pro
    Inscrit en
    Juillet 2007
    Messages
    2 130
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2007
    Messages : 2 130
    Par défaut
    Salut warrio67 et le forum
    Mets ta macro directement sur un poste ete tu auras plus de réponses.
    Quelques remarques sur ta macro :
    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
    46
    47
    48
    49
    50
    51
    Sub STAT()
    Dim a As Boolean, b As Boolean, c As Boolean, d As Boolean, e As Boolean, f As Boolean
    Dim g As Boolean, h As Boolean, i As Boolean, j As Boolean, k As Boolean, l As Boolean
    Dim m As Boolean, n As Boolean, o As Boolean, p As Boolean
    Dim w, x, y, z, ligne, col, test, qte
    'initialisation
    a = Cells(16, "H").Value
    '---------------
    o = Cells(16, "V").Value
    ligne = 3
    col = 18 'R
     
    'inscription des valeurs dans les cases
    Range("R4").Value = a
    '---------------------
    Range("af10").Value = o
    InputBox ("nombre de répétition ? " & qte)
    '----
    For x = 1 To qte 'repetition
        'test = 1
        For test = 1 To 5
            Select Case test
                Case 1
                    Select Case a
                        Case 0
                            ligne = 5
                            col = 10
                            test = 2
                            a = 1
                            With Cells(5, "r").Borders(xlDiagonalDown)
                                .LineStyle = xlContinuous
                                .Weight = xlThick
                                .ColorIndex = 4
                            End With
                            Cells(5, "r").Borders(xlDiagonalUp).LineStyle = xlNone
                        Case 1
                            ligne = 5
                            col = 26
                            test = 2
                            a = 0
                            With Cells(5, "r").Borders(xlDiagonalUp)
                                .LineStyle = xlContinuous
                                .Weight = xlThick
                                .ColorIndex = 4
                            End With
                            Cells(5, "r").Borders(xlDiagonalDown).LineStyle = xlNone
                    End Select 'a
     
                Case 2
                    Select Case b
                            '-----------
    Comme tu déclares tes variables, à part p déclarée en Boolean, toutes les autres sont déclarées en variant.

    Ta boucle X :
    Tu fixes test à 1, puis tu le refixes à 1 dans la boucle de test => le premier sert à rien
    Je n'ai pas tout lu : faire une boucle sert essentiellement à ne pas recoder des lignes. mais là, tu fais une boucle de 1 à 5 pour faire 5 opérations différentes => Tu rajoutes une boucle et un Select qui ne servent à rien (mais il est vrai que je n'ai pas lu jusqu'au bout). Si tu enchaînes directement tes Select Cas a, select case b, etc... tu auras le même résultat, sans la perte de temps du à la boucle.
    Dans ton cas, il serait peut-être utile d'utiliser une boucle pour choisir la variable (directement la cellule en incrémentant la colonne), mais faut voir ce qu'on en attend

    Select Case a, b, etc...
    tes variables on 2 possibilités : 0 ou 1. Un simple if...else...end if est mieux. select case est meilleur pour traiter quand il t a plus de possibilités.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
        Cells(5, "r").Select
        With Selection.Borders(xlDiagonalDown)
    Select/Selection : sert surtout à faire perdre du temps et de la lisibilité.
    C'est un code issue directement d'une macro apprentissage. pour les formats, Excel met toutes les possibilités, même si elles n'évoluent pas par rapport à la valeur par défaut. mets seulement ce qui change.

    Je n'ai pas touché à grand chose dans la présentation, mais en utilisant les indentations, on sait exactement à quel niveau de boucle/test/select se situe l'instruction. Le côté "joli" ne sert à rien, mais savoir qu'on est dans le select case test =2 et dans le select case b si
    A+

Discussions similaires

  1. [XL-2000] Faire en VBA un Select Case "dynamique"
    Par lolod dans le forum Macros et VBA Excel
    Réponses: 6
    Dernier message: 19/03/2010, 23h43
  2. [VBA-E]Select case qui ne fonctionne pas :(
    Par DonKnacki dans le forum Macros et VBA Excel
    Réponses: 20
    Dernier message: 31/01/2006, 12h13

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