OVH Cloud OVH Cloud

Sélection de la ligne concernée

6 réponses
Avatar
Alba
Bonjour,

J'ai deux combobox li=E9, et le r=E9sultat de la ligne demand=E9e vient
s'afficher dans ma listbox.


Je voudrais que lorsque je clic sur le choix du Combobox2, il
s=E9lectionne la ligne concern=E9e dans la feuille.

J'y arrive mais il ne le fait correctement que sur environ les 10
premi=E8res lignes....ensuite il ne s=E9lectionne plus du tout les lignes
qui correspondent a mon choix dans le combobox !!!!!!

Ma premi=E8re ligne est en 8, J'ai ceci :

Private Sub ComboBox1_Change()

With ComboBox1
If .ListIndex =3D -1 Then Exit Sub
Nom =3D .Value
Me.TextBoxDatedujour.Value =3D Date
End With
IniComboBox2 (Nom)
End Sub

'--------------------------------

Private Sub ComboBox2_Change()

With ComboBox2
If .ListIndex =3D -1 Then Exit Sub
Fact =3D .Value
End With

With Sheets("Compte dentiste")
Set cel =3D .Range("A7:A" & .Range("A65536").End(xlUp).Row).Find(Fact)
End With
If Not cel Is Nothing Then Li =3D cel.Row


IniListbox1 (Fact)

End Sub

'--------------------------------------------------
Private Sub ComboBox1_AfterUpdate()
's=E9lectionne la ligne correspondante
Rows(AJOUTERACOMPTE.ComboBox1.ListIndex + 8).EntireRow.Select

End Sub
'---------------------------------------------------------------


J'aimerai bien faire un tri alphab=E9tique dans mon Combobox 2, il me
semble que le probl=E8me est peut-=EAtre a ce niveau (???) mais je
n'arrive pas a faire ce tri.

Dans ma feuille le tri se fait en colonne A qui correspond au
combobox1
et le combobox 2 correspond =E0 la colonne B

Merci pour votre aide.

6 réponses

Avatar
MichDenis
Le combobox du formulaire doit être renseigné en utilisant la
propriété RowSource de ce dernier avec une syntaxe
ressemblant à ceci : RowSource = Feuil1!B5:B25

Tu choisis l'événement de ton choix selon ton application :
'----------------------------
Dim T As String
With Me.ComboBox1
If .ListIndex = -1 Then Exit Sub
T = .RowSource
With Range(T).Parent
.Select
End With
Range(T)(.ListIndex + 1).Select
End With
'----------------------------


"Alba" a écrit dans le message de news:

Bonjour,

J'ai deux combobox lié, et le résultat de la ligne demandée vient
s'afficher dans ma listbox.


Je voudrais que lorsque je clic sur le choix du Combobox2, il
sélectionne la ligne concernée dans la feuille.

J'y arrive mais il ne le fait correctement que sur environ les 10
premières lignes....ensuite il ne sélectionne plus du tout les lignes
qui correspondent a mon choix dans le combobox !!!!!!

Ma première ligne est en 8, J'ai ceci :

Private Sub ComboBox1_Change()

With ComboBox1
If .ListIndex = -1 Then Exit Sub
Nom = .Value
Me.TextBoxDatedujour.Value = Date
End With
IniComboBox2 (Nom)
End Sub

'--------------------------------

Private Sub ComboBox2_Change()

With ComboBox2
If .ListIndex = -1 Then Exit Sub
Fact = .Value
End With

With Sheets("Compte dentiste")
Set cel = .Range("A7:A" & .Range("A65536").End(xlUp).Row).Find(Fact)
End With
If Not cel Is Nothing Then Li = cel.Row


IniListbox1 (Fact)

End Sub

'--------------------------------------------------
Private Sub ComboBox1_AfterUpdate()
'sélectionne la ligne correspondante
Rows(AJOUTERACOMPTE.ComboBox1.ListIndex + 8).EntireRow.Select

End Sub
'---------------------------------------------------------------


