Problème de remplissage textbox depuis combobox
Bonjour,
Je cherche un moyen de récupérer les données d'une ligne dans le but de les envoyer sur un modèle d'impression, puis les imprimer.
Ma contrainte, c'est que j'ai des n° de lots composés à partir de 2 colonnes (par ex. 20000-A, 20000-B, etc...).
Du coup, j'envisage 2 solutions pour récupérer ces données, soit regrouper les 2 colonnes dans une combobox, soit remplir le combobox avec la colonne A, et une textbox avec la colonne B.
Pour la 1ère solution, je n'arrive pas à grouper et faire apparaitre les 2 colonnes en même temps.
Pour la 2ème solution, quand je sélectionne un lot, comme les lots de la colonne A sont identiques par moments, j'ai toujours la dernière lettre qui compose le lot qui s'affiche dans la textbox.
Si l'explication est incompréhensible, le fichier est lui très explicite.
Et si toutefois une autre solution était mieux adaptée, ça m'intéresse aussi
Bonjour,
C'est plus facile avec un contrôle ListBox et un tableau structuré.
Dans le module standard :
Option Explicit
Type ModeleOF
OfNumero As String
OfIndice As String
OfDate As Date
OfCommande As String
End Type
Public OfChoisi As ModeleOF
Public Continuer As Boolean
Public AireDonnees As Range
Sub LancerLUsf()
On Error GoTo Fin
Set AireDonnees = Range("TableDesOF[#All]")
With UserFormImpressionOF
.ListBoxOF.List = AireDonnees.Value
.Show
End With
If Continuer = False Then GoTo Fin
With OfChoisi
Debug.Print "OF : " & .OfNumero & ", indice : " & .OfIndice & ", date : " & .OfDate & ", commande : " & .OfCommande
End With
GoTo Fin
Fin:
Set AireDonnees = Nothing
End SubDans le userform :
Option Explicit
Private Sub CommandButtonQuitter_Click()
Continuer = False
Unload Me
End Sub
Private Sub CommandButtonValider_Click()
If ListBoxOF.ListIndex > -1 Then
Continuer = True
With OfChoisi
.OfNumero = ListBoxOF.List(, 0)
.OfIndice = ListBoxOF.List(, 1)
.OfDate = CDate(ListBoxOF.List(, 2))
.OfCommande = ListBoxOF.List(, 3)
End With
Unload Me
Else
MsgBox "Sélectionnez une OF !", vbCritical
End If
End Sub
Private Sub ListBoxOF_Click()
With Me
.TextBoxOF = ListBoxOF.List(, 0)
.TextBoxIndice = ListBoxOF.List(, 1)
End With
Application.Goto AireDonnees.Rows(ListBoxOF.ListIndex + 1), True
End Sub
Bonjour Eric,
Effectivement le contrôle ListBox est bien le plus adapté dans ce genre de situations.
Comme quoi un regard extérieur est toujours utile.
Merci pour ton aide.