OVH Cloud OVH Cloud

pb avec multiselect

3 réponses
Avatar
Maud
bonjour à tous
j'ai modifié la propriété multiselect de ma listbox mais du coup des actions
que je faisais avant sur double click qui devait récupérer les données de ma
listbox ne fonctionne plus. j'ai compris qu'avec la propriété mulselect on ne
peut plus agir comme d'ahabitude grâce aux autres messages sur le sujet.
Cependant je n'arrive pas à modifier mon programme.
pouvez vous m'aidez??

programme qui coince::
Private Sub ListBox1_DblClick(ByVal Cancel As MSForms.ReturnBoolean)
chemin
'on prend les données de la deuxième colonne de listbox si la ligne est non
vide alors
'elle s'ouvre grâce au chemin
statut = ListBox1.Column(0) <-----------------ICI

FicheProjet = ListBox1.Column(4)
If statut = "Actif" Then
Workbooks.Open (route & FicheProjet & ".xls")

'copie des trigrammes dans la feuille données
Workbooks(FicheProjet).Worksheets("données").Range("K3:K40").Clear
Workbooks("Charge_V1").Worksheets("Personne").Range("trigramme").Copy

Workbooks(FicheProjet).Worksheets("données").Range("K3:K40").PasteSpecial
Paste:=xlPasteValues

UserForm1.Hide
Unload UserForm1
'si la ligne est vide ce message s'affiche
Else: MsgBox "Ce projet est terminé!", vbInformation
End If

End Sub

initialisation de ma listbox::
Sub InitialerListBox()

Dim Tblo As Variant

With Worksheets("projets")
Set Rg = .Range("source_liste")
Tblo = Rg
End With
With Me.ListBox1
.ColumnCount = Rg.Columns.Count
.List = Tblo
.ColumnHeads = True
.ListStyle = fmListStyleOption
.MultiSelect = 1
End With
End Sub

merci d'avance ;-)

3 réponses

Avatar
michdenis
Bonjour Maud,

Je n'ai pas tout compris ton code et ce que tu voulais faire...mais il y a un truc qui facilite drôlement la vie lorsque l'on
utiliser un combobox ou listbox avec plusieurs colonnes.

La propriété " BoundColumn " est habituellement défini à 1 c'est à dire lorsque l'on veut récupérer le contenu du contrôle par une
ligne de code comme celle-ci : A = Me.listbox1.value , nous récupérons la valeur de la colonne 1 affichée dans le contrôle.

Cependant, si pour une raison particulière c'est la colonne 2 ou 3 qui nous intéresse, il est possible de modifier cette propriété
en conséquence BoundColumn = 2 ou 3 et par la même ligne de code que précédemment, obtenir l'information directement.

'modifie la colonne liée
Me.ListBox1.BoundColumn = 3
'affiche le résultat (colonne3) de la valeur de l'item sélectionné
MsgBox Me.ListBox1.Value

Tu obtiens la même chose avec ce bout de code :

With Me.ListBox1
MsgBox .List(.ListIndex, 2)
End With

Tu peux aussi écrire :
Msgbox Me.Listbox.list(Me.listbox1.Listindex,2)


Salutations!


"Maud" a écrit dans le message de news:
bonjour à tous
j'ai modifié la propriété multiselect de ma listbox mais du coup des actions
que je faisais avant sur double click qui devait récupérer les données de ma
listbox ne fonctionne plus. j'ai compris qu'avec la propriété mulselect on ne
peut plus agir comme d'ahabitude grâce aux autres messages sur le sujet.
Cependant je n'arrive pas à modifier mon programme.
pouvez vous m'aidez??

programme qui coince::
Private Sub ListBox1_DblClick(ByVal Cancel As MSForms.ReturnBoolean)
chemin
'on prend les données de la deuxième colonne de listbox si la ligne est non
vide alors
'elle s'ouvre grâce au chemin
statut = ListBox1.Column(0) <-----------------ICI

FicheProjet = ListBox1.Column(4)
If statut = "Actif" Then
Workbooks.Open (route & FicheProjet & ".xls")

'copie des trigrammes dans la feuille données
Workbooks(FicheProjet).Worksheets("données").Range("K3:K40").Clear
Workbooks("Charge_V1").Worksheets("Personne").Range("trigramme").Copy

Workbooks(FicheProjet).Worksheets("données").Range("K3:K40").PasteSpecial
Paste:=xlPasteValues

UserForm1.Hide
Unload UserForm1
'si la ligne est vide ce message s'affiche
Else: MsgBox "Ce projet est terminé!", vbInformation
End If

End Sub

initialisation de ma listbox::
Sub InitialerListBox()

Dim Tblo As Variant

With Worksheets("projets")
Set Rg = .Range("source_liste")
Tblo = Rg
End With
With Me.ListBox1
.ColumnCount = Rg.Columns.Count
.List = Tblo
.ColumnHeads = True
.ListStyle = fmListStyleOption
.MultiSelect = 1
End With
End Sub

merci d'avance ;-)
Avatar
anonymousA
bonjour,

Sur tes explications, il me semble qu'un problème va se poser du fait que
Maud affecte la propriété multiselect à son listbox.

A+


Bonjour Maud,

Je n'ai pas tout compris ton code et ce que tu voulais faire...mais il y a un truc qui facilite drôlement la vie lorsque l'on
utiliser un combobox ou listbox avec plusieurs colonnes.

La propriété " BoundColumn " est habituellement défini à 1 c'est à dire lorsque l'on veut récupérer le contenu du contrôle par une
ligne de code comme celle-ci : A = Me.listbox1.value , nous récupérons la valeur de la colonne 1 affichée dans le contrôle.

Cependant, si pour une raison particulière c'est la colonne 2 ou 3 qui nous intéresse, il est possible de modifier cette propriété
en conséquence BoundColumn = 2 ou 3 et par la même ligne de code que précédemment, obtenir l'information directement.

'modifie la colonne liée
Me.ListBox1.BoundColumn = 3
'affiche le résultat (colonne3) de la valeur de l'item sélectionné
MsgBox Me.ListBox1.Value

Tu obtiens la même chose avec ce bout de code :

With Me.ListBox1
MsgBox .List(.ListIndex, 2)
End With

Tu peux aussi écrire :
Msgbox Me.Listbox.list(Me.listbox1.Listindex,2)


Salutations!


"Maud" a écrit dans le message de news:
bonjour à tous
j'ai modifié la propriété multiselect de ma listbox mais du coup des actions
que je faisais avant sur double click qui devait récupérer les données de ma
listbox ne fonctionne plus. j'ai compris qu'avec la propriété mulselect on ne
peut plus agir comme d'ahabitude grâce aux autres messages sur le sujet.
Cependant je n'arrive pas à modifier mon programme.
pouvez vous m'aidez??

programme qui coince::
Private Sub ListBox1_DblClick(ByVal Cancel As MSForms.ReturnBoolean)
chemin
'on prend les données de la deuxième colonne de listbox si la ligne est non
vide alors
'elle s'ouvre grâce au chemin
statut = ListBox1.Column(0) <-----------------ICI

FicheProjet = ListBox1.Column(4)
If statut = "Actif" Then
Workbooks.Open (route & FicheProjet & ".xls")

'copie des trigrammes dans la feuille données
Workbooks(FicheProjet).Worksheets("données").Range("K3:K40").Clear
Workbooks("Charge_V1").Worksheets("Personne").Range("trigramme").Copy

Workbooks(FicheProjet).Worksheets("données").Range("K3:K40").PasteSpecial
Paste:=xlPasteValues

UserForm1.Hide
Unload UserForm1
'si la ligne est vide ce message s'affiche
Else: MsgBox "Ce projet est terminé!", vbInformation
End If

End Sub

initialisation de ma listbox::
Sub InitialerListBox()

Dim Tblo As Variant

With Worksheets("projets")
Set Rg = .Range("source_liste")
Tblo = Rg
End With
With Me.ListBox1
.ColumnCount = Rg.Columns.Count
.List = Tblo
.ColumnHeads = True
.ListStyle = fmListStyleOption
.MultiSelect = 1
End With
End Sub

merci d'avance ;-)





Avatar
Maud
Merci michDenis
la première ne fonctionnait pas (à cause de multiselect je pense) mais la
seconde oui!!
Merci beaucoup


Bonjour Maud,

Je n'ai pas tout compris ton code et ce que tu voulais faire...mais il y a un truc qui facilite drôlement la vie lorsque l'on
utiliser un combobox ou listbox avec plusieurs colonnes.

La propriété " BoundColumn " est habituellement défini à 1 c'est à dire lorsque l'on veut récupérer le contenu du contrôle par une
ligne de code comme celle-ci : A = Me.listbox1.value , nous récupérons la valeur de la colonne 1 affichée dans le contrôle.

Cependant, si pour une raison particulière c'est la colonne 2 ou 3 qui nous intéresse, il est possible de modifier cette propriété
en conséquence BoundColumn = 2 ou 3 et par la même ligne de code que précédemment, obtenir l'information directement.

'modifie la colonne liée
Me.ListBox1.BoundColumn = 3
'affiche le résultat (colonne3) de la valeur de l'item sélectionné
MsgBox Me.ListBox1.Value

Tu obtiens la même chose avec ce bout de code :

With Me.ListBox1
MsgBox .List(.ListIndex, 2)
End With

Tu peux aussi écrire :
Msgbox Me.Listbox.list(Me.listbox1.Listindex,2)


Salutations!


"Maud" a écrit dans le message de news:
bonjour à tous
j'ai modifié la propriété multiselect de ma listbox mais du coup des actions
que je faisais avant sur double click qui devait récupérer les données de ma
listbox ne fonctionne plus. j'ai compris qu'avec la propriété mulselect on ne
peut plus agir comme d'ahabitude grâce aux autres messages sur le sujet.
Cependant je n'arrive pas à modifier mon programme.
pouvez vous m'aidez??

programme qui coince::
Private Sub ListBox1_DblClick(ByVal Cancel As MSForms.ReturnBoolean)
chemin
'on prend les données de la deuxième colonne de listbox si la ligne est non
vide alors
'elle s'ouvre grâce au chemin
statut = ListBox1.Column(0) <-----------------ICI

FicheProjet = ListBox1.Column(4)
If statut = "Actif" Then
Workbooks.Open (route & FicheProjet & ".xls")

'copie des trigrammes dans la feuille données
Workbooks(FicheProjet).Worksheets("données").Range("K3:K40").Clear
Workbooks("Charge_V1").Worksheets("Personne").Range("trigramme").Copy

Workbooks(FicheProjet).Worksheets("données").Range("K3:K40").PasteSpecial
Paste:=xlPasteValues

UserForm1.Hide
Unload UserForm1
'si la ligne est vide ce message s'affiche
Else: MsgBox "Ce projet est terminé!", vbInformation
End If

End Sub

initialisation de ma listbox::
Sub InitialerListBox()

Dim Tblo As Variant

With Worksheets("projets")
Set Rg = .Range("source_liste")
Tblo = Rg
End With
With Me.ListBox1
.ColumnCount = Rg.Columns.Count
.List = Tblo
.ColumnHeads = True
.ListStyle = fmListStyleOption
.MultiSelect = 1
End With
End Sub

merci d'avance ;-)