Transfert donnée vers listbox avec soustraction

Bonjour,

Mon soucis

est le suivant:

J'ai un userform avec 2 listbox.

Dans la première listbox, j'ai des données et dans ma deuxième, j'ai rien au début.

J'aimerais quand je sélectionne une données dans ma listbox1 que celle-ci ce dirige vers la listbox2 (pour cela pas de soucis)

Cependant, j'arrive pas à faire la soustraction de ma donnée 1 vers la listbox2

Exemple:

Dans ma listbox1 j'ai:

1 test1

2 test2

3 test3

quand je clic sur 2 test2 par exemple

j'aimerais que dans ma listbox2 ça s'affiche 1 test2 et bien entendu comme il y en avait 2 dans ma listbox1, il me reste 1 test2

Dans le cas de 3 test3

si je clic dessus, il me resterait 2 test3 dans listbox1 et 1 test3 dans ma listbox2

En espérant m'être bien fais comprendre

Merci à tous

Bonjour,

Voici le bouton de LB1 vers LB2 >>

Private Sub CommandButton1_Click()

    If ListBox1.ListIndex = -1 Then Exit Sub
    ListBox2.AddItem ListBox2.ListCount + 1
    ListBox2.List(ListBox2.ListCount - 1, 1) = ListBox1.Column(1, ListBox1.ListIndex)
    ListBox1.RemoveItem ListBox1.ListIndex

End Sub

ric

Bonjour Ric,

ça marche pas.

Me suis peut-être mas exprimé

listbox 1 listbox 2

1 test1

2 test2

3 test3

si je sélectionne

1 test1 dans ma listbox1

le résultat devrais être

listbox 1 listbox 2

2 test2 1 test1

3 test3

si je sélectionne après 3 test3 dans ma listbox1

le résultat devrais être

listbox 1 listbox 2

2 test2 1 test1

2 test3 1 test3

si je re sélectionne 2 test3 dans ma listbox1

le résultat devrais être

listbox 1 listbox 2

2 test2 1 test1

1 test3 2 test3

Et ainsi de suite

J'espère m'être mieux fais comprendre

En vous remerciant

Bonjour,

Ah! la première colonne correspond à une quantité ... là, c'est plus clair ...

ric

Bonjour,

Oui

Merci

Bonjour,

Pour l'instant, je patine et jongle avec quelques idées ...

Je ne sais pas si je vais trouver une solution ...

Pour l'instant, je vois cela complexe à l'échelle de mes faibles connaissances ...

ric

Bonjour,

Eh bien! ... il semble que cela va fonctionner ...

Si ce code te convient, il ne restera qu'à copier le code du bouton1 dans le bouton 2 et d'inverser le numéro des listbox ...

Listbox1 devient Listbox2 et Listbox2 devient Listbox1 > après ce pugilat >> le souci devrait être KO >> et ça devrait fonctionner dans les deux sens ...

Allonge un peu les deux listbox ... ce sera plus agréable à l'oeil ...

Un essai ...

Private Sub CommandButton1_Click()

    If Me.ListBox1.ListIndex = -1 Then Exit Sub

    If Me.ListBox2.ListCount > 0 Then
        For x = 0 To Me.ListBox2.ListCount - 1
            If Me.ListBox1.Column(1, Me.ListBox1.ListIndex) = Me.ListBox2.Column(1, x) Then
            Me.ListBox2.Column(0, x) = Me.ListBox2.Column(0, x) + 1
            Me.ListBox1.List(Me.ListBox1.ListIndex, 0) = Me.ListBox1.List(Me.ListBox1.ListIndex, 0) - 1
            If Me.ListBox1.List(Me.ListBox1.ListIndex, 0) = 0 Then Me.ListBox1.RemoveItem Me.ListBox1.ListIndex
            Exit Sub
        End If
    Next x

    Me.ListBox2.AddItem
    Me.ListBox2.List(Me.ListBox2.ListCount - 1, 0) = 1
    Me.ListBox2.List(Me.ListBox2.ListCount - 1, 1) = Me.ListBox1.Column(1, Me.ListBox1.ListIndex)
    Me.ListBox1.List(Me.ListBox1.ListIndex, 0) = Me.ListBox1.List(Me.ListBox1.ListIndex, 0) - 1
