Modifier la valeur d'une listbox [Résolu/Fermé]

Signaler
Messages postés
16
Date d'inscription
mardi 16 avril 2013
Statut
Membre
Dernière intervention
24 avril 2013
-
Messages postés
12247
Date d'inscription
jeudi 15 mai 2008
Statut
Modérateur
Dernière intervention
10 février 2021
-
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

Messages postés
12247
Date d'inscription
jeudi 15 mai 2008
Statut
Modérateur
Dernière intervention
10 février 2021
2 575
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
Messages postés
16
Date d'inscription
mardi 16 avril 2013
Statut
Membre
Dernière intervention
24 avril 2013

merci beaucoup Frank P,

ça fonctionne parfaitement.

CDLT

Leyjah
Messages postés
16
Date d'inscription
mardi 16 avril 2013
Statut
Membre
Dernière intervention
24 avril 2013

non pas spécialement.
Messages postés
16
Date d'inscription
mardi 16 avril 2013
Statut
Membre
Dernière intervention
24 avril 2013

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
Messages postés
12247
Date d'inscription
jeudi 15 mai 2008
Statut
Modérateur
Dernière intervention
10 février 2021
2 575
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 
Messages postés
16
Date d'inscription
mardi 16 avril 2013
Statut
Membre
Dernière intervention
24 avril 2013

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
Messages postés
12247
Date d'inscription
jeudi 15 mai 2008
Statut
Modérateur
Dernière intervention
10 février 2021
2 575
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
Messages postés
16
Date d'inscription
mardi 16 avril 2013
Statut
Membre
Dernière intervention
24 avril 2013

Formidable merci BEAUCOUP Pijaku, c parfait

Cordialement

Leyjah
Messages postés
12247
Date d'inscription
jeudi 15 mai 2008
Statut
Modérateur
Dernière intervention
10 février 2021
2 575
Mais de rien.
A+ n'hésite pas.