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 :

Condition affichage textbox et frame [XL-2013]


Sujet :

Macros et VBA Excel

  1. #1
    Membre éclairé
    Homme Profil pro
    Constructeur ossature bois
    Inscrit en
    Mars 2014
    Messages
    897
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : France, Seine Maritime (Haute Normandie)

    Informations professionnelles :
    Activité : Constructeur ossature bois
    Secteur : Associations - ONG

    Informations forums :
    Inscription : Mars 2014
    Messages : 897
    Par défaut Condition affichage textbox et frame
    Bonjour,

    J'ai un usf de saisie, avec un calendrier, deux frames (optbut à l'intérieur) et 30 texbox

    on clique sur une date, puis la frame 1, s'active, on coche un optbut de celle-ci pour afficher la 2ème frame, pour cela c bon.

    Le truc c que je n'arrive pas lorsque je clique sur optbut de la frame 2, à ce qu'il m'affiche les texbox:

    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
    Private Sub ActiverTextBox()
    Dim TB
    Dim Ctrl As Control
     
    'cocher un optionBut
        For Each Ctrl In Me.FrCourses.Controls
            'If Ctrl.Value = True Then
            Select Case Ctrl
                Case Is = True
                    For Each TB In Me.Controls
                         If TypeName(TB) = "TextBox" Then
                             If TB.Tag = "criteres" Then TB.Enabled = True
                         End If
                     Next TB
     
                     MsgBox "Vous pouvez saisir les pronos"
                Case Is = False
                    MsgBox "Saisissez une course", vbCritical, "OBLIGATION"
            'End If
                End Select
        Next Ctrl
     
     
        'End If
    End Sub
    Je vois très bien d'où vient l'erreur, il boucle sur chaque optbut de la frame, et a chaque fois qu'il passe sur un optbut non sélectionné il m'envoit mon msgbox, hors ce que je souhaite c'est qu'il contrôle dans la frame si un optbut est coché, si oui il affiche les textbox et si non un msgbox "Obligation"....

    je ne sais pas pourquoi je bloque, alors que pour la date et la frame 1 ça fonctionne, faudrait-il passer par un GroupName?

    Merci pour votre aide futur,

    Bon WE à tous

    Seb

  2. #2
    Membre éclairé
    Homme Profil pro
    Constructeur ossature bois
    Inscrit en
    Mars 2014
    Messages
    897
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : France, Seine Maritime (Haute Normandie)

    Informations professionnelles :
    Activité : Constructeur ossature bois
    Secteur : Associations - ONG

    Informations forums :
    Inscription : Mars 2014
    Messages : 897
    Par défaut
    Bon après essai, il y a un truc que je n'avais pas réalisé, c'est que de toute façon si je ne sélectionne pas un optbut de la frame 2, et bien les textbox ne s'activerons pas....

    1er problème: Mais même si je sélectionne un optbut et bien il passe à travers tous les autres et m'envoie un msgbox, à chaque optbut....grrrr

    dans ma macro, une fois la frame 1 active et un optbut de celle-ci sélectionné, il active la frame 2, et lance la sub de vérification (qu'au moins un optbut est cocher) d'où mon problème, car si je ne coche pas d'optbut, il m'envoit 10 msgbox "obligation",

    2ème problème: mais si après ces msgbox, je coche un optbut et bien il ne le prend pas en considération....donc boucle interminable...

    Avez-vous une idée?

    Seb

  3. #3
    Expert confirmé
    Homme Profil pro
    Inscrit en
    Août 2010
    Messages
    3 453
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Août 2010
    Messages : 3 453
    Par défaut
    Bonjour,

    Je te propose une autre piste, à toi de voir si elle te convient. Je suppose que "FrCourses" est un Frame contenant les boutons d'option. Dans mon exemple, les boutons d'option ont les noms par défaut (OptionButton1, etc... adapte dans la fonction) et la valeur attribuée à chacun d'eux et qui sera testée ensuite est "Course 1", "Course 2" etc... :
    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
     
    Private Sub ActiverTextBox()
     
        Dim TB
        Dim Valeur As String
     
        'utilise la fonction "Switch" pour retourner la valeur correspondante au bouton d'option sélectionné
        With Me.FrCourses
     
            On Error Resume Next 'dans le cas où pas de sélection effectuée !
            Valeur = Switch(.OptionButton1, "Course 1", .OptionButton2, "Course 2", .OptionButton3, "Course 3", .OptionButton4, "Course 4")
     
        End With
     
        If Err.Number = 0 Then 'si une sélection a été faite
     
            'si le choix est Course 1 ou Course 3 dévérouille les TextBox. Adapter...
            If Valeur = "Course 1" Or Valeur = "Course 3" Then
     
                For Each TB In Me.Controls
     
                    If TypeName(TB) = "TextBox" Then If TB.Tag = "criteres" Then TB.Enabled = True
     
                Next TB
     
            End If
     
        Else
     
            MsgBox "Saisissez une course", vbCritical, "OBLIGATION"
     
        End If
     
    End Sub
    Hervé.

  4. #4
    Membre éclairé
    Homme Profil pro
    Constructeur ossature bois
    Inscrit en
    Mars 2014
    Messages
    897
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : France, Seine Maritime (Haute Normandie)

    Informations professionnelles :
    Activité : Constructeur ossature bois
    Secteur : Associations - ONG

    Informations forums :
    Inscription : Mars 2014
    Messages : 897
    Par défaut
    Salut Theze,

    Je suppose que "FrCourses" est un Frame contenant les boutons d'option
    C'est exact, au nombre de 10 textbox
    chacun porte le label C1, C2, C3, etc....(C1=course 1, C2=course 2, etc...)
    les boutons d'option ont les noms par défaut (OptionButton1, etc... adapte dans la fonction)
    Bon ok pour çà, les miens s'appelle "OptBut1" etc...

    la valeur attribuée à chacun d'eux et qui sera testée ensuite est "Course 1", "Course 2" etc... :
    Donc pour moi çà sera:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Valeur = Switch(.OptBut1, "C1", .OptBut2, "C2", .OptBut3, "C3", .OptBut4, "C4")
    etc....
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    If Valeur = "C1" Or Valeur = "C2" Or Valeur = "C3" Then
    etc....
    Je ne connaissais pas "Switch", merci pour cette découverte....

    Seb

  5. #5
    Invité
    Invité(e)
    Par défaut
    Bonjour,
    Je ne comprends pas!

    Un checkboox retourne un booléen et textbox.visible attend un booléen?
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    private checkbox1_change ()
    Textbox1.visible = checkbox1.value
    ceci dit tu peux placer les textebox dans une autre fram, il sont toujours visible mais c'est la fram que tu rends visible ou pas tu supprime le texte et la bordure de la fram, elle ne se voit pas et affiche ou masque les contrôles!
    Dernière modification par Invité ; 21/06/2015 à 18h30.

  6. #6
    Membre éclairé
    Homme Profil pro
    Constructeur ossature bois
    Inscrit en
    Mars 2014
    Messages
    897
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : France, Seine Maritime (Haute Normandie)

    Informations professionnelles :
    Activité : Constructeur ossature bois
    Secteur : Associations - ONG

    Informations forums :
    Inscription : Mars 2014
    Messages : 897
    Par défaut
    Salut rdurupt,

    pour confirmation ,Les checkbox se comportent-ils de la même façon de les optionbutton (retour vrai ou faux)?

    Car moi ce sont que des optbut...

    Sinon pour l'histoire de la frame textbox, c une solution, mais mon problème est autre
    1er problème: Mais même si je sélectionne un optbut et bien il passe à travers tous les autres et m'envoie un msgbox, à chaque optbut....grrrr

    dans ma macro, une fois la frame 1 active et un optbut de celle-ci sélectionné, il active la frame 2, et lance la sub de vérification (qu'au moins un optbut est cocher) d'où mon problème, car si je ne coche pas d'optbut, il m'envoit 10 msgbox "obligation",

    2ème problème: mais si après ces msgbox, je coche un optbut et bien il ne le prend pas en considération....donc boucle interminable...
    Seb

  7. #7
    Invité
    Invité(e)
    Par défaut
    Le comportement est le même à la différence que quand cochant un autre tu décoche le précédant!

  8. #8
    Membre éclairé
    Homme Profil pro
    Constructeur ossature bois
    Inscrit en
    Mars 2014
    Messages
    897
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : France, Seine Maritime (Haute Normandie)

    Informations professionnelles :
    Activité : Constructeur ossature bois
    Secteur : Associations - ONG

    Informations forums :
    Inscription : Mars 2014
    Messages : 897
    Par défaut
    On n'est d'accord alors

  9. #9
    Invité
    Invité(e)
    Par défaut
    Dans la mesure du possible évites les on error
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    With Me.FrCourses
     if .OptionButton1 + .OptionButton2 + .OptionButton3 = false  then msgbox " Err" : Exit sub
            Valeur = Switch(.OptionButton1, "Course 1", .OptionButton2, "Course 2", .OptionButton3, "Course 3", .OptionButton4, "Course 4")
     
        End With

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

Discussions similaires

  1. Création et affichage de 1000 frames = plantage
    Par SkYsO dans le forum Delphi
    Réponses: 20
    Dernier message: 05/06/2007, 16h42
  2. affichage textbox en cascade
    Par nimois3O dans le forum ASP.NET
    Réponses: 7
    Dernier message: 22/05/2007, 16h17
  3. Lecture Fichier text et affichage textbox
    Par miss_monika dans le forum AWT/Swing
    Réponses: 5
    Dernier message: 13/05/2007, 10h34
  4. Affichage textbox dans le resultat d'une requete
    Par laurent.w dans le forum Requêtes et SQL.
    Réponses: 4
    Dernier message: 14/02/2007, 09h37
  5. [FLASH 8] input text et affichage d'une frame
    Par trihanhcie dans le forum Flash
    Réponses: 5
    Dernier message: 06/04/2006, 15h58

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