Else
    Me.ListBox2.AddItem
    Me.ListBox2.List(Me.ListBox2.ListCount - 1, 0) = 1
    Me.ListBox2.List(Me.ListBox2.ListCount - 1, 1) = Me.ListBox1.Column(1, Me.ListBox1.ListIndex)
    Me.ListBox1.List(Me.ListBox1.ListIndex, 0) = Me.ListBox1.List(Me.ListBox1.ListIndex, 0) - 1
End If
End Sub

ric

Re,

C'est super, encore mille merci

Cependant, j'ai remarqué quelque chose.

Si le chiffre de départ est supérieur à 1, tous marche super bien, quand j'arrive à 1 et que je reclic dessus la ligne s'efface et mets la totalité à droite.

Cependant, si le chiffre de départ est égal à 1, sa marche bien, mais au lieu de s'effacer, elle marque zéro et la on peux continuer et marquera -1

ça serais bien que même si le chiffre de départ est égal à 1 quand je le sélectionne après elle s'efface comme les autres lignes

Encore merci

Bonjour,

Désolé pour ce petit souci ... je regarde la chose ...

ric

Bonjour,

C'est 2 ajouts devraient être bénéfiques afin de tendre vers le succès.

Private Sub CommandButton1_Click()

    If Me.ListBox1.ListIndex = -1 Then Exit Sub

    If Me.ListBox2.ListCount > 0 Then
        For x = 0 To Me.ListBox2.ListCount - 1
            If Me.ListBox1.Column(1, Me.ListBox1.ListIndex) = Me.ListBox2.Column(1, x) Then
            Me.ListBox2.Column(0, x) = Me.ListBox2.Column(0, x) + 1
            Me.ListBox1.List(Me.ListBox1.ListIndex, 0) = Me.ListBox1.List(Me.ListBox1.ListIndex, 0) - 1
            If Me.ListBox1.List(Me.ListBox1.ListIndex, 0) = 0 Then Me.ListBox1.RemoveItem Me.ListBox1.ListIndex
            Exit Sub
        End If
    Next x

    Me.ListBox2.AddItem
    Me.ListBox2.List(Me.ListBox2.ListCount - 1, 0) = 1
    Me.ListBox2.List(Me.ListBox2.ListCount - 1, 1) = Me.ListBox1.Column(1, Me.ListBox1.ListIndex)
    Me.ListBox1.List(Me.ListBox1.ListIndex, 0) = Me.ListBox1.List(Me.ListBox1.ListIndex, 0) - 1
   If Me.ListBox1.List(Me.ListBox1.ListIndex, 0) = 0 Then Me.ListBox1.RemoveItem Me.ListBox1.ListIndex ' <<< ajout

Else
    Me.ListBox2.AddItem
    Me.ListBox2.List(Me.ListBox2.ListCount - 1, 0) = 1
    Me.ListBox2.List(Me.ListBox2.ListCount - 1, 1) = Me.ListBox1.Column(1, Me.ListBox1.ListIndex)
    Me.ListBox1.List(Me.ListBox1.ListIndex, 0) = Me.ListBox1.List(Me.ListBox1.ListIndex, 0) - 1
    If Me.ListBox1.List(Me.ListBox1.ListIndex, 0) = 0 Then Me.ListBox1.RemoveItem Me.ListBox1.ListIndex ' <<< ajout
End If
End Sub

ric

Re,

C'est super

J'arrive avec les deux sens

Mille merci pour votre aide

ric

Merci

Rechercher des sujets similaires à "transfert donnee listbox soustraction"