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?
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.
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.
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é.
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.
Faut il l'adapter pour chaque valeur de la listbox?
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
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.
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 !!