Modifier la valeur d'une listbox

Résolu/Fermé
leyjah Messages postés 16 Date d'inscription mardi 16 avril 2013 Statut Membre Dernière intervention 24 avril 2013 - 22 avril 2013 à 17:26
pijaku Messages postés 12263 Date d'inscription jeudi 15 mai 2008 Statut Modérateur Dernière intervention 4 janvier 2024 - 25 avril 2013 à 08:36
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.



A voir également:

5 réponses

pijaku Messages postés 12263 Date d'inscription jeudi 15 mai 2008 Statut Modérateur Dernière intervention 4 janvier 2024 2 743
Modifié par pijaku le 23/04/2013 à 10:08
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
leyjah Messages postés 16 Date d'inscription mardi 16 avril 2013 Statut Membre Dernière intervention 24 avril 2013
23 avril 2013 à 19:09
merci beaucoup Frank P,

ça fonctionne parfaitement.

CDLT

Leyjah
0
leyjah Messages postés 16 Date d'inscription mardi 16 avril 2013 Statut Membre Dernière intervention 24 avril 2013
23 avril 2013 à 18:55
non pas spécialement.
0
leyjah Messages postés 16 Date d'inscription mardi 16 avril 2013 Statut Membre Dernière intervention 24 avril 2013
23 avril 2013 à 19:26
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
pijaku Messages postés 12263 Date d'inscription jeudi 15 mai 2008 Statut Modérateur Dernière intervention 4 janvier 2024 2 743
24 avril 2013 à 08:42
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
leyjah Messages postés 16 Date d'inscription mardi 16 avril 2013 Statut Membre Dernière intervention 24 avril 2013
24 avril 2013 à 15:27
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

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
pijaku Messages postés 12263 Date d'inscription jeudi 15 mai 2008 Statut Modérateur Dernière intervention 4 janvier 2024 2 743
24 avril 2013 à 15:45
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
leyjah Messages postés 16 Date d'inscription mardi 16 avril 2013 Statut Membre Dernière intervention 24 avril 2013
24 avril 2013 à 19:41
Formidable merci BEAUCOUP Pijaku, c parfait

Cordialement

Leyjah
0
pijaku Messages postés 12263 Date d'inscription jeudi 15 mai 2008 Statut Modérateur Dernière intervention 4 janvier 2024 2 743
25 avril 2013 à 08:36
Mais de rien.
A+ n'hésite pas.
0