Afficher ligne d'une lisbox dans des labels d'un autre userform VBA

Résolu
tafus91 Messages postés 13 Date d'inscription mercredi 5 janvier 2011 Statut Membre Dernière intervention 8 juin 2011 - 10 févr. 2011 à 13:53
tafus91 Messages postés 13 Date d'inscription mercredi 5 janvier 2011 Statut Membre Dernière intervention 8 juin 2011 - 17 févr. 2011 à 17:07
Bonjour,
de nouveau besoin de votre aide.

j'ai une listbox à plusieurs colonnes dans un premier userform
je vous que lorsque je double clic sur n'importe quel ligne ça remplisse les labels de mon second userform avec les infos de la ligne double cliqué

j'ai mis le code du double clic dans mon premier userform pour que ça ouvre le deuxième et sa marche
mais je n'arrive pas à afficher les infos de la ligne sélectionnée dans les labels du 2ème userform

j'espère que vous pourrez m'aider

merci d'avance

9 réponses

rv83toulon Messages postés 68 Date d'inscription mercredi 2 mars 2011 Statut Membre Dernière intervention 25 avril 2013
15 févr. 2011 à 08:26
Salut, et merci de tes précisions.
Avant de commencer avec ton userform "frFICHECLIENT" supprime ceci:
Private Sub UserForm_Initialize() 
Me.Label1.Caption = frCLIENTS.ListBoxClients(1, 1) 
End Sub 

Ensuite voici comment doit ce présenter ton code doubleclick:
Private Sub ListBoxClients_DblClick(ByVal Cancel As MSForms.ReturnBoolean)

With frCLIENTS.ListBoxClients
'compte le nombre d'item de la listbox
'-1 car la list commence à 0
dernitem = .ListCount - 1
derncolonne = .ColumnCount - 1

'Boucle sur chaque item de la listbox
For x = 0 To dernitem
 'si l'item est séletionné alors
 If .Selected(x) = True Then
   
   'Boucle sur chaque label de 1 à 7
   'et lui attribue la valeur de la colonne lui correspondant
   For y = 0 To derncolonne
   frFICHECLIENT.Controls("Label" & y + 1).Caption = .Column(y, x)
   Next y
  'je sort de la boucle
   Exit For
 End If
Next x
End With

'j'affiche mon deuxième userform
frFICHECLIENT.Show
End Sub

Tiens nous au courant.
@+
3
cs_Jack Messages postés 14006 Date d'inscription samedi 29 décembre 2001 Statut Modérateur Dernière intervention 28 août 2015 79
10 févr. 2011 à 15:21
Salut

"je n'arrive pas à afficher les infos"
Qu'as-tu essayé ?
As-tu ouvert l'aide de la ListBox pour savoir comment accéder aux infos stockées dans chaque colonne de la ligne actuellement sélectionnée ?
Il y a plusieurs exemple faciles à tester, notamment celui de la propriété .List
L'utilisation des colonnes multiples n'est pas très facile (*), mais tout est expliqué dans l'aide.
(*) notamment la différence subtile entre .

Ensuite, transférer des données d'une forme à une autre :
Suffit de désigner le nom de la forme :
maFormeNo2.TextBox1.Caption = maFormeNo1.List(NoLigne, NoColonne)

Vala
Jack, MVP VB
NB : Je ne répondrai pas aux messages privés

Le savoir est la seule matière qui s'accroit quand on la partage (Socrate)
0
tafus91 Messages postés 13 Date d'inscription mercredi 5 janvier 2011 Statut Membre Dernière intervention 8 juin 2011
10 févr. 2011 à 16:39
salut

j'arrive à faire afficher dans les labels mais toujours la meme ligne ,
alors que je voudrai que ce soit les infos de ligne cliqué qui s'affiche,
j'ai une idée du problème qui doit etre une histoire de listindex mais comme sa fait un petit mois jfait du VBA j'ai du mal
et je sais pas comment utiliser le listindex pour qu'il récupère le numéro de ligne
j'espere tu comprend un peu ce que je dit

si ta une idée jsuis preneur et pour acceder a l'aide de la listbox on fait comment?

merci
0
cs_Jack Messages postés 14006 Date d'inscription samedi 29 décembre 2001 Statut Modérateur Dernière intervention 28 août 2015 79
10 févr. 2011 à 18:00
Ouh la, pas clair.

Tu parles des Items qui sont sélectionnés ou bien de n'importe quel Item ?
Où se site ton problème ?
Dans la reconnaissance des Items sélectionnés ? As-tu lu l'aide de la ListBox à propos de sa propriété .Selected ?
Dans l'ajout d'une ligne dans un Label ? ou une TextBox ?

Soit bien précis, on n'est pas au dessus de ton épaule, et surtout, cherche de l'aide dans ... l'aide, il y a plein d'exemples.
0

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

Posez votre question
rv83toulon Messages postés 68 Date d'inscription mercredi 2 mars 2011 Statut Membre Dernière intervention 25 avril 2013
14 févr. 2011 à 08:58
Bonjour à tous,
il faut te mettre à notre place lorsque tu expliques ton problème. Tu dis :
j'ai une listbox à plusieurs colonnes dans un premier userform

