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

VBA Access Discussion :

une action commune dépendant du choix sur plusieurs optiongroup [AC-2010]


Sujet :

VBA Access

  1. #1
    Nouveau membre du Club
    Profil pro
    Étudiant
    Inscrit en
    Août 2011
    Messages
    38
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Août 2011
    Messages : 38
    Points : 29
    Points
    29
    Par défaut une action commune dépendant du choix sur plusieurs optiongroup
    Bonjour,

    Je souhaiterais faire en sorte que le changement de couleur d'un rectangle, label (ColorChoiceR) etc dépendent du choix de PLUSIEURS goupes d'options (CbTry1 et 2).

    Je débute et j'ai rédigé ceci (je passe par un bouton pour mettre à jour le rectangle, j'ai guère d'autres idées pour automatiser l'ensemble).
    Le seul problème est que la couleur ne change pas. Je me demande si cela ne vient pas du fait que les integers t1 et t2 soient mal lus par le dernier sub (Je ne suis pas sûr d'être clair, en gros que le dernier sub ne soit pas capable de récupérer les valeurs acquises par t1 et t2 dans les 2 subs précédents).

    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
     
    Sub CbTry1_Click()
    Dim t1 As Integer
    Select Case CbTry1
    Case 1
    t1 = 1
    Case 2
    t1 = 2
    Case 3
    t1 = 3
    End Select
    End Sub
     
    Sub CbTry2_Click()
    Dim t2 As Integer
    Select Case CbTry2
    Case 1
    t2 = 1
    Case 2
    t2 = 2
    Case 3
    t2 = 3
    End Select
    End Sub
     
     
    Sub BTUpgradeColor_Click()
    Dim tt As Integer
    tt = (t1 + t2)
    If tt = 2 Then
    Me.ColorChoiceR.BackColor = vbRed
    ElseIf tt = 6 Then
    Me.ColorChoiceR.BackColor = vbGreen
    Else: Me.ColorChoiceR.BackColor = vbYellow
    End If
     
    End Sub
    Auriez-vous, s'il vous plait, une idée?
    Merci d'avance

  2. #2
    Invité
    Invité(e)
    Par défaut
    Bonjour (Re)

    Déclares toutes tes variables en entête de module et non dans chaque procédure (cela devrait aller mieux).

    Philippe

  3. #3
    Nouveau membre du Club
    Profil pro
    Étudiant
    Inscrit en
    Août 2011
    Messages
    38
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Août 2011
    Messages : 38
    Points : 29
    Points
    29
    Par défaut
    comme ceci?
    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
     
    Dim t1 As Integer
    Dim t2 As Integer
    Dim tt As Integer
     
    Sub CbTry1_Click()
    Select Case CbTry1
    Case 1
    t1 = 1
    Case 2
    t1 = 2
    Case 3
    t1 = 3
    End Select
    End Sub
     
    Sub CbTry2_Click()
    Select Case CbTry2
    Case 1
    t2 = 1
    Case 2
    t2 = 2
    Case 3
    t2 = 3
    End Select
    End Sub
     
    Sub BTUpgradeColor_Click()
    tt = (t1 + t2)
    If tt = 2 Then
    Me.ColorChoiceR.BackColor = vbRed
    ElseIf tt = 6 Then
    Me.ColorChoiceR.BackColor = vbGreen
    Else: Me.ColorChoiceR.BackColor = vbYellow
    End If
    End Sub
    J'avais déjà tenté, sans succès malheureusement. Lorsque j'appuis sur le bouton je vois le rectangle se rafraichir mais il reste de même couleur.

    (Pour info, je ne sais pas si c'est une erreur ou pas, je n'ai pas écris ce code dans un module particulier mais directement dans la page VBA correspondante au formulaire)

  4. #4
    Invité
    Invité(e)
    Par défaut
    Re

    J'ai refait un formulaire avec tes caractéristiques :

    Tes procédures sur les groupes ne servent à rien, car les valeurs 1,2 et 3 sont implicites.

    Donc une seule procédure qui fait tout :



    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    Private Sub BTUpgradeColor_Click()
        Dim tt As Integer
        tt = CInt(Me.CbTry_1.Value) + CInt(Me.CbTry_2.Value)
     
        Select Case tt
            Case 2
                Me.ColorChoiceR.BackColor = vbRed
            Case 6
                Me.ColorChoiceR.BackColor = vbGreen
            Case Else
                Me.ColorChoiceR.BackColor = vbYellow
        End Select
     
    End Sub
    Comme je viens de le faire, cela fonctionne.

    Edit : Préfère le SELECT CASE plutôt que l'imbrication de IF.

    Philippe

  5. #5
    Nouveau membre du Club
    Profil pro
    Étudiant
    Inscrit en
    Août 2011
    Messages
    38
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Août 2011
    Messages : 38
    Points : 29
    Points
    29
    Par défaut
    ok merci ça marche parfaitement.
    Maintenant je sais que les valeurs sont implicites.
    Ok pour les imbrications de If
    Merci beaucoup.

    Dernier point : une idée pour que ça marche automatiquement sans avoir besoin que cela passe par un clic BT? j'ai essayé un Form_click ou un Form_AfterUpdate, sans succès.

  6. #6
    Invité
    Invité(e)
    Par défaut
    Re

    Pour cela on déporte tout dans une procédure :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    Public Sub ResultatClick()
         Dim tt As Integer
        tt = CInt(Me.CbTry_1.Value) + CInt(Me.CbTry_2.Value)
     
        Select Case tt
            Case 2
                Me.ColorChoiceR.BackColor = vbRed
            Case 6
                Me.ColorChoiceR.BackColor = vbGreen
            Case Else
                Me.ColorChoiceR.BackColor = vbYellow
        End Select
     
    End Sub
    Ensuite sur chaque groupes d'options :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    Private Sub CbTry_1_Click()
        Call ResultatClick
    End Sub
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    Private Sub CbTry_2_Click()
        Call ResultatClick
    End Sub
    Donc plus de bouton de commande.

    Philippe

  7. #7
    Nouveau membre du Club
    Profil pro
    Étudiant
    Inscrit en
    Août 2011
    Messages
    38
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Août 2011
    Messages : 38
    Points : 29
    Points
    29
    Par défaut
    T'es trop bon !
    Merci beaucoup pour l'aide apporté au grand débutant que je suis.

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

Discussions similaires

  1. Comment écrire une ligne de code très longue sur plusieurs lignes
    Par Vincent32 dans le forum Macros et VBA Excel
    Réponses: 7
    Dernier message: 06/11/2018, 09h28
  2. [PrestaShop] Template prestashop tableau sur une ligne comment le faire passer sur plusieurs lignes
    Par ptitepo dans le forum EDI, CMS, Outils, Scripts et API
    Réponses: 1
    Dernier message: 23/12/2010, 02h47
  3. action avec un seul bouton sur plusieurs MC différents
    Par cece2000 dans le forum ActionScript 1 & ActionScript 2
    Réponses: 1
    Dernier message: 22/04/2008, 11h33
  4. cocher une case en fonction des valeurs sur plusieurs plages
    Par flyfranky dans le forum Macros et VBA Excel
    Réponses: 15
    Dernier message: 15/11/2007, 10h20
  5. [XPath] Choix sur plusieurs elements
    Par okuntz dans le forum XSL/XSLT/XPATH
    Réponses: 1
    Dernier message: 05/02/2007, 16h38

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