J'aimerai bien faire un tri alphabétique dans mon Combobox 2, il me
semble que le problème est peut-être a ce niveau (???) mais je
n'arrive pas a faire ce tri.

Dans ma feuille le tri se fait en colonne A qui correspond au
combobox1
et le combobox 2 correspond à la colonne B

Merci pour votre aide.
Avatar
Alba
Merci de ton aide MichDenis, mais j'ai beaucoup de difficulté sur ce
passage là, parce que j'avais demandé de l'aide pour obtenir ce que je
souhaitais avec cette userform, et le résultat est pour moi assez
complexe....mais il fonctionne à merveille sauf cette histoire de
sélection de ligne sur la feuille.


Dans mon Userform j'ai :
En tout premier lieu : Dim Li As Integer, Fact As Variant

ensuite mes deux Private Sub ComboBox Change()

puis :

Private Sub IniListbox1(Fact)
Dim Plg As Variant, L As Integer, C As Byte
Dim cel As Range

'pour la date du jour
Me.Caption = Format(Date, "dddd dd mmmm yyyy")


With Sheets("Compte dentiste")
Plg = .Range("A7:J" & .Range("A65536").End(xlUp).Row)
End With

With ListBox1
.Clear
.ListStyle = fmListStyleOption
.MultiSelect = fmMultiSelectMulti
.ColumnCount = 13
.ColumnWidths = "35;100;70;70;80;80;80;60;40"

.AddItem Plg(1, 1) 'entêtes
For C = 2 To UBound(Plg, 2)
.List(0, C - 1) = Plg(1, C)
Next C

For L = 2 To UBound(Plg, 1) 'données
If Plg(L, 1) = Val(Fact) Then
.AddItem Plg(L, 1)
For C = 2 To UBound(Plg, 2)
If C = 4 Or C = 5 Or C = 7 Then
.List(.ListCount - 1, C - 1) = Format(Plg(L, C), "0.00")
Else: .List(.ListCount - 1, C - 1) = Plg(L, C)
End If
Next C
End If
Next L
End With

End Sub
--------------------------------------------------------------------------


Private Sub UserForm_Initialize()

With Sheets("Compte dentiste")


'tri croissant par numéro
'sélectionne le tableau jusqu'à la dernière cellule et effectue un
tri par numéro
Range("A8:N" & Range("A65536").End(xlUp).Row).Select
Selection.Sort Key1:=Range("A8"), Order1:=xlAscending,
Header:=xlGuess, _
OrderCustom:=1, MatchCase:úlse,
Orientation:=xlTopToBottom, _
DataOption1:=xlSortNormal
Range("A8").Select


IniComboBox1
End With
End Sub

--------------------------------------------------------------------------- ---------------

Private Sub IniComboBox1()
Dim Plage As String, L As Integer, Col As New Collection, Item As
Variant

With Sheets("Compte dentiste")
Plg = .Range("B8:B" & .Range("a65536").End(xlUp).Row)

End With

For L = 1 To UBound(Plg, 1)
On Error Resume Next
Col.Add Plg(L, 1), CStr(Plg(L, 1)) 'il faut un argument chaîne
On Error GoTo 0
Next L

With ComboBox1
.Clear
For Each Item In Col
.AddItem Item
Next Item
End With

End Sub

--------------------------------------------------------------------------- -------------
Private Sub IniComboBox2(Nom As String)
Dim Plage As String, L As Integer, Col As New Collection, Item As
Variant

With Sheets("Compte dentiste")
Plg = .Range("A8:B" & .Range("a65536").End(xlUp).Row)
End With



For L = 1 To UBound(Plg, 1)
On Error Resume Next
If Plg(L, 2) = Nom Then Col.Add Plg(L, 1), CStr(Plg(L, 1)) 'il faut un
argument chaîne
On Error GoTo 0
Next L


With ComboBox2
.Clear
For Each Item In Col
.AddItem Item
Next Item
End With

End Sub
--------------------------------------------------------------------------- --------------------------------

et aussi une action pour intégrer des données mais je ne pense pas que
ce soit là que ça se passe