ok, mais combien de colonnes? comment se nomme ton userform, ta listbox?
ensuite :
j'ai mis le code du double clic dans mon premier userform pour que ça ouvre le deuxième
donc tu as commencé à coder. Montre nous le code.
encore :
mais je n'arrive pas à afficher les infos de la ligne sélectionnée dans les labels du 2ème userform
ok,même question, combien y a-t-il de labels?, comment se nomment-ils?
Dans quel label veux-tu afficher la 1er colonne de la listbox etc.....
Comprends-tu l'importance d'être précis dans une demande? En donnant ces infos dès le début tu aurais gagné au minimum 4 jours, puisque ton premier message date du 10/02.
comme te l'as dis Jack :
Soit bien précis, on n'est pas au dessus de ton épaule


@+
0
tafus91 Messages postés 13 Date d'inscription mercredi 5 janvier 2011 Statut Membre Dernière intervention 8 juin 2011
14 févr. 2011 à 17:43
Bonjour,
il y a 7 colonnes
et la listbox se nomme: ListBoxClients
et le userform: frCLIENTS

le deuxième userform se nomme: frFICHECLIENT

voila le code que j'ai mis(sur le userform frCLIENTS) pour que lorsque je doubleclic une ligne de ma listbox sa ouvre mon userform frFICHECLIENT

'click vers Fiche client
Private Sub ListBoxClients_DblClick(ByVal Cancel As MSForms.ReturnBoolean)
Call Me.Hide
Call Load(frFICHECLIENT)
Call frFICHECLIENT.Show
Call Unload(frFICHECLIENT)


Sur mon userform frFICHECLIENT ( ou je veu que mes labels ce remplissent avec les données de la ListBoxClients "qui ce trouve sur le userform frCLIENTS" en fonction de la ligne doublecliquée)
j'ai 7 Label un pour chaque colonne de ma ListBoxClients (Label1, Label2...Label7)

j'ai commencé comme sa:

Private Sub UserForm_Initialize()


Me.Label1.Caption = frCLIENTS.ListBoxClients(1, 1)

End Sub
mais comme je suis dans mes début en VBA la je nage complétement
j'arrive pas à trouvé le code qui me permet d'afficher dans mes labels ce qu'il y a dans la ligne doublecliqué
voila si un de vous arrive a comprendre ce dont j'ai besoin

merci beaucoup
0
tafus91 Messages postés 13 Date d'inscription mercredi 5 janvier 2011 Statut Membre Dernière intervention 8 juin 2011
15 févr. 2011 à 11:11
merci de ta réponse rapide,

C'est parfait

exactement ce que je voulais
un grand merci
et bonne journée a toi
0
tafus91 Messages postés 13 Date d'inscription mercredi 5 janvier 2011 Statut Membre Dernière intervention 8 juin 2011
17 févr. 2011 à 16:59
Je reviens vers vous pour la suite,
Car je bloque encore.
Sur mon 2ème userform (frFICHECLIENT) j'ai rajouté des labels : Label8,Label9...Label15
Je voudrai que ces labels ce remplissent avec la suite de mes infos qui ne sont pas dans la listbox (ListBoxClients) mais dans la feuilles excel (CLIENTS)
c'est avec les lignes de cette feuilles excel (CLIENTS) que je remplie ma listbox (ListBoxClients)
Si vous avez une idée de comment réussir à remplir ces labels
Merci beaucoup d'avance et aussi pour la réponse de la dernière fois
bonne journée
0
tafus91 Messages postés 13 Date d'inscription mercredi 5 janvier 2011 Statut Membre Dernière intervention 8 juin 2011
17 févr. 2011 à 17:07
Pas la peine de vous embéter j'avai commencé un code et il ne marchai pas
et je viens d'avoir l'éclair de génie je suis assez fier de moi
pas mal pour un novice non?

voila le code que j'ai mis a la suite de celui que m'avait donné rv83toulon

Set objClients = Application.ThisWorkbook.Worksheets.Item("Clients")
Dim ligne As String
ligne = ListBoxClients.ListIndex 'on récupère le N° de ligne
frFICHECLIENT.Label8.Caption = objClients.Cells(ligne + 1, 6)
frFICHECLIENT.Label9.Caption = objClients.Cells(ligne + 1, 9)
frFICHECLIENT.Label10.Caption = objClients.Cells(ligne + 1, 10)
frFICHECLIENT.Label11.Caption = objClients.Cells(ligne + 1, 11)
frFICHECLIENT.Label12.Caption = objClients.Cells(ligne + 1, 12)
frFICHECLIENT.Label13.Caption = objClients.Cells(ligne + 1, 13)
frFICHECLIENT.Label14.Caption = objClients.Cells(ligne + 1, 14)
frFICHECLIENT.Label15.Caption = objClients.Cells(ligne + 1, 15)



Bonne journée à vous
0
Rejoignez-nous