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 :

Problème gestion OptionButton et TextBox


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Futur Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Mai 2014
    Messages
    2
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 32
    Localisation : France, Orne (Basse Normandie)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Industrie

    Informations forums :
    Inscription : Mai 2014
    Messages : 2
    Par défaut Problème gestion OptionButton et TextBox
    Bonjour, actuellement en licence il ma était demander de créer un programme sous VBA en corelation avec mais cours.
    J'ai donc choisie de creer un programme sur les pret.
    Apres avoir regardais plusieur poste sur ce forum jai pue me debloquer plusieur fois.. Mais la pour le reste je ne vois pas d'autre solution que vous demander.

    Première chose..

    Voila j'ai crée 2 optionButton sur une userform1 ainsi qu'un commandButton1 (ok) qui validera la sélection:

    optionButton1, correspond au mois
    optionButton2, correspond a l’année

    Tout d'abord j'aimerai que l’opérateur soit obligé d'avoir choisir entre otionButton1 ou otionButton2 lorsqu'il Click sur Ok (commandButton1) sinon celui-ci reçoit un msgBox lui indiquant de sélectionner Mois (optionButton1) ou Année (optionButton2)

    Ensuite j'ai un calcul qui s'effectue... Si l’opérateur a choisi Mois (optionButton1) je laisse mon calcul normal si l’opérateur a choisi Année(optionButton2) je multiplie par 12 mon calcul

    Ex: Dans une textBox1 (Nombre de remboursements) l’opérateur met un nombre 3
    Si l’opérateur a choisi Mois (optionButton1) ==> TextBox2 = 3
    Si l’opérateur a choisi Année(optionButton2) ==> TextBox2 = 3*12

    Rq: le calcul qui ce fait sur la userfor2 lors du click sur OK


    Deuxième chose..

    J'ai donc plusieurs TextBox sur ma première userform et j'aimerai que lorsque l’opérateur click sur Ok (commandButton1) que toutes les TextBox soit remplie d'un chiffre. sinon un message s'affiche disant de remplir les textboxs

    Voici le début de mon programme:

    USERFORM1


    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
    Private Sub CommandButton1_Click()
     
     TAEG = Val(TextBox2.Value)
     Worksheets("CréditConso").Cells(5, 9).Value = TAEG
     
    Montant_credit = Val(TextBox3.Value)
    Worksheets("CréditConso").Cells(1, 9).Value = Str(Montant_credit)
     
    Assurance = Val(TextBox4.Value)
    Worksheets("CréditConso").Cells(2, 9).Value = Str(Assurance)
     
    Nb_Remboursement = Val(TextBox5.Value)
    Worksheets("CréditConso").Cells(7, 9).Value = Str(Nb_Remboursement)
     
    Frais_de_dossier = Val(TextBox7.Value)
    Worksheets("CréditConso").Cells(3, 9).Value = Str(Frais_de_dossier)
     
    Années = Val(TextBox8.Value)
    Worksheets("CréditConso").Cells(11, 9).Value = Str(Années)
     
    Worksheets("CréditConso").Cells(10, 9) = ComboBox1.Value
    'Cells(7, 9).Value = Mois
     
    Worksheets("CréditConso").Cells(9, 9) = ComboBox2.Value 'jours
     
    CréditConso.Hide
    CréditConso1.Show
    End Sub
     
     
    'Taux TAEG
    Private Sub TextBox2_KeyPress(ByVal KeyAscii As MSForms.ReturnInteger)
    If InStr("1234567890.-", Chr(KeyAscii)) = 0 Then KeyAscii = 0: Beep
    End Sub
     
     
    'Montant du credit
    Private Sub TextBox3_KeyPress(ByVal KeyAscii As MSForms.ReturnInteger)
    If InStr("1234567890,-", Chr(KeyAscii)) = 0 Then KeyAscii = 0: Beep
     
    End Sub
     
    'Assurance
    Private Sub TextBox4_KeyPress(ByVal KeyAscii As MSForms.ReturnInteger)
    If InStr("1234567890.-", Chr(KeyAscii)) = 0 Then KeyAscii = 0: Beep
    End Sub
     
    'Nb de remboursement
    Private Sub TextBox5_KeyPress(ByVal KeyAscii As MSForms.ReturnInteger)
    If InStr("1234567890,-", Chr(KeyAscii)) = 0 Then KeyAscii = 0: Beep
     
    End Sub
     
    'Frais de dossier
    Private Sub TextBox7_KeyPress(ByVal KeyAscii As MSForms.ReturnInteger)
    If InStr("1234567890,-", Chr(KeyAscii)) = 0 Then KeyAscii = 0: Beep
     
    End Sub


    USERFORM2


    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
    Private Sub UserForm_Activate()
     
    'Taux réel supporter
    TextBox12.Value = Format((((1 + ((TAEG / 100) / 12)) ^ 12) - 1) * 100, "0.00")
    TauxRéel = TextBox12.Value
     
    'Coût frais de dossier
    TextBox9.Value = Frais_de_dossier
     
    'Coût total de l'assurance
    TextBox10.Value = Assurance * Nb_Remboursement * 12
    Assurance_Total = TextBox10.Value
     
    'Coût des Interêts
    TextBox8.Value = Format(((Mensualité * Nb_Remboursement * 12) - (Montant_credit + Assurance_Total)), "0.00")
    Interêt = TextBox8.Value
    Worksheets("CréditConso").Cells(4, 9).Value = Interêt
     
    'Coût total réel du crédit
    TextBox11.Value = Interêt + Assurance_Total + Montant_credit
     
    'Coût mensuel
    TextBox14.Value = Format((Montant_credit * ((TAEG / 100) / 12)) / (1 - (1 + ((TAEG / 100) / 12)) ^ -(Nb_Remboursement * 12)) + Assurance, "0.00")
    Mensualité = TextBox14.Value
    Worksheets("CréditConso").Cells(15, 9).Value = Mensualité
     
    'Date fin Prêt
    TextBox13.Value = Worksheets("CréditConso").Cells(13, 9)
    End Sub
    Je précise, je suis débutant il y a que 3 semaines que j'ai des cours d'informatique (vba) et algorithmique

    Merci d'avance pour vos réponse
    J’espère avoir était le plus clair possible
    Clement

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

    Je n'aurai peut-être pas la possibilité de traiter la totalité maintenant.
    Voila j'ai crée 2 optionButton sur une userform1 ainsi qu'un commandButton1 (ok) qui validera la sélection:

    optionButton1, correspond au mois
    optionButton2, correspond a l’année

    Tout d'abord j'aimerai que l’opérateur soit obligé d'avoir choisir entre otionButton1 ou otionButton2 lorsqu'il Click sur Ok (commandButton1) sinon celui-ci reçoit un msgBox lui indiquant de sélectionner Mois (optionButton1) ou Année (optionButton2)

    Ensuite j'ai un calcul qui s'effectue... Si l’opérateur a choisi Mois (optionButton1) je laisse mon calcul normal si l’opérateur a choisi Année(optionButton2) je multiplie par 12 mon calcul


    Ex: Dans une textBox1 (Nombre de remboursements) l’opérateur met un nombre 3
    Si l’opérateur a choisi Mois (optionButton1) ==> TextBox2 = 3
    Si l’opérateur a choisi Année(optionButton2) ==> TextBox2 = 3*12
    Il y a plusieurs façons de traiter ce cas. D'abord, il est à noter la possibilité de nommer les objets de façon à rendre l'écriture et la relecture plus facile.
    Exemple: OptMois, OptAn et BtValidation ou BtOk. (toujours garder la même philosophie de notation, ex: Opt, Bt, Tb (TextBox), Cb (ComboBox) etc...).

    A l'initialisation de Userform on peut désactiver les deux options et rendre le Bouton Ok invisible (il ne deviendra visible qu'à la validation d'une des options).
    A ce stade, il ne paraît pas nécessaire. On gérera l'événement "Change()" de TextBox1.
    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
     
    'Private Sub CommandButton1_Click()    
        'With Me
            'If Not .OptionButton1 And Not .OptionButton2 Then _
                MsgBox "Choisir Mois ou Année": Exit Sub
            '.TextBox2 = IIf(.OptionButton1, Val(.TextBox1), Val(.TextBox1) * 12)
        'End With
    'End Sub
     
     
    Private Sub OptionButton1_Click()
        With Me
            '.CommandButton1.Visible = True
            .TextBox2 = Val(.TextBox1)
        End With
    End Sub
     
     
    Private Sub OptionButton2_Click()
        With Me
            '.CommandButton1.Visible = True
            .TextBox2 = Val(.TextBox1) * 12
        End With
    End Sub
     
     
    Private Sub TextBox1_Change()
        With Me
            If Not .OptionButton1 And Not .OptionButton2 Then _
                MsgBox "Choisir Mois ou Année": Exit Sub
            .TextBox2 = IIf(.OptionButton1, Val(.TextBox1), Val(.TextBox1) * 12)
        End With
    End Sub
     
     
    Private Sub UserForm_Initialize()
        With Me
            '.CommandButton1.Visible = False
        End With
    End Sub
    Voici, pour l'instant. A plus tard.
    Cordialement.
    Jean-Claude

  3. #3
    Rédacteur
    Avatar de Philippe Tulliez
    Homme Profil pro
    Formateur, développeur et consultant Excel, Access, Word et VBA
    Inscrit en
    Janvier 2010
    Messages
    13 173
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Formateur, développeur et consultant Excel, Access, Word et VBA

    Informations forums :
    Inscription : Janvier 2010
    Messages : 13 173
    Billets dans le blog
    53
    Par défaut
    Bonjour,
    Tout d'abord j'aimerai que l’opérateur soit obligé d'avoir choisir entre otionButton1 ou otionButton2 lorsqu'il Click sur Ok (commandButton1) sinon celui-ci reçoit un msgBox lui indiquant de sélectionner Mois (optionButton1) ou Année (optionButton2)
    Dans un UserForm, lorsque je ne veux pas que l'utilisateur puisse cliquer sur un CommandButton si certaines conditions ne sont pas remplies, je crée une procédure de test.
    Dans cette procédure, la valeur de la propriété Visible ou Enabled du contrôle est le résultat du test.
    Par exemple dans cette procédure nommée CheckControl, le contrôle CommandButton nommé cmdOk ne sera actif que si OptionButton1 ou OptionButton2 est coché.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    Sub CheckControl()
     With Me
     .cmdOk.Enabled = .OptionButton1 = True Or .OptionButton2 = True
     End With
    End Sub
    Cette procédure sera appelée lors de l'ouverture de la UserForm
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    Private Sub UserForm_Initialize()
     With Me
     .CheckControl
     End With
    End Sub
    et à chaque clic sur les contrôles OptionButton
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    Private Sub OptionButton1_Click()
     Me.CheckControl
    End Sub
    Private Sub OptionButton2_Click()
     Me.CheckControl
    End Sub
    Ainsi pas de risque que l'on clique sur ce bouton évitant ainsi un message inutile (MsgBox) qui oblige encore à cliquer sur OK
    Philippe Tulliez
    Ce que l'on conçoit bien s'énonce clairement, et les mots pour le dire arrivent aisément. (Nicolas Boileau)
    Lorsque vous avez la réponse à votre question, n'oubliez pas de cliquer sur et si celle-ci est pertinente pensez à voter
    Mes tutoriels : Utilisation de l'assistant « Insertion de fonction », Les filtres avancés ou élaborés dans Excel
    Mon dernier billet : Utilisation de la fonction Dir en VBA pour vérifier l'existence d'un fichier

  4. #4
    Invité
    Invité(e)
    Par défaut
    Bonsoir,
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    Montant_credit = Val(TextBox3.Value)
    Worksheets("CréditConso").Cells(1, 9).Value = Str(Montant_credit)
    • Quel est l'intérêt de Str()

    ​Pour vérifier la saisie des Textbox :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
    Private Sub CommandButton1_Click()    
        For x = 2 To 8
            If x = 6 Then x = x + 1
            If Val(Me.Controls("Textbox" & x)) = 0 Then
                Z = MsgBox("Saisie obligatoire", vbCritical + vbOKOnly)
                Me.Controls("Textbox" & x).SetFocus
                Exit Sub
            End If
        Next
    End Sub
    Cordialement.
    Jean-Claude


    Dernière modification par AlainTech ; 11/07/2014 à 06h48.

Discussions similaires

  1. [C# 2.0] Problème gestion mémoire
    Par Stéphane-M dans le forum Windows Forms
    Réponses: 13
    Dernier message: 21/09/2006, 14h36
  2. [VB 2005]Problème de Remplissage de Textbox
    Par D4rkTiger dans le forum Windows Forms
    Réponses: 1
    Dernier message: 12/08/2006, 18h21
  3. [VBA E] Problème de lien entre textbox et cellule
    Par vanessaferraz dans le forum Macros et VBA Excel
    Réponses: 11
    Dernier message: 21/06/2006, 08h49
  4. Problème gestion actionListener pour JButton
    Par cedricbr dans le forum AWT/Swing
    Réponses: 2
    Dernier message: 26/05/2006, 16h39
  5. Problème - Gestion des exceptions - MFC.
    Par Atomikx dans le forum MFC
    Réponses: 4
    Dernier message: 14/11/2005, 09h38

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