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 Discussion :

Comment sélectionner un textbox en fonction de la valeur d'une liste de choix?


Sujet :

VBA

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Futur Membre du Club
    Profil pro
    Inscrit en
    Avril 2011
    Messages
    3
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2011
    Messages : 3
    Par défaut Comment sélectionner un textbox en fonction de la valeur d'une liste de choix?
    Bonjour,
    Je débute tout juste avec access 2007 et là je coince, j'ai tourné un peu partout mais je n'arrive toujours pas à ce que je souhaite!
    Tout est dans le titre...
    Dans mon formulaire j'ai une liste de choix avec 3 valeurs: Chèque, Espèces, et Non réglé
    1/ Je voudrais atteindre le textbox TxtN°Cheque si je sélectionne Chèque

    2/ Je voudrais atteindre le textbox TxtRéglé si je sélectionne Espèces

    3/ Je voudrais avoir un msgbox si je sélectionne Non réglé

    Je suis persuadé que ça peut se faire mais pas avec mes seules recherches et essais.
    Alors merci à vous pour vos lumières.

  2. #2
    Invité
    Invité(e)
    Par défaut
    Bonjour
    Sur l'évènement "après mise à jour" de ta liste
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    Private Sub TaListe_AfterUpdate()
    If Me.TaListe..Column(0) = "Chèque" Then
       Me.TxtChèque.SetFocus
    ElseIf Me.TaListe.Column(0) = "Espèces" Then
       Me.Txt_Réglé.SetFocus
    ElseIf Me.TaListe..Column(0) = "Non Réglé" Then
       MsgBox "XXXXXX"
    End If
    Il faut bien sûr que dans ce cas tes valeurs soit dans la colonne1 de ta liste, sinon il faut modifier le numéro de colonne.

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

    Informations forums :
    Inscription : Avril 2011
    Messages : 3
    Par défaut
    Merci beaucoup!
    Une journée complète à chercher et essayer un peu tout, et grace à ton intervention je peux enfin passer à autre chose...:

  4. #4
    Expert confirmé

    Avatar de Maxence HUBICHE
    Homme Profil pro
    Développeur SQLServer/Access
    Inscrit en
    Juin 2002
    Messages
    3 842
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 56
    Localisation : France, Val d'Oise (Île de France)

    Informations professionnelles :
    Activité : Développeur SQLServer/Access

    Informations forums :
    Inscription : Juin 2002
    Messages : 3 842
    Par défaut
    Il serait préférable d'avoir un SELECT CASE dans la mesure où le test porte systématiquement sur la colonne 0

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    Private Sub TaListe_AfterUpdate()
    Select Case Me.TaListe.Column(0) 
        Case "Chèque" 
            Me.TxtChèque.SetFocus
        Case "Espèces" 
            Me.Txt_Réglé.SetFocus
        Case "Non Réglé" 
            MsgBox "XXXXXX"
    End Select

  5. #5
    Futur Membre du Club
    Profil pro
    Inscrit en
    Avril 2011
    Messages
    3
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2011
    Messages : 3
    Par défaut
    Merci beaucoup
    Les 2 solutions marchent impeccablement
    La 2nde étant plus légère

    Merci à vous

  6. #6
    Invité
    Invité(e)
    Par défaut
    Citation Envoyé par Maxence HUBICHE Voir le message
    Il serait préférable d'avoir un SELECT CASE dans la mesure où le test porte systématiquement sur la colonne 0

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    Private Sub TaListe_AfterUpdate()
    Select Case Me.TaListe.Column(0) 
        Case "Chèque" 
            Me.TxtChèque.SetFocus
        Case "Espèces" 
            Me.Txt_Réglé.SetFocus
        Case "Non Réglé" 
            MsgBox "XXXXXX"
    End If
    Effectivement, mais en général pour les débutants la solution "If-Else-End If", se révèle, il me semble, plus intuitive. Mais ce n'est qu'un avis.

    Et puis dans ce cas, il faut finir par

  7. #7
    Expert confirmé

    Avatar de Maxence HUBICHE
    Homme Profil pro
    Développeur SQLServer/Access
    Inscrit en
    Juin 2002
    Messages
    3 842
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 56
    Localisation : France, Val d'Oise (Île de France)

    Informations professionnelles :
    Activité : Développeur SQLServer/Access

    Informations forums :
    Inscription : Juin 2002
    Messages : 3 842
    Par défaut
    erf !
    Heureusement que tu as l'oeil !
    La beauté du copier-coller, c'est aussi sa plus grande perte...
    :s
    Désolé pour le End If restant...

    Personnellement, même en cours débutant, je préconise toujours le Select End Select dans la mesure où on teste toujours la même variable.

    • Ne serait-ce que pour la lisibilité
    • Egalement pour la maintenance.
    • Enfin, un SELECT est interprété plus rapidement qu'un IF, d'où un accroissement des performances du programme
    Bref... quand on peut faire un SELECT, autant en pofiter

    A propos des vitesses d'interprétation IF vs SELECT, voici un petit code à lancer dans Excel (à cause des plages de cellules...
    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
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    Option Explicit
    Sub Testeur()
        TestIF
        TestSELECT
        TestIF
        TestSELECT
        TestIF
        TestSELECT
        TestIF
        TestSELECT
        TestIF
        TestSELECT
    End Sub
     
    Sub TestIF()
        Dim i As Long
        Dim t As Date
        Dim t2 As Date
     
        t = VBA.DateTime.Now
        For i = 1 To 5000
            t2 = VBA.DateTime.Now
            If Minute(t2) = 1 Then
                Debug.Print 1
            ElseIf Minute(t2) = 2 Then
                Debug.Print 2
            ElseIf Minute(t2) = 3 Then
                Debug.Print 3
            ElseIf Minute(t2) = 4 Then
                Debug.Print 4
            ElseIf Minute(t2) = 5 Then
                Debug.Print 5
            ElseIf Minute(t2) > 5 And Minute(t2) <= 30 Then
                Debug.Print "plus petit que 30"
            ElseIf Minute(t2) > 30 And Minute(t2) <= 45 Then
                Debug.Print "troisième quart"
            ElseIf Minute(t2) > 45 Then
                Debug.Print "dernier quart"
            Else
                Debug.Print "J'ai dû oublier quelque chose... le zéro"
            End If
        Next
        t = VBA.DateTime.Now - t
        Range("A10000").End(xlUp).Offset(1, 0).Value = "If|" & t
    End Sub
    Sub TestSELECT()
        Dim i As Long
        Dim t As Date
        Dim t2 As Date
     
        t = VBA.DateTime.Now
        For i = 1 To 5000
            t2 = VBA.DateTime.Now
            Select Case Minute(t2)
            Case 1
                Debug.Print 1
            Case 2
                Debug.Print 2
            Case 3
                Debug.Print 3
            Case 4
                Debug.Print 4
            Case 5
                Debug.Print 5
            Case 5 To 30
                Debug.Print "plus petit que 30"
            Case 30 To 45
                Debug.Print "troisième quart"
            Case Is > 45
                Debug.Print "dernier quart"
            Case Else
                Debug.Print "J'ai dû oublier quelque chose... le zéro"
            End Select
        Next
        t = VBA.DateTime.Now - t
        Range("A10000").End(xlUp).Offset(1, 0).Value = "Select|" & t
    End Sub

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

Discussions similaires

  1. [XL-2010] Problème de mise à jour d'une textbox en fonction de la valeur d'une combobox
    Par benadry dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 05/06/2014, 10h22
  2. [XL-2007] Chaine de caractère pour Email en fonction de la valeur d'une Liste
    Par brunounours dans le forum Macros et VBA Excel
    Réponses: 5
    Dernier message: 13/12/2011, 12h38
  3. Réponses: 0
    Dernier message: 21/09/2010, 04h12
  4. [WD-2002] Afficher un champ en fonction de la valeur d'une liste déroulante
    Par babycoca dans le forum Word
    Réponses: 7
    Dernier message: 07/10/2009, 11h03
  5. Réponses: 1
    Dernier message: 28/11/2007, 00h18

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