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 :

mettre à jour un textbox dès que changement d'un ou plusieurs textbox


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé
    Profil pro
    Inscrit en
    Septembre 2007
    Messages
    776
    Détails du profil
    Informations personnelles :
    Âge : 55
    Localisation : France, Nord (Nord Pas de Calais)

    Informations forums :
    Inscription : Septembre 2007
    Messages : 776
    Par défaut mettre à jour un textbox dès que changement d'un ou plusieurs textbox
    bonjour le forum

    je suis en train de développer un formulaire de saisie avec calcul
    celui ci doit me mettre à jour un textbox (textbox1) en fonction des valeurs d'autres textbox (textbox2, textbox3,.....)
    j'aimerai que le textbox1 contenant le résultat soit mis à jour dès que je change une valeur dans un des textbox (textbox2, textbox3,.....) lié au résultat final
    j'ai bien créé le code événement pour un textbox mais au vue du nombre de textbox sur le formulaire, cela va me prendre un temps fou si je dois créer pour chacun un événement.... (sans compter le risque d'erreur lors du codage)
    voici mon code pour un des textbox permettant le calcul
    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 TbxContenu1_7_Change()
    Me.GContenu1.Value = ""
    grammage = 0.001
    Select Case Me.CbxContenu1
        Case "Feuille", "Coupon"
        'H3*((F3*grammage)*(G3*grammage))
            Me.GContenu1.Value = (TbxContenu1_5 * ((TbxContenu1_1 * grammage) * (TbxContenu1_2 * grammage))) * TbxContenu1_7
        Case "Dépliant"
            Me.GContenu1.Value = .....
        Case "Brochure"
            Me.GContenu1.Value = .......
        End Select
    End Sub
    comment peut on faire ?
    merci d'avance pour vos pistes ou soluces

    david

  2. #2
    Membre éclairé
    Profil pro
    Inscrit en
    Septembre 2007
    Messages
    776
    Détails du profil
    Informations personnelles :
    Âge : 55
    Localisation : France, Nord (Nord Pas de Calais)

    Informations forums :
    Inscription : Septembre 2007
    Messages : 776
    Par défaut
    coucou
    bon je pense avoir trouvé la soluce, en tout cas cela me donne le résultat
    voici le code
    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
     
    'module de classe
    Public WithEvents TextBoxes As MSForms.TextBox
    Private Sub Textboxes_Change()
    Dim grammage
    UserForm1.Frame2.GContenu1.Value = ""
    grammage = 0.001
    Select Case UserForm1.Frame2.CbxContenu1
        'Select Case d
            'Case 1, 2, 5, 7
                Case "Feuille", "Coupon", "Dépliant"
                    'If TextBoxes <> "" Then
                        UserForm1.Frame2.GContenu1 = Application.RoundUp((CLng(UserForm1.Frame2.TbxContenu1_5) * _
                        (CLng(UserForm1.Frame2.TbxContenu1_1) * grammage) * (CLng(UserForm1.Frame2.TbxContenu1_2) * grammage)) * _
                        CLng(UserForm1.Frame2.TbxContenu1_7), 0)
                    'End If
            'Case 1, 2, 4, 5, 6, 7
                Case "Brochure"
                UserForm1.Frame2.GContenu1.Value = 1
        'End Select
    End Select
    End Sub
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
    'userform
    Dim TextBoxesCount As Integer, d As Control
        ' Création de la collection de TextBoxes, gérée par le module de classe
        TextBoxesCount = 0
            For Each d In Controls
                    If TypeName(d) = "TextBox" And Left(d.Name, 11) = "TbxContenu1" Then
                        TextBoxesCount = TextBoxesCount + 1
                        ReDim Preserve TB(1 To TextBoxesCount)
                        Set TB(TextBoxesCount).TextBoxes = d
                    End If
            Next d
    par contre comme il s'agit d'un calcul,je dois mettre par défaut valeur à 0 sinon j'ai le message 'incompatibilité de type)
    y a t'il une autre solution pour éviter ce message sans avoir à ajouter une valeur par défaut dans les textbox ?

    ca serait sympa un petit coup de main...
    ce n'est pas très important c'est juste une question d'esthétique mais bon j'aime le détail

    merci d'avance

    david

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

Discussions similaires

  1. Impossibilité de mettre à jour une Textbox
    Par ernie74 dans le forum VB.NET
    Réponses: 9
    Dernier message: 02/11/2016, 23h13
  2. [Toutes versions] Mettre à jour un champ mais que 1 ligne sur 4
    Par wildsoj dans le forum Excel
    Réponses: 3
    Dernier message: 08/05/2014, 19h20
  3. [c#] Mettre à jour une propriété sur le changement d'une autre propriété
    Par yonpo dans le forum Windows Presentation Foundation
    Réponses: 6
    Dernier message: 26/08/2011, 18h51
  4. [AC-2007] Mettre à jour une table alors que rien n'a été prévu pour cela
    Par tibofo dans le forum VBA Access
    Réponses: 4
    Dernier message: 14/04/2010, 11h33
  5. Réponses: 2
    Dernier message: 15/10/2007, 13h28

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