Relation entre listbox et textbox

Hawkeye56

XLDnaute Junior
Bonsoir le forum,

J'essaie d'établir une relation entre une listbox contenant une série d'objets et une textbox dans laquelle je souhaite saisir la quantité de l'ojet qui sera choisi dans la listbox.

J'ai écris un code pour reporter ces indication dans un tableur mais ça ne fonctionne pas:

Private Sub CommandButton1_Click()
Dim ShtC As Worksheet
Set ShtC = Sheets("Casse")
With ShtG
'Transfert nom du bénéficiaire Col.B prochaine ligne vide
ShtC.Range("B65536").End(xlUp)(2).Value = TextBox1.Value

'Transfert Type
If ListBox1.Value = "Verres à pied" Then ShtC.Range("B65536").End(xlUp).Offset(0.1) = TextBox2.Value


Unloadme

End With
End sub


La ligne en rouge ne donne pas de résultat.
Suis-je clair dans ma demande?:)

Merci de votre aide
 

skoobi

XLDnaute Barbatruc
Re : Relation entre listbox et textbox

Bonjour,

As-tu un bug sur cette ligne où alors le résultat souhaité ne se produit pas?
Si c'est le cas 2 et bien il y a sans doute une raison à cela...
Sans le fichier difficile de t'aider plus.
 

Hawkeye56

XLDnaute Junior
Re : Relation entre listbox et textbox

Bonsoir Skoobi, ça faisait longtemps! :)

Pas de bug sur cette ligne, il ne se passe rien.
Voici le fichier.

Ca se passe sur l'onglet "Casse"

Merci de ton aide :)
 

Pièces jointes

  • Prêt.zip
    23.7 KB · Affichages: 75
  • Prêt.zip
    23.7 KB · Affichages: 74
  • Prêt.zip
    23.7 KB · Affichages: 75

bqtr

XLDnaute Accro
Re : Relation entre listbox et textbox

Bonsoir Hawkeye56, skoobi,

Essaye avec ceci :

Code:
Private Sub CommandButton1_Click()

With Sheets("Casse")
  .Range("B65536").End(xlUp).Offset(1, 0) = TextBox1.Value
  .Cells(.Range("B65536").End(xlUp).Row, ListBox1.ListIndex + 3) = TextBox2
End With
Unload Me

End Sub
Par contre il faut sélectionner l'élément dans la Listbox pour avoir l'index qui déterminera la colonne de la feuille.
La plage CE2:CE7 doit être correctement renseignée, sur ton fichier elle est incomplète et y a des vides.


A+
 

Hawkeye56

XLDnaute Junior
Re : Relation entre listbox et textbox

Bonjour le Forum, BQTR :)

Bqtr, merci de ton aide mais je me suis mal exprimé.

Ce que je souhaite:

selon le choix fait dans la list box, la qté saisie dans la textbox 2 doit être transférée dans la colonne correspondante (par ex: Flutes = qté :5 alors le 5 doit être transféré dans la colonne D ce qui permet de faire un total par type de verre qui apparait en D1)

PS: J'ai complété la plage CE2:CE7 c'était du à des essais infructueux, merci de me l'avoir signalé.

A+ :)
 

bqtr

XLDnaute Accro
Re : Relation entre listbox et textbox

Re,

C'est pourtant bien ce que fait le code du bouton, sauf pour le calcul il faut convertir le contenu du textbox2 comme ceci :
Code:
'.../...
 .Cells(.Range("B65536").End(xlUp).Row, ListBox1.ListIndex + 3) = [B]CDbl[/B](TextBox2)
'.../...

Autrement la quantité va bien dans la colonne de l'item sélectionné dans la listbox. :confused:

Je te joins le fichier.

A+
 

Pièces jointes

  • 1Prêt de vaisselle.zip
    22.1 KB · Affichages: 79

Hawkeye56

XLDnaute Junior
Re : Relation entre listbox et textbox

Bonsoir bqtr,

Je viens d'essayer avec le fichier que tu as modifié.

Ce que j'obtiens c'est le contenu de la textbox qui est transféré ds la colonne B à la place du bénéficiaire.
Nos différentes versions d'excel sont elles responsables de ces résultats différents?

La ligne de code que tu as écrit me dépasse, je ne la comprends pas. :confused:
Faut il l'adapter pour chaque valeur de la listbox?
 

bqtr

XLDnaute Accro
Re : Relation entre listbox et textbox

Re,

Il faut que tu sélectionnes l'élément dans la listbox (click dessus).
Cela te donne l'index (le n° ou la position) de l'élément dans la liste. (0 pour le 1er (Verres à pied), 1 pour le 2ème (Flûtes) .../...)
Pour trouver la colonne correspondante tu rajoutes 3 car la 1ère colonne du tableau est la colonne C.

Exemple pour trouver la colonne des Verres à pied :
- Colonne à remplir : colonne C (3ème colonne),
- Verres à pied est le 1er élément de la listbox donc il a pour index 0
- 0+3 = 3 soit colonne C

Pour les Flûtes
- Colonne à remplir : colonne D (4ème colonne)
- Flûtes est le 2ème élément de la listbox donc il a pour index 1
- 1+3 = 4 soit colonne D

.Range("B65536").End(xlUp).Offset(1, 0) = TextBox1.Value

Cette ligne ne doit pas te poser de problème, elle détermine la première cellule vide de la colonne B en partant du bas.

.Cells(.Range("B65536").End(xlUp).Row, ListBox1.ListIndex + 3) = CDbl(TextBox2)

Pour celle-ci : utilisation de Cells(n° de ligne, n° de colonne) à la place de Range().

- Le n° de ligne est donné par .Range("B65536").End(xlUp).Row
Dernière linge non vide de la colonne B en partant du bas.

- Le n° de la colonne est donné par : ListBox1.ListIndex + 3
ListBox1.ListIndex te donne l'index de l'élément sélectionné dans la Listbox (son n° ou sa position si tu préfères). Tu rajoutes 3 et tu as le n° de la colonne recherchée.

- CDbl(TextBox2) permet de convertir le contenu du textbox2 pour être reconnu comme un nombre dans la cellule.

Ton problème doit donc venir du fait que tu ne sélectionnes pas l'élément dans la listbox. Tu dois faire défiler les éléments avec les deux petites flèches et une fois que tu as trouvé tu t'arrêtes là.
Il faut impérativement cliquer sur cet élément.

Essaye avec ceci, cela évite ce problème :
Code:
Private Sub CommandButton1_Click()

With Sheets("Casse")
 If ListBox1.ListIndex = -1 Then
   MsgBox "Sélectionner un élément dans la liste.", vbInformation, "Erreur :"
   Exit Sub
 End If
 
  .Range("B65536").End(xlUp).Offset(1, 0) = TextBox1.Value
  .Cells(.Range("B65536").End(xlUp).Row, ListBox1.ListIndex + 3) = CDbl(TextBox2)
End With
Unload Me

End Sub

Si il n'y a rien de sélectionné dans la listbox la macro s'arrête.


A+
 
Dernière édition:

Hawkeye56

XLDnaute Junior
Re : Relation entre listbox et textbox

Bonjour bqtr,

Merci de ces explications, je comprends un peu mieux le principe.

Tu as bien cerné le problème, en effet je ne savais pas qu'il fallait cliquer sur la sélection faite dans la listbox.
Tout fonctionne grâce à toi, un grand merci !! :)

Bonne journée
 
Dernière édition:

Discussions similaires

Statistiques des forums

Discussions
314 422
Messages
2 109 447
Membres
110 482
dernier inscrit
ilyxxxh