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 :

sur un userform lier la valeur de 2 textbox [XL-2007]


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé Avatar de grisan29
    Homme Profil pro
    ouvrier poseur
    Inscrit en
    Octobre 2006
    Messages
    866
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Finistère (Bretagne)

    Informations professionnelles :
    Activité : ouvrier poseur
    Secteur : Bâtiment

    Informations forums :
    Inscription : Octobre 2006
    Messages : 866
    Par défaut sur un userform lier la valeur de 2 textbox
    bonjour a vous tous

    j'ai un userform avec un textbox1 dans lequel j'écris manuellement sa donnée a transférer en feuille après clic sur ok mais
    je voudrais que la valeur que j'ai mis dans le textbox1 soit également transmis en textbox2 afin d'exploité différement la valeur.
    si je ne suis pas assez clair n'hésitez pas

    cordialement

    Pascal

  2. #2
    Membre Expert
    Profil pro
    Inscrit en
    Juillet 2007
    Messages
    2 130
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2007
    Messages : 2 130
    Par défaut
    Salut grisan29 et le forum
    si je ne suis pas assez clair n'hésitez pas
    Pourquoi recopier une TextBox dans une autre ?
    Sur une macro automatique de ton contrôle, fait un remplissage de l'autre.

    Hormis ça, si tu expliquais la finalité de cette recopie, on pourrait vraisemblablement te proposer des solutions plus adaptée à ta problèmatique. Mais on ne connaît ni le problème, ni le but, juste la difficulté que tu as de mettre en oeuvre la méthode que tu as trouvée pour arriver à ta fin.
    A+

  3. #3
    Membre éclairé Avatar de grisan29
    Homme Profil pro
    ouvrier poseur
    Inscrit en
    Octobre 2006
    Messages
    866
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Finistère (Bretagne)

    Informations professionnelles :
    Activité : ouvrier poseur
    Secteur : Bâtiment

    Informations forums :
    Inscription : Octobre 2006
    Messages : 866
    Par défaut
    Salut Gorfael et le forum
    Pourquoi recopier une TextBox dans une autre ?
    Sur une macro automatique de ton contrôle, fait un remplissage de l'autre.
    peut tu m'expliquer la procédure sous vba?

    ce sont des essais que je fais pour trouver la meilleure solution a mon fichier, et sur un userform le textbox4 est celui sur lequel j'écris la qté d'article a mettre sur la facture, je voudrais que cette quantité soit déduite de la qté générale du stock, mais correspondant a la ligne exact de l'article désigné
    le stock correspondant a l'article est également inscrit dans d'autres textbox dont le textbox_qte_stock qui affiche la qte de l'article choisi

    mais maintenant que tu as plus de renseignement si tu a mieux?
    cordialement

    Pascal

  4. #4
    Membre Expert
    Profil pro
    Inscrit en
    Juillet 2007
    Messages
    2 130
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2007
    Messages : 2 130
    Par défaut
    Salut grisan29 et le forum
    faut arrêter de croire qu'on est derrière toi. C'est comme pour une interro de maths : le sujet est écrit au tableau et rien de ce qui n'est pas écrit est évident. Alors si le sujet n'est pas clair, nous on ne risque pas le zéro si on est à coté de la plaque, mais, toi, tu risques de l'attendre ta solution.
    peut tu m'expliquer la procédure sous vba ?
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    me.textbox4=me.textbox3
    mettra le code de la textbox3 dans la textbox4
    le textbox4 est celui sur lequel j'écris la qté d'article a mettre sur la facture
    Jusqu'à là, je pense comprendre.
    je voudrais que cette quantité soit déduite de la qté générale du stock
    Il faut touver la quantité du stock : c'est une simple recherche avec .Find, si on a un identifiant correct de l'article. Une fois qu'on a la quantité, il faut convertir la valeur de la textbox4 en nombre (avec Cint, CLng ou Cdbl), faire la soustraction, avec ou sans messages d'erreur, et afficher la valeur calculée à l'endroit adéquat.
    mais correspondant a la ligne exact de l'article désigné
    Là, me faudra un traducteur. comprend pas ce que ça veut peut bien vouloir dire.
    le stock correspondant a l'article est également inscrit dans d'autres textbox dont le textbox_qte_stock qui affiche la qte de l'article choisi
    Là, pareil. Je ne comprends pas où tu veux en venir.

    Comment je comprends le problème :
    Tu as un contrôle qui contient l'identifiant du produit.
    Quand tu inscris la quantité que tu veux sur un contrôle, une macro va chercher la quantité de disponible et donne la quantité restante.
    Si tu abandonnes, rien ne se passe au niveau de la feuille de stock.
    Si tu valides la transaction :
    - l'identifiant et la quantité demandée vont sur la feuille facture
    - la feuille stock est mise à jour, à l'aide de la valeur calculée.

    Les inconvénients :
    - Que se passe-t-il si la facture est annulée ? Une des solution consiste à créer un historique des transactions positives/négatives avec les valeurs de stock.
    - Le séparateur décimal est une virgule et les TextBox contiennent du texte (le point du pavé numérique reste un point), créant des erreurs de type. Une solution consiste à transformer les points des TextBox devant recevoir des nombres en virgule.

    Quelques idées en vrac :
    - l'identifiant est donné par une combobox, alimentée à chaque ouverture de l'USF avec les produits dont le stock est supérieur à 0.
    Ça évite de demander les produits non disponibles, et les erreurs d'éciture.
    - Le choix de l'identifiant donne automatiquement la valeur du stock restant et déverrouille la textbox quantité
    Évite de mettre une quantité avant de choisir le produit, et permet de savoir la quantité max possible.
    - Interdire les valeurs conduisant à un stock négatif.
    J'aime pas les stocks négatifs, mais c'est une opinion personnelle.
    - Prévoir ce qu'il faut faire en cas d'erreur.
    Les personnes qui ont accès à toutes les feuilles (et oui, si on veut que ça fonctionne, il faut penser à ce que ce ne soit pas toujours toi qui t'en occupe, les vacances (les accidents), ça existe, les sauvegardes (qui, quand et quoi). Comment on récupère une erreur (pour un "sabotage", il n'y a pas beaucoup de solution).
    - Les modifications possibles, les plus probables.
    Et oui, quand ça fonctionne bien, il se trouve toujours quelqu'un pour demander si on ne pourrait pas faire... (des exemples : lié le produit à un/plusieurs fournisseurs, un/plusieurs tarif, changement d'identifiant, réservation de produit, commandes automatiques suivant débits/niveaux/temps de réapprovisionnement). Tout n'est pas envisageable, Excel n'étant pas réellement fait pour travailler en base de données.
    Il faut que le code soit suffisamment renseigné, pour qu'un problème survenant quelques mois après la finalisation du code puisse être résolu, sans devoir perdre trop de temps pour le redécouvrir (hé oui, on oublie trop vite)
    A+

  5. #5
    Membre éclairé Avatar de grisan29
    Homme Profil pro
    ouvrier poseur
    Inscrit en
    Octobre 2006
    Messages
    866
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Finistère (Bretagne)

    Informations professionnelles :
    Activité : ouvrier poseur
    Secteur : Bâtiment

    Informations forums :
    Inscription : Octobre 2006
    Messages : 866
    Par défaut
    bonjour Gorfael et le forum

    excuse moi de te prendre pour un prof de math, mais l'élève que je suis va essayer de se débrouiller par ses petites connaissances.

    je joint une image de ce que je veux qui est rapport avec le code ci dessous http://www.cijoint.fr/cjlink.php?fil...cijaLtWwBc.jpg
    le textbox qté en stock affiche la qté de l'article qui est dans le même frame
    ce que je voudrais c'est que la valeur du textbox qté en stock diminue de la qté inscrite dans le textbox qté(en bas droit de l'image)
    voici le code complet de la feuille concernée
    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
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    112
    113
    114
    115
    116
    117
    118
    119
    120
    121
    122
    123
    124
    125
    126
    127
    128
    129
    130
    131
    132
    133
    134
    135
    136
    137
    138
    139
    140
    141
    142
    143
    144
    145
    146
    147
    148
    149
    150
    151
    152
    153
    154
    155
    156
    157
    158
    159
    160
    161
    162
    163
    164
    165
    166
    167
    168
    169
    170
    171
    172
    173
    174
    175
    176
    177
    178
    179
    180
    181
    182
    183
    184
    185
    186
    187
    188
    189
    190
    191
    192
    193
    194
    195
    196
    197
    198
    199
    200
    201
    202
    203
    204
    205
    206
    207
    208
    209
    210
    211
    212
    213
    214
    215
    216
    217
    218
    219
    220
    221
    222
    223
    224
    225
    226
    227
    228
    229
    230
    231
    232
    233
    234
    235
    236
    237
    238
    239
    240
    241
    242
    243
    244
    245
    246
    247
    248
    249
    250
    251
    252
    253
    254
    255
    256
    257
    258
    259
    260
    261
    262
    263
    264
    265
    266
    267
    268
    269
    270
    271
    272
    273
    274
    275
    276
    277
    278
    279
    280
    281
    282
    283
    284
    285
    286
    287
    288
    289
    290
    291
    292
    293
    294
    295
    296
    297
    298
    Public i, j, Délai, Lot, Qté_sto, Seuil, RefFrn, RefProd, Taille As Integer
    Public PUV As Double
     
    Private Sub CommandButton1_Click()
    Dim newLig As Long
    Dim result As String, OuEcrire() As String
     
    OuEcrire = Split(LigneSuivante, ",")
    newLig = CLng(OuEcrire(1))
     
    With Sheets(OuEcrire(0))
       .Range("C" & newLig).Value = TextBox1.Value ' designation
       .Range("I" & newLig).Value = TextBox2.Value ' prix
       .Range("J" & newLig).Value = TextBox5.Value ' unite
       .Range("K" & newLig).Value = TextBox4.Value ' qte
       .Range("L" & newLig).Value = .Range("K" & newLig).Value * .Range("I" & newLig).Value
       .Range("M" & newLig).Value = IIf(Me.OptionButton1, 1, 2)
       .Range("O" & newLig).Value = IIf(Me.OptionButton1, 0.055 * .Range("L" & newLig).Value, "")
       .Range("P" & newLig).Value = IIf(Me.OptionButton2, 0.196 * .Range("L" & newLig).Value, "")
       '.....
    End With
     
    TextBox1.Value = ""
    TextBox2.Value = ""
    TextBox5.Value = ""
    TextBox4.Value = ""
    Me.OptionButton7.Value = False
    End Sub
     
    Private Sub UserForm_Initialize()
     
        'Pour afficher la dernière saisie
        i = 2
        While Feuil11.Cells(i, 1) <> ""
            i = i + 1
        Wend
        i = i - 1
        SpinButton1.Value = i
     
        Frame2.Visible = False
        Frame3.Visible = False
        Me.OptionButton1.Value = True
    End Sub
     
    Private Sub SpinButton1_Change()
     
        i = SpinButton1.Value
        'Empêche de trop remonter
        If i < 2 Then
            i = 2
            SpinButton1.Value = i
        End If
        'récup les infos
        If i > 1 Then
            RefProd = Feuil5.Cells(i, 1)
            TextBox_Num_série = Feuil5.Cells(i, 2)
            TextBox_Nom_prod = Feuil5.Cells(i, 3)
            TextBox1 = Feuil5.Cells(i, 3)
            TextBox_Desc = Feuil5.Cells(i, 4)
            TextBox_Cat = Feuil5.Cells(i, 5)
            TextBox_Taille = Feuil5.Cells(i, 6)
            TextBox2 = Feuil5.Cells(i, 6)
            TextBox_Qté_sto = Feuil5.Cells(i, 7)
     
            TextBox_Seuil = Feuil5.Cells(i, 9)
     
            TextBox_PUV = Feuil5.Cells(i, 11)
            TextBox5 = Feuil5.Cells(i, 11)
            RefFrn = Feuil5.Cells(i, 12)
            TextBox_PUA = Feuil5.Cells(i, 13)
            TextBox_Délai = Feuil5.Cells(i, 14)
        End If
     
        'Vide si pas de produit
        If RefProd = 0 Then
            TextBox_Num_série = ""
            TextBox_Nom_prod = ""
            TextBox_Desc = ""
            TextBox_Cat = ""
            TextBox_Taille = ""
            TextBox_Qté_sto = ""
     
            TextBox_Seuil = ""
     
            TextBox_PUV = ""
            TextBox_Nom_Frn = ""
            TextBox_Num_Frn = ""
            RefFrn = 0
            TextBox_PUA = ""
            TextBox_Délai = ""
            TextBox_Qté_sto.Font.Bold = False
            TextBox_Qté_sto.BackColor = &H8000000F
            Exit Sub
        End If
     
        'Affiche si stock égale zéro
        If TextBox_Qté_sto = 0 Then
            TextBox_Qté_sto.Font.Bold = True
            TextBox_Qté_sto.BackColor = vbRed
        Else
            TextBox_Qté_sto.Font.Bold = False
            TextBox_Qté_sto.BackColor = &H8000000F
        End If
     
        'Affiche le nom du fournisseur
        j = 2
        While Feuil11.Cells(j, 1) <> ""
            If Feuil11.Cells(j, 1) = RefFrn Then
                TextBox_Nom_Frn = Feuil11.Cells(j, 2)
            End If
            j = j + 1
       Wend
     
        Button_Valider.Visible = False
        Button_Créer.Visible = True
     
    End Sub
     
    Private Sub TextBox_Nom_frn_Change()
     
        'Affiche le nom du fournisseur
        j = 2
        While Feuil11.Cells(j, 1) <> ""
            If Feuil11.Cells(j, 2) = TextBox_Nom_Frn Then
                RefFrn = Feuil11.Cells(j, 1)
                TextBox_Num_Frn = RefFrn
                Exit Sub
            End If
            j = j + 1
        Wend
     
    End Sub
     
    Private Sub CheckBox_Frn_Click()
     
        If CheckBox_Frn = True Then
            Frame3.Visible = True
        Else
            Frame3.Visible = False
        End If
     
    End Sub
     
    Private Sub CheckBox_Réappro_Click()
     
        If CheckBox_Réappro = True Then
            Frame2.Visible = True
        Else
            Frame2.Visible = False
        End If
     
    End Sub
     
    Private Sub Button_Créer_Click()
     
        i = 2
        While Feuil5.Cells(i, 1) <> ""
            i = i + 1
        Wend
        SpinButton1.Value = i
     
        Button_Créer.Visible = False
        Button_Valider.Visible = True
     
    End Sub
     
    Private Sub Button_Valider_Click()
     
        'Enregistre les info
        If TextBox_Num_série <> "" Then
            RefProd = Feuil5.Cells(i - 1, 1) + 1
            Feuil5.Cells(i, 1) = RefProd
            Feuil5.Cells(i, 2) = TextBox_Num_série
            Feuil5.Cells(i, 3) = TextBox_Nom_prod
            Feuil5.Cells(i, 4) = TextBox_Desc
            Feuil5.Cells(i, 5) = TextBox_Cat
            Dim Taille As Integer
            If TextBox_Taille <> "" Then
                Taille = TextBox_Taille
            End If
            Feuil5.Cells(i, 6) = Taille
            Feuil5.Cells(i, 7) = 0
     
            Seuil = TextBox_Seuil
            Feuil5.Cells(i, 9) = Seuil
     
            If TextBox_PUV <> "" Then
                PUV = TextBox_PUV
            End If
            Feuil5.Cells(i, 11) = PUV
            Feuil5.Cells(i, 12) = RefFrn
            Dim PUA As Double
            If TextBox_PUA <> "" Then
                PUA = TextBox_PUA
            End If
            Feuil5.Cells(i, 13) = PUA
            Délai = TextBox_Délai
            Feuil5.Cells(i, 14) = Délai
     
        End If
     
        Button_Valider.Visible = False
        Button_Créer.Visible = True
     
    End Sub
     
    Private Sub Button_Suppr_Click()
     
        If RefProd <> 0 Then
            Dim Msg, Style, Ctxt, Response
            Msg = "Voulez vous vraiment supprimer ce produit?"
            Style = vbYesNo + vbCritical + vbDefaultButton2
            Response = MsgBox(Msg, Style)
            If Response = vbYes Then
                Feuil5.Rows(i).Delete
                i = i - 1
                SpinButton1.Value = i
            Else
                Exit Sub
            End If
        End If
     
    End Sub
     
    Private Sub Button_Rechercher_Click()
     
        i = 2
        While Feuil5.Cells(i, 1) <> ""
            If TextBox_Num_série <> "" And TextBox_Taille <> "" Then
                Dim Taille As Integer
                If TextBox_Taille <> "" Then
                Taille = TextBox_Taille
                End If
                If Feuil5.Cells(i, 2) = TextBox_Num_série And Feuil5.Cells(i, 6) = Taille Then
                    SpinButton1.Value = i
                    Exit Sub
                End If
            End If
            i = i + 1
        Wend
     
        Button_Valider.Visible = False
        Button_Créer.Visible = True
     
    End Sub
     
    Private Sub Button_Modifier_Click()
     
        If RefProd <> 0 Then
            Dim Msg, Style, Ctxt, Response
            Msg = "Voulez vous vraiment modifier ce produit?"
            Style = vbYesNo + vbCritical + vbDefaultButton2
            Response = MsgBox(Msg, Style)
            If Response = vbYes Then
                Feuil5.Cells(i, 2) = TextBox_Num_série
                Feuil5.Cells(i, 3) = TextBox_Nom_prod
                Feuil5.Cells(i, 4) = TextBox_Desc
                Feuil5.Cells(i, 5) = TextBox_Cat
                Dim Taille As Integer
                If TextBox_Taille <> "" Then
                    Taille = TextBox_Taille
                End If
                Feuil5.Cells(i, 6) = Taille
                Qté_sto = TextBox_Qté_sto
                Feuil5.Cells(i, 7) = Qté_sto
     
                Seuil = TextBox_Seuil
                Feuil5.Cells(i, 9) = Seuil
     
                If TextBox_PUV <> "" Then
                    PUV = TextBox_PUV
                End If
                Feuil5.Cells(i, 11) = PUV
                Feuil5.Cells(i, 12) = RefFrn
                Dim PUA As Double
                If TextBox_PUA <> "" Then
                    PUA = TextBox_PUA
                End If
                Feuil5.Cells(i, 13) = PUA
                Délai = TextBox_Délai
                Feuil5.Cells(i, 14) = Délai
            Else
                Exit Sub
            End If
        End If
     
        Button_Valider.Visible = False
        Button_Créer.Visible = True
     
    End Sub
     
    Private Sub Button_Quitter_Click()
     
        Button_Créer.Visible = True
        Button_Valider.Visible = False
        UserForm5_stock_plomb.Hide
     
    End Sub
    excusez-moi du dérangement

    cordialement

    Pascal

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

Discussions similaires

  1. Problème de valeur sur un userforme.
    Par a.ouguerzam dans le forum Macros et VBA Excel
    Réponses: 10
    Dernier message: 04/12/2014, 16h27
  2. Boucle sur récupération de valeurs sur un UserForm
    Par Invité dans le forum Macros et VBA Excel
    Réponses: 9
    Dernier message: 09/05/2010, 22h10
  3. [XSLT]Sort sur un attribut dont la valeur est en param
    Par Trin dans le forum XSL/XSLT/XPATH
    Réponses: 3
    Dernier message: 07/11/2005, 16h16
  4. Réponses: 4
    Dernier message: 14/10/2005, 16h34
  5. [Excel VBA] Boucler sur un userform
    Par tpv72 dans le forum Macros et VBA Excel
    Réponses: 1
    Dernier message: 21/09/2005, 01h57

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