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 :

changer une valeur dans une textbox


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Juillet 2009
    Messages
    97
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2009
    Messages : 97
    Par défaut changer une valeur dans une textbox
    bonjour j'ai ce 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
     
    Private Sub UserForm_Initialize()
    Dim plage As Range
    cbxprix.Clear
     Range("a1").CurrentRegion.Select
     Set plage = Selection.Offset(0).Resize(1)
    Text = " son prix est de "
    Dim Cel As Range
    For Each Cel In plage
    If Cel.Text <> "" Then
            cbxprix.AddItem (Cel & Text & Cel.Offset(1, 0))
     End If
        Next Cel
    End Sub
    Je remplie ma combobox(cbxprix)avec les valeurs de la 1 et 2 ligne,quand les cellule ne sont pas vide.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    Private Sub cbxprix_Change()
    Text = " son prix est de "
    Tableau = Split(cbxprix, Text)
    txtprix.Text = Tableau(1)
    End Sub
    Quand je clique sur le text qu'il ya dans ma combobox,je prends la valeur qui est dans la 2_ème ligne et je la mets dans le txtbox.
    juque la tout va bien.
    le problème c'est quand je change la valeur dans le txtbox,je veux que cette valeur change la cellule d'ou elle fait partie et ça j'arrive pas a faire.
    peut être quelq'un a une solution.
    merci d'avance

  2. #2
    Membre Expert
    Profil pro
    Inscrit en
    Juin 2009
    Messages
    652
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Juin 2009
    Messages : 652
    Par défaut
    Bonjour,

    Une piste avec les codes suivants.

    J'ai supposé, d'après vos explications, que votre liste se situe en colonne A et commence en A1 et chaque ligne de la ComboBox
    correspond à 2 lignes de la feuille source (ce n'est pas de cette façon que j'aurais procédé mais vous devez avoir vos raisons).

    DEMARCHE
    1) créez une feuille nommée "test" et dans sa colonne A (à partir de A1) inscrivez des données (voir pièce jointe)
    2) créez un UserForm (Name = UserForm1) et une ComboBox (Name = cbxprix) ainsi qu'une TextBox (Name = txtPrix)
    3) copiez le code suivant dans la fenêtre de code du UserForm
    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
     
    Private Sub txtPrix_AfterUpdate()
    If IsNumeric(txtPrix) Then
      S.Range("a" & 2 + (cbxprix.ListIndex * 2) & "") = CDbl(txtPrix)
    Else
      S.Range("a" & 2 + (cbxprix.ListIndex * 2) & "") = txtPrix
    End If
    Call chargeComboBox
    txtPrix = ""
    End Sub
     
    Private Sub UserForm_Initialize()
    If S Is Nothing Then Set S = Sheets(MA_FEUILLE)
    Call chargeComboBox
    End Sub
     
    Private Sub cbxprix_Change()
    Dim A$
    Dim Tableau
    A$ = " son prix est de "
    Tableau = Split(cbxprix, A$)
    On Error Resume Next
    txtPrix.Text = Tableau(1)
    End Sub
     
    Private Sub chargeComboBox()
    Dim Plage As Range
    Dim Cel As Range
    Dim A$
    Dim i&
    cbxprix.Clear
    Set Plage = S.Range("a1").CurrentRegion
    A$ = " son prix est de "
    For i& = 1 To Plage.Rows.Count Step 2
      Set Cel = Plage.Cells(i&, 1)
      cbxprix.AddItem (Cel & A$ & Cel.Offset(1, 0))
    Next i&
    End Sub
    4) copiez le code suivant dans un module standard (adaptez, selon votre usage, la constante MA_FEUILLE cernée par des ###)
    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
     
    '### Constante à adapter ###
    Public Const MA_FEUILLE As String = "test"
    '###########################
     
    Public S As Worksheet
     
    Sub Launch_UserForm()
    '--- Vérification de l'existence de MA_FEUILLE ---
    On Error Resume Next
    Set S = Sheets(MA_FEUILLE)
    If S Is Nothing Then
      MsgBox "La feuille ''" & MA_FEUILLE & "'' est introuvable."
      Exit Sub
    End If
    On Error GoTo 0
    '-------------------------------------------------
    UserForm1.Show
    End Sub
    5) pour faire un test, il n'y a plus qu'à lancer la macro Launch_UserForm et changer la valeur de la TextBox qui se répercutera dans la feuille et la ComboBox

    Cordialement.

    PMO
    Patrick Morange

Discussions similaires

  1. Réponses: 1
    Dernier message: 13/04/2015, 11h17
  2. Réponses: 2
    Dernier message: 18/06/2009, 15h09
  3. Réponses: 1
    Dernier message: 20/11/2008, 02h17
  4. Recherche une valeur d'une cellule dans une colonne d'une autre feuille
    Par kourria dans le forum Macros et VBA Excel
    Réponses: 8
    Dernier message: 21/06/2007, 13h48
  5. Mettre une valeur d'une table dans une variable
    Par Raphou96 dans le forum Access
    Réponses: 5
    Dernier message: 06/02/2006, 15h19

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