Je n'arrive pas du tout a comprendre où il va récupérer le rowsource
de ma colonne A et de la B ?????
Avatar
MichDenis
Tu es en train de noyer le poisson...
Je ne vais pas "décoder" ton code et ta question ...!!!

1 - Ton combobox est renseigné de quelle manière dans ton application ?
2 - Est-ce que ton combobox contient plusieurs colonnes ?
3 - Quelle est l'information affichée du combobox (de la colonne s'il y en a plusieurs)
que tu veux retrouver dans ta plage de cellules ?
4 - Quel est le type de données (date, nombre, texte) contenu dans ton combobox
que tu veux utiliser comme recherche ?





"Alba" a écrit dans le message de news:

Merci de ton aide MichDenis, mais j'ai beaucoup de difficulté sur ce
passage là, parce que j'avais demandé de l'aide pour obtenir ce que je
souhaitais avec cette userform, et le résultat est pour moi assez
complexe....mais il fonctionne à merveille sauf cette histoire de
sélection de ligne sur la feuille.


Dans mon Userform j'ai :
En tout premier lieu : Dim Li As Integer, Fact As Variant

ensuite mes deux Private Sub ComboBox Change()

puis :

Private Sub IniListbox1(Fact)
Dim Plg As Variant, L As Integer, C As Byte
Dim cel As Range

'pour la date du jour
Me.Caption = Format(Date, "dddd dd mmmm yyyy")


With Sheets("Compte dentiste")
Plg = .Range("A7:J" & .Range("A65536").End(xlUp).Row)
End With

With ListBox1
.Clear
.ListStyle = fmListStyleOption
.MultiSelect = fmMultiSelectMulti
.ColumnCount = 13
.ColumnWidths = "35;100;70;70;80;80;80;60;40"

.AddItem Plg(1, 1) 'entêtes
For C = 2 To UBound(Plg, 2)
.List(0, C - 1) = Plg(1, C)
Next C

For L = 2 To UBound(Plg, 1) 'données
If Plg(L, 1) = Val(Fact) Then
.AddItem Plg(L, 1)
For C = 2 To UBound(Plg, 2)
If C = 4 Or C = 5 Or C = 7 Then
.List(.ListCount - 1, C - 1) = Format(Plg(L, C), "0.00")
Else: .List(.ListCount - 1, C - 1) = Plg(L, C)
End If
Next C
End If
Next L
End With

End Sub
--------------------------------------------------------------------------


Private Sub UserForm_Initialize()

With Sheets("Compte dentiste")


'tri croissant par numéro
'sélectionne le tableau jusqu'à la dernière cellule et effectue un
tri par numéro
Range("A8:N" & Range("A65536").End(xlUp).Row).Select
Selection.Sort Key1:=Range("A8"), Order1:=xlAscending,
Header:=xlGuess, _
OrderCustom:=1, MatchCase:úlse,
Orientation:=xlTopToBottom, _
DataOption1:=xlSortNormal
Range("A8").Select


IniComboBox1
End With
End Sub

------------------------------------------------------------------------------------------

Private Sub IniComboBox1()
Dim Plage As String, L As Integer, Col As New Collection, Item As
Variant

With Sheets("Compte dentiste")
Plg = .Range("B8:B" & .Range("a65536").End(xlUp).Row)

End With

For L = 1 To UBound(Plg, 1)
On Error Resume Next
Col.Add Plg(L, 1), CStr(Plg(L, 1)) 'il faut un argument chaîne
On Error GoTo 0
Next L

With ComboBox1
.Clear
For Each Item In Col
.AddItem Item
Next Item
End With

End Sub

----------------------------------------------------------------------------------------
Private Sub IniComboBox2(Nom As String)
Dim Plage As String, L As Integer, Col As New Collection, Item As
Variant

With Sheets("Compte dentiste")
Plg = .Range("A8:B" & .Range("a65536").End(xlUp).Row)
End With



For L = 1 To UBound(Plg, 1)
On Error Resume Next
If Plg(L, 2) = Nom Then Col.Add Plg(L, 1), CStr(Plg(L, 1)) 'il faut un
argument chaîne
On Error GoTo 0
Next L


With ComboBox2
.Clear
For Each Item In Col
.AddItem Item
Next Item
End With

End Sub
-----------------------------------------------------------------------------------------------------------

et aussi une action pour intégrer des données mais je ne pense pas que
ce soit là que ça se passe


Je n'arrive pas du tout a comprendre où il va récupérer le rowsource
de ma colonne A et de la B ?????
Avatar
Alba
On 24 fév, 16:05, "MichDenis" wrote:
Tu es en train de noyer le poisson...
Je ne vais pas "décoder" ton code et ta question ...!!!

1 - Ton combobox est renseigné de quelle manière dans ton application ?
2 - Est-ce que ton combobox contient plusieurs colonnes ?
3 - Quelle est l'information affichée du combobox (de la colonne s'il y en a plusieurs)
que tu veux retrouver dans ta plage de cellules ?
4 - Quel est le type de données (date, nombre, texte) contenu dans ton combobox
que tu veux utiliser comme recherche ?


Oui mais le poisson qui se noye c'est moi ;-)

http://cjoint.com/confirm.php?cjoint=cyqWgnqmVz



ce n'est pas moi qui ai fait ce code, et je voulais simplement que
lorsque je sélectionne mon combobox
qui correspond en l'occurence au choix de numéro de facture (voir
fichier ci-joint) toute la ligne concenée se sélectionne...je voulais
juste ça !
mais elle sélectionne correctement seulement pour quelques lignes et
pas d'autres !!!??? ..... c'est ce qui m'échappe !


mais si c'est trop ardu, tant pis je ne vais pas prendre le risque de
casser les codes qui fonctionnent très bien.

Merci en tout cas MichDenis d'avoir essayé de comprendre ma recherche

Avatar
MichDenis
Fichier : correctif apporté : http://cjoint.com/?cyrMbQeUyh

J'ai apporté seulement une légère modification à cette procédure
de ton formulaire :
Private Sub ComboBox2_Change()


"Alba" a écrit dans le message de news:

On 24 fév, 16:05, "MichDenis" wrote:
Tu es en train de noyer le poisson...
Je ne vais pas "décoder" ton code et ta question ...!!!

1 - Ton combobox est renseigné de quelle manière dans ton application ?
2 - Est-ce que ton combobox contient plusieurs colonnes ?
3 - Quelle est l'information affichée du combobox (de la colonne s'il y en a plusieurs)
que tu veux retrouver dans ta plage de cellules ?
4 - Quel est le type de données (date, nombre, texte) contenu dans ton combobox
que tu veux utiliser comme recherche ?


Oui mais le poisson qui se noye c'est moi ;-)

http://cjoint.com/confirm.php?cjoint=cyqWgnqmVz



ce n'est pas moi qui ai fait ce code, et je voulais simplement que
lorsque je sélectionne mon combobox
qui correspond en l'occurence au choix de numéro de facture (voir
fichier ci-joint) toute la ligne concenée se sélectionne...je voulais
juste ça !
mais elle sélectionne correctement seulement pour quelques lignes et
pas d'autres !!!??? ..... c'est ce qui m'échappe !


mais si c'est trop ardu, tant pis je ne vais pas prendre le risque de
casser les codes qui fonctionnent très bien.

Merci en tout cas MichDenis d'avoir essayé de comprendre ma recherche

Avatar
Alba
On 24 fév, 17:39, "MichDenis" wrote:
Fichier : correctif apporté : http://cjoint.com/?cyrMbQeUyh

J'ai apporté seulement une légère modification à cette procédure
de ton formulaire :
Private Sub ComboBox2_Change()


Et bien la "légère", comme tu dis :-) modification je ne l'aurais
jamais trouvée toute seule, je te remercie infiniment, c'est juste le
petit plus qui me manquait, c'est super !!!

Très bon week-wend