Modifier la valeur d'une listbox

Résolu
leyjah Messages postés 16 Statut Membre -  
pijaku Messages postés 13513 Date d'inscription   Statut Modérateur Dernière intervention   -
Bonjour,
je sollicite votre aide parce que j'ai un petit souci avec mon appli.
Voici ce qui en est:
1. j'ai 2 userform: CLIENTS et modification
2. Dans CLIENTS, j'ai trois zone de liste, zn1 (produits), zn2 (quantité) zn3 (montant), un bouton de commande (MODIFIER).
3. grâce à MODIFIER, les valeurs sélectionnées en zn1, 2 et 3 sont transférés dans des zone de texte dans un userf modification.
CODE:
Private Sub CommandButton1_Click()
modification.zdt1 = zn1.Value
modification.zdt2 = zn2.Value
modification.zdt3 = zn3.Value
modification.Show
End Sub

Ce que je souhaiterai c'est que:
si je modifie les valeurs inscrite dans les zones de texte (zdt1, 2 et 3) de modification elle sont mise à jour dans les zones de liste (zn1, 2 et 3) de CLIENTS.
CODE TEST:
Private Sub CommandButton1_Click()
CLIENTS.zn1.RemoveItem
CLIENTS.zn2.RemoveItem
CLIENTS.zn3.RemoveItem

CLIENTS.zn1.AddItem zdt1.Value
CLIENTS.zn2.AddItem zdt2.Value
For i = 2 To 46
If zdt1.Value = Cells(i, 1) Then
CLIENTS.zn3.AddItem (zdt2.Value * Cells(i, 3))
End If
Next
modification.Hide
End Sub

MERCI POUR TOUTE L'AIDE DE VOUS POURRAI M'APPORTER

CDLT.

5 réponses

  1. pijaku Messages postés 13513 Date d'inscription   Statut Modérateur Dernière intervention   2 773
     
    Bonjour,

    Voici comment je procèderai :
    1- création d'un module standard
    2- dans ce module, déclarer 3 variables public :
    Public Var1 As String 
    Public Var2 As String 
    Public Var3 As String


    3- Le code du bouton de l'userufom CLIENTS devient :
    Private Sub CommandButton1_Click()
    Var1 = zn1.Value
    Var2 = zn2.Value
    Var3 = zn3.Value
    With modification
        .zdt1 = zn1.Value
        .zdt2 = zn2.Value
        .zdt3 = zn3.Value
        .Show
    End With
    End Sub

    4- le code du bouton "Modifier" dans l'userform "modification" :
    Private Sub CommandButton1_Click() 
    Dim i As Integer 
    
    With CLIENTS 
        For i = 0 To .zn1.ListCount - 1 
            If .zn1.List(i) = Var1 Then .zn1.List(i) = zdt1.Value 
        Next i 
        For i = 0 To .zn2.ListCount - 1 
            If .zn2.List(i) = Var2 Then .zn2.List(i) = zdt2.Value 
        Next i 
        For i = 0 To .zn3.ListCount - 1 
            If .zn3.List(i) = Var3 Then .zn3.List(i) = zdt3.Value 
        Next i 
        modification.Hide 
    End With 
    End Sub

    5- subsidiaire : il faudrait éventuellement empêcher la saisie, dans les textbox, d'un item déjà existant dans les listbox... Ou pas!
    Cordialement,
    Franck P
    0
    1. leyjah Messages postés 16 Statut Membre
       
      merci beaucoup Frank P,

      ça fonctionne parfaitement.

      CDLT

      Leyjah
      0
  2. leyjah Messages postés 16 Statut Membre
     
    non pas spécialement.
    0
  3. leyjah Messages postés 16 Statut Membre
     
    j'ai encore un petit problème qui persiste:
    à ce niveau là :
    Private Sub CommandButton1_Click()
    Dim i As Integer

    With CLIENTS
    For i = 0 To .zn1.ListCount - 1
    If .zn1.List(i) = Var1 Then .zn1.List(i) = zdt1.Value
    Next i
    For i = 0 To .zn2.ListCount - 1
    If .zn2.List(i) = Var2 Then .zn2.List(i) = zdt2.Value
    Next i
    For i = 0 To .zn3.ListCount - 1
    If .zn3.List(i) = Var3 Then .zn3.List(i) = zdt3.Value
    Next i

    modification.Hide
    End With

    zdt3.value en général contient un produit (la valeur de la zdt2 * une valeur présente dans une cellule de ma feuille de calcul).

    Est-ce que tu peux m'éclairer un peu STP.

    CDLT
    0
    1. pijaku Messages postés 13513 Date d'inscription   Statut Modérateur Dernière intervention   2 773
       
      Bonjour,

      Suffit, une fois zn2 modifié, de multiplier sa valeur par la valeur contenue dans la cellule.

      Private Sub CommandButton1_Click() 
      Dim i As Integer 
      
      With CLIENTS 
          For i = 0 To .zn1.ListCount - 1 
              If .zn1.List(i) = Var1 Then .zn1.List(i) = zdt1.Value 
          Next i 
          For i = 0 To .zn2.ListCount - 1 
              If .zn2.List(i) = Var2 Then 
                  .zn2.List(i) = zdt2.Value
                  .zn3.List(i) = zdt2.Value * Sheets("Machin").Range("Truc")
              End If
          Next i
          modification.Hide 
      End With 
      0
  4. leyjah Messages postés 16 Statut Membre
     
    http://cjoint.com/data/0Dto1NU7Kbu.htm

    ainsi tu comprendra peut être mieux ce que je souhaite parce que ça:
    .zn3.List(i) = zdt2.Value * Sheets("Machin").Range("Truc")

    ne pourra pas fonctionné puisque les cellules varient en fonction du produit sélectionné.

    Cdlt

    Leyjah
    0
  5. Vous n’avez pas trouvé la réponse que vous recherchez ?

    Posez votre question
  6. pijaku Messages postés 13513 Date d'inscription   Statut Modérateur Dernière intervention   2 773
     
    En effet.
    Alors tu dois :
    - insérer un module (Insertion/module sous VBE)
    y placer ces déclarations :
    Public Var1 As String
    Public Var2 As String
    Public Var3 As String

    2- le bouton Modifier de l'Userform Clients devient:
    Private Sub CommandButton1_Click()
    Var1 = zn1.Value
    Var2 = zn2.Value
    Var3 = zn3.Value
    With modification
        .zdt1 = zn1.Value
        .zdt2 = zn2.Value
        .zdt3 = zn3.Value
        .Show
    End With
    End Sub

    3- le bouton Modifier de l'Userform modifications devient :
    Private Sub CommandButton1_Click()
    Dim i As Integer, Prix As Double, Trouve As Range
    
    'va chercher la cellule colonne A contenant la sélection dans la list zn1
    With Sheets("Feuil1")
        Set Trouve = .Columns(1).Cells.Find(Var1, lookat:=xlWhole)
    End With
    's'il trouve alors on stocke dans prix le contenu de la colonne C correspondant Sinon on ne fait rien de plus
    If Not Trouve Is Nothing Then Prix = Trouve.Offset(0, 2).Value Else Exit Sub
    With CLIENTS
        For i = 0 To .zn1.ListCount - 1
            If .zn1.List(i) = Var1 Then .zn1.List(i) = zdt1.Value
        Next i
        For i = 0 To .zn2.ListCount - 1
            If .zn2.List(i) = Var2 Then
                .zn2.List(i) = zdt2.Value
                .zn3.List(i) = zdt2.Value * Prix
            End If
        Next i
        modification.Hide
    End With
    End Sub 

    Ton fichier exemple en retour
    0
    1. leyjah Messages postés 16 Statut Membre
       
      Formidable merci BEAUCOUP Pijaku, c parfait

      Cordialement

      Leyjah
      0
    2. pijaku Messages postés 13513 Date d'inscription   Statut Modérateur Dernière intervention   2 773
       
      Mais de rien.
      A+ n'hésite pas.
      0