Bonjour à tous,
SOUS EXCEL 2003
question du jour : j'ai un formulaire listant dans une LISTVIEW :
ref ARTicle, Designation, Prix HT (environ 500 refs)
je veux créer une TextBox qui permettra à l'utilisateur de taper une ref
et je voudrais que le curseur se déplace au fur et à mesure vers les refs
concernés
exemple :
Ma liste
ABCDE
ABDEF
ABEFG
dans la TextBoxAppelRef si je tape AB
Le curseur se positionnera sur la première ref qui commence par AB, soit
ABCDE
c'est un élément courant dans les formulaires, mais je ne sais comment
l'écrire en VBA
====== > ce que j'ai fait :
If TextBoxAppelArticle <> "" Then
Application.Goto Reference:=TextBoxAppelArticle
End If
===== > Quelqu'un a t il déjà implémenté cela dans un USERFORM ,
d'avance merci
Bonjour à tous,
SOUS EXCEL 2003
question du jour : j'ai un formulaire listant dans une LISTVIEW :
ref ARTicle, Designation, Prix HT (environ 500 refs)
je veux créer une TextBox qui permettra à l'utilisateur de taper une ref
et je voudrais que le curseur se déplace au fur et à mesure vers les refs
concernés
exemple :
Ma liste
ABCDE
ABDEF
ABEFG
dans la TextBoxAppelRef si je tape AB
Le curseur se positionnera sur la première ref qui commence par AB, soit
ABCDE
c'est un élément courant dans les formulaires, mais je ne sais comment
l'écrire en VBA
====== > ce que j'ai fait :
If TextBoxAppelArticle <> "" Then
Application.Goto Reference:=TextBoxAppelArticle
End If
===== > Quelqu'un a t il déjà implémenté cela dans un USERFORM ,
d'avance merci
Bonjour à tous,
SOUS EXCEL 2003
question du jour : j'ai un formulaire listant dans une LISTVIEW :
ref ARTicle, Designation, Prix HT (environ 500 refs)
je veux créer une TextBox qui permettra à l'utilisateur de taper une ref
et je voudrais que le curseur se déplace au fur et à mesure vers les refs
concernés
exemple :
Ma liste
ABCDE
ABDEF
ABEFG
dans la TextBoxAppelRef si je tape AB
Le curseur se positionnera sur la première ref qui commence par AB, soit
ABCDE
c'est un élément courant dans les formulaires, mais je ne sais comment
l'écrire en VBA
====== > ce que j'ai fait :
If TextBoxAppelArticle <> "" Then
Application.Goto Reference:=TextBoxAppelArticle
End If
===== > Quelqu'un a t il déjà implémenté cela dans un USERFORM ,
d'avance merci
Bonjour à tous,
SOUS EXCEL 2003
question du jour : j'ai un formulaire listant dans une LISTVIEW :
ref ARTicle, Designation, Prix HT (environ 500 refs)
je veux créer une TextBox qui permettra à l'utilisateur de ta per une ref
et je voudrais que le curseur se déplace au fur et à mesure v ers les refs
concernés
exemple :
Ma liste
ABCDE
ABDEF
ABEFG
dans la TextBoxAppelRef si je tape AB
Le curseur se positionnera sur la première ref qui commence par AB , soit ABCDE
c'est un élément courant dans les formulaires, mais je ne sai s comment
l'écrire en VBA
=======
ce que j'ai fait :
If TextBoxAppelArticle <> "" Then
Application.Goto Reference:=TextBoxAppelArticle
End If
======
Quelqu'un a t il déjà implémenté cela dans un USERF ORM ,
d'avance merci
Bonjour à tous,
SOUS EXCEL 2003
question du jour : j'ai un formulaire listant dans une LISTVIEW :
ref ARTicle, Designation, Prix HT (environ 500 refs)
je veux créer une TextBox qui permettra à l'utilisateur de ta per une ref
et je voudrais que le curseur se déplace au fur et à mesure v ers les refs
concernés
exemple :
Ma liste
ABCDE
ABDEF
ABEFG
dans la TextBoxAppelRef si je tape AB
Le curseur se positionnera sur la première ref qui commence par AB , soit ABCDE
c'est un élément courant dans les formulaires, mais je ne sai s comment
l'écrire en VBA
=======
ce que j'ai fait :
If TextBoxAppelArticle <> "" Then
Application.Goto Reference:=TextBoxAppelArticle
End If
======
Quelqu'un a t il déjà implémenté cela dans un USERF ORM ,
d'avance merci
Bonjour à tous,
SOUS EXCEL 2003
question du jour : j'ai un formulaire listant dans une LISTVIEW :
ref ARTicle, Designation, Prix HT (environ 500 refs)
je veux créer une TextBox qui permettra à l'utilisateur de ta per une ref
et je voudrais que le curseur se déplace au fur et à mesure v ers les refs
concernés
exemple :
Ma liste
ABCDE
ABDEF
ABEFG
dans la TextBoxAppelRef si je tape AB
Le curseur se positionnera sur la première ref qui commence par AB , soit ABCDE
c'est un élément courant dans les formulaires, mais je ne sai s comment
l'écrire en VBA
=======
ce que j'ai fait :
If TextBoxAppelArticle <> "" Then
Application.Goto Reference:=TextBoxAppelArticle
End If
======
Quelqu'un a t il déjà implémenté cela dans un USERF ORM ,
d'avance merci
Bonjour Françoise,
Tu peux t'inspirer de ce classeur : http://cjoint.com/?dun0RWRua1
Le truc c'est d'utiliser des ComboBox avec les mêmes données que la
Listbox et de mettre la propriété ShowDropButtonWhen à 0 pour les
"déguiser" en simples TextBox
Corto
Françoise a écrit :
> Bonjour à tous,
>
> SOUS EXCEL 2003
> question du jour : j'ai un formulaire listant dans une LISTVIEW :
> ref ARTicle, Designation, Prix HT (environ 500 refs)
> je veux créer une TextBox qui permettra à l'utilisateur de taper une ref
> et je voudrais que le curseur se déplace au fur et à mesure vers les refs
> concernés
>
> exemple :
> Ma liste
> ABCDE
> ABDEF
> ABEFG
>
> dans la TextBoxAppelRef si je tape AB
>
> Le curseur se positionnera sur la première ref qui commence par AB, soit ABCDE
>
> c'est un élément courant dans les formulaires, mais je ne sais comment
> l'écrire en VBA
> ====== > > ce que j'ai fait :
>
> If TextBoxAppelArticle <> "" Then
> Application.Goto Reference:=TextBoxAppelArticle
> End If
>
> ===== > > Quelqu'un a t il déjà implémenté cela dans un USERFORM ,
> d'avance merci
>
Bonjour Françoise,
Tu peux t'inspirer de ce classeur : http://cjoint.com/?dun0RWRua1
Le truc c'est d'utiliser des ComboBox avec les mêmes données que la
Listbox et de mettre la propriété ShowDropButtonWhen à 0 pour les
"déguiser" en simples TextBox
Corto
Françoise a écrit :
> Bonjour à tous,
>
> SOUS EXCEL 2003
> question du jour : j'ai un formulaire listant dans une LISTVIEW :
> ref ARTicle, Designation, Prix HT (environ 500 refs)
> je veux créer une TextBox qui permettra à l'utilisateur de taper une ref
> et je voudrais que le curseur se déplace au fur et à mesure vers les refs
> concernés
>
> exemple :
> Ma liste
> ABCDE
> ABDEF
> ABEFG
>
> dans la TextBoxAppelRef si je tape AB
>
> Le curseur se positionnera sur la première ref qui commence par AB, soit ABCDE
>
> c'est un élément courant dans les formulaires, mais je ne sais comment
> l'écrire en VBA
> ====== > > ce que j'ai fait :
>
> If TextBoxAppelArticle <> "" Then
> Application.Goto Reference:=TextBoxAppelArticle
> End If
>
> ===== > > Quelqu'un a t il déjà implémenté cela dans un USERFORM ,
> d'avance merci
>
Bonjour Françoise,
Tu peux t'inspirer de ce classeur : http://cjoint.com/?dun0RWRua1
Le truc c'est d'utiliser des ComboBox avec les mêmes données que la
Listbox et de mettre la propriété ShowDropButtonWhen à 0 pour les
"déguiser" en simples TextBox
Corto
Françoise a écrit :
> Bonjour à tous,
>
> SOUS EXCEL 2003
> question du jour : j'ai un formulaire listant dans une LISTVIEW :
> ref ARTicle, Designation, Prix HT (environ 500 refs)
> je veux créer une TextBox qui permettra à l'utilisateur de taper une ref
> et je voudrais que le curseur se déplace au fur et à mesure vers les refs
> concernés
>
> exemple :
> Ma liste
> ABCDE
> ABDEF
> ABEFG
>
> dans la TextBoxAppelRef si je tape AB
>
> Le curseur se positionnera sur la première ref qui commence par AB, soit ABCDE
>
> c'est un élément courant dans les formulaires, mais je ne sais comment
> l'écrire en VBA
> ====== > > ce que j'ai fait :
>
> If TextBoxAppelArticle <> "" Then
> Application.Goto Reference:=TextBoxAppelArticle
> End If
>
> ===== > > Quelqu'un a t il déjà implémenté cela dans un USERFORM ,
> d'avance merci
>
Bonjour Françoise,
Regarde dans la macro UserForm_Initialize, c'est là que ça se passe.
Private Sub UserForm_Initialize()
ComboBox1.RowSource = Range(ListBox1.RowSource).Columns(1). _
Address(External:=True)
/*On donne au Combo 1 l'adresse de la première colonne du listbox*/
ComboBox2.RowSource = Range(ListBox1.RowSource).Columns(3). _
Address(External:=True)
/*On donne au Combo 2 l'adresse de la troisième colonne du listbox*/
End Sub
Corto
Françoise a écrit :
> Bonjour Corto et merci pour ta réponse et ton exemple, c'est exactement ce
> que je cherche à faire MAIS avec une LISTVIEW et donc j'ai un peu de mal à
> suivre comment modifier pour obtenir le résultat
>
> j'ai crée une ComboBox pour la saisie des refs articles, mais comment dire
> qu'il faut faire appel à la colonne 1 de la LISTVIEW pour faire la recherche
> et est ce que c'est possible ?
>
> Le sais tu ?
> ========== > > voici le code de mon formulaire :
>
> Private Sub UserForm_Initialize()
>
>
> 'Suppression des titres de colonnes
> ListView1.ColumnHeaders.Clear
>
> 'Alimentation des titres de colonne :
> 'Titre de la colonne : "Référence",
> 'Largeur de la colonne : ListView1.Width * 0.3,
> 'Alignement de la colonne : lvwColumnLeft
> ListView1.ColumnHeaders.Add , , "Référence", ListView1.Width * 0.2,
> lvwColumnLeft
> ListView1.ColumnHeaders.Add , , "Désignation", ListView1.Width * 0.4,
> lvwColumnLeft
> ListView1.ColumnHeaders.Add , , "Prix public", ListView1.Width * 0.2,
> lvwColumnRight
> ListView1.ColumnHeaders.Add , , "Valeur Stock Totale", ListView1.Width *
> 0.2, lvwColumnRight
> Dim iLigArticle As Integer
> iLigArticle = 2
>
> 'Suppression des éléments de la liste
> ListView1.ListItems.Clear
>
> While Workbooks("STOCK.xls").Sheets("STOCK").Cells(iLigArticle, 1) <> ""
> 'Alimentation des éléments de la liste
> ListView1.ListItems.Add iLigArticle - 1, ,
> Sheets("STOCK").Cells(iLigArticle, 1)
> ListView1.ListItems(iLigArticle - 1).SubItems(1) =
> Sheets("STOCK").Cells(iLigArticle, 6)
> ListView1.ListItems(iLigArticle - 1).SubItems(2) =
> Format(Sheets("STOCK").Cells(iLigArticle, 8), "## ##0.00 €")
> ListView1.ListItems(iLigArticle - 1).SubItems(3) =
> Format(Sheets("STOCK").Cells(iLigArticle, 18), "## ##0.00 €")
> iLigArticle = iLigArticle + 1
> Wend
>
> TextBoxValeurTotaleStock = Format(Sheets("STOCK").Range("M2").Value, "##
> ##0.00 €")
>
>
>
>
> End Sub
> Private Sub ListView1_Click()
> 'dès que l'on clique sur l'article, on affiche dans le formulaire
> usfDetailArticle les entrées et sorties de stock de l'article
>
> NumArticle = ListView1.SelectedItem
>
> Dim Sh As Worksheet
> Set Sh = Worksheets("SORTIES")
> Dim Article As String
>
> Article = NumArticle
>
> On Error Resume Next
> With Sh
> 'définir la zone de critère
> 'choisir l'étiquette de la colonne A1 -> champ où exploiter le filtre
> ..Range("K1") = .Range("A1")
> ..Range("K2") = Article 'la valeur du critère du filtre
> Sh.Range("P1").CurrentRegion.Clear
>
> 'Définir la plage de cellules pour le filtre...
> With .Range("A1:F" & .Range("A65536").End(xlUp).Row)
> 'Application du filtre
> ..AdvancedFilter Action:=xlFilterCopy, _
> CriteriaRange:=Sh.Range("K1:K2"), _
> CopyToRange:=Sh.Range("P1"), Unique:úlse
> 'Copie vers la cellule où débutera la plage résultat
> End With
> ..ShowAllData
> End With
>
> If Sh.Range("P2").Value = "" Then
> MsgBox ("aucune sortie pour ce produit")
>
> Else
> NumArticle = Sh.Range("P2").Value
> With Sheets("STOCK").Range("A:A")
> Set c = .Find(NumArticle, LookIn:=xlValues, LookAt:=xlWhole)
> If Not c Is Nothing Then Lig = c.Row
> End With
> End If
> UsfDetailArticle.Show
> End Sub
> Private Sub ComboBox1_Change()
> If ComboBox1.MatchFound Then
> ListView1.Top = ComboBox1.ListIndex
> End If
> End Sub
>
> Private Sub ComboBox1_Exit(ByVal Cancel As MSForms.ReturnBoolean)
> ComboBox1.Text = ""
> End Sub
>
> Private Sub ListView1_Change()
> Set XDST = [A2]
> For XCPT = 0 To ListView1.ListCount - 1
> If ListView1.Selected(XCPT) Then
> XDST.Offset(0, 0) = ListView1.List(XCPT, 0)
> XDST.Offset(0, 1) = ListView1.List(XCPT, 1)
> XDST.Offset(0, 2) = ListView1.List(XCPT, 2)
> XDST.Offset(0, 3) = ListView1.List(XCPT, 3)
> Set XDST = XDST.Offset(1, 0)
> End If
> Next XCPT
> Range(XDST, XDST.End(xlDown)).EntireRow.ClearContents
> End Sub
> ==================== > > As tu une idée là dessus ?
>
> "Corto" a écrit :
>
>
>> Bonjour Françoise,
>> Tu peux t'inspirer de ce classeur : http://cjoint.com/?dun0RWRua1
>> Le truc c'est d'utiliser des ComboBox avec les mêmes données que la
>> Listbox et de mettre la propriété ShowDropButtonWhen à 0 pour les
>> "déguiser" en simples TextBox
>>
>> Corto
>>
>> Françoise a écrit :
>>
>>> Bonjour à tous,
>>>
>>> SOUS EXCEL 2003
>>> question du jour : j'ai un formulaire listant dans une LISTVIEW :
>>> ref ARTicle, Designation, Prix HT (environ 500 refs)
>>> je veux créer une TextBox qui permettra à l'utilisateur de taper une ref
>>> et je voudrais que le curseur se déplace au fur et à mesure vers les refs
>>> concernés
>>>
>>> exemple :
>>> Ma liste
>>> ABCDE
>>> ABDEF
>>> ABEFG
>>>
>>> dans la TextBoxAppelRef si je tape AB
>>>
>>> Le curseur se positionnera sur la première ref qui commence par AB, soit ABCDE
>>>
>>> c'est un élément courant dans les formulaires, mais je ne sais comment
>>> l'écrire en VBA
>>> ====== > >>> ce que j'ai fait :
>>>
>>> If TextBoxAppelArticle <> "" Then
>>> Application.Goto Reference:=TextBoxAppelArticle
>>> End If
>>>
>>> ===== > >>> Quelqu'un a t il déjà implémenté cela dans un USERFORM ,
>>> d'avance merci
>>>
>>>
Bonjour Françoise,
Regarde dans la macro UserForm_Initialize, c'est là que ça se passe.
Private Sub UserForm_Initialize()
ComboBox1.RowSource = Range(ListBox1.RowSource).Columns(1). _
Address(External:=True)
/*On donne au Combo 1 l'adresse de la première colonne du listbox*/
ComboBox2.RowSource = Range(ListBox1.RowSource).Columns(3). _
Address(External:=True)
/*On donne au Combo 2 l'adresse de la troisième colonne du listbox*/
End Sub
Corto
Françoise a écrit :
> Bonjour Corto et merci pour ta réponse et ton exemple, c'est exactement ce
> que je cherche à faire MAIS avec une LISTVIEW et donc j'ai un peu de mal à
> suivre comment modifier pour obtenir le résultat
>
> j'ai crée une ComboBox pour la saisie des refs articles, mais comment dire
> qu'il faut faire appel à la colonne 1 de la LISTVIEW pour faire la recherche
> et est ce que c'est possible ?
>
> Le sais tu ?
> ========== > > voici le code de mon formulaire :
>
> Private Sub UserForm_Initialize()
>
>
> 'Suppression des titres de colonnes
> ListView1.ColumnHeaders.Clear
>
> 'Alimentation des titres de colonne :
> 'Titre de la colonne : "Référence",
> 'Largeur de la colonne : ListView1.Width * 0.3,
> 'Alignement de la colonne : lvwColumnLeft
> ListView1.ColumnHeaders.Add , , "Référence", ListView1.Width * 0.2,
> lvwColumnLeft
> ListView1.ColumnHeaders.Add , , "Désignation", ListView1.Width * 0.4,
> lvwColumnLeft
> ListView1.ColumnHeaders.Add , , "Prix public", ListView1.Width * 0.2,
> lvwColumnRight
> ListView1.ColumnHeaders.Add , , "Valeur Stock Totale", ListView1.Width *
> 0.2, lvwColumnRight
> Dim iLigArticle As Integer
> iLigArticle = 2
>
> 'Suppression des éléments de la liste
> ListView1.ListItems.Clear
>
> While Workbooks("STOCK.xls").Sheets("STOCK").Cells(iLigArticle, 1) <> ""
> 'Alimentation des éléments de la liste
> ListView1.ListItems.Add iLigArticle - 1, ,
> Sheets("STOCK").Cells(iLigArticle, 1)
> ListView1.ListItems(iLigArticle - 1).SubItems(1) =
> Sheets("STOCK").Cells(iLigArticle, 6)
> ListView1.ListItems(iLigArticle - 1).SubItems(2) =
> Format(Sheets("STOCK").Cells(iLigArticle, 8), "## ##0.00 €")
> ListView1.ListItems(iLigArticle - 1).SubItems(3) =
> Format(Sheets("STOCK").Cells(iLigArticle, 18), "## ##0.00 €")
> iLigArticle = iLigArticle + 1
> Wend
>
> TextBoxValeurTotaleStock = Format(Sheets("STOCK").Range("M2").Value, "##
> ##0.00 €")
>
>
>
>
> End Sub
> Private Sub ListView1_Click()
> 'dès que l'on clique sur l'article, on affiche dans le formulaire
> usfDetailArticle les entrées et sorties de stock de l'article
>
> NumArticle = ListView1.SelectedItem
>
> Dim Sh As Worksheet
> Set Sh = Worksheets("SORTIES")
> Dim Article As String
>
> Article = NumArticle
>
> On Error Resume Next
> With Sh
> 'définir la zone de critère
> 'choisir l'étiquette de la colonne A1 -> champ où exploiter le filtre
> ..Range("K1") = .Range("A1")
> ..Range("K2") = Article 'la valeur du critère du filtre
> Sh.Range("P1").CurrentRegion.Clear
>
> 'Définir la plage de cellules pour le filtre...
> With .Range("A1:F" & .Range("A65536").End(xlUp).Row)
> 'Application du filtre
> ..AdvancedFilter Action:=xlFilterCopy, _
> CriteriaRange:=Sh.Range("K1:K2"), _
> CopyToRange:=Sh.Range("P1"), Unique:úlse
> 'Copie vers la cellule où débutera la plage résultat
> End With
> ..ShowAllData
> End With
>
> If Sh.Range("P2").Value = "" Then
> MsgBox ("aucune sortie pour ce produit")
>
> Else
> NumArticle = Sh.Range("P2").Value
> With Sheets("STOCK").Range("A:A")
> Set c = .Find(NumArticle, LookIn:=xlValues, LookAt:=xlWhole)
> If Not c Is Nothing Then Lig = c.Row
> End With
> End If
> UsfDetailArticle.Show
> End Sub
> Private Sub ComboBox1_Change()
> If ComboBox1.MatchFound Then
> ListView1.Top = ComboBox1.ListIndex
> End If
> End Sub
>
> Private Sub ComboBox1_Exit(ByVal Cancel As MSForms.ReturnBoolean)
> ComboBox1.Text = ""
> End Sub
>
> Private Sub ListView1_Change()
> Set XDST = [A2]
> For XCPT = 0 To ListView1.ListCount - 1
> If ListView1.Selected(XCPT) Then
> XDST.Offset(0, 0) = ListView1.List(XCPT, 0)
> XDST.Offset(0, 1) = ListView1.List(XCPT, 1)
> XDST.Offset(0, 2) = ListView1.List(XCPT, 2)
> XDST.Offset(0, 3) = ListView1.List(XCPT, 3)
> Set XDST = XDST.Offset(1, 0)
> End If
> Next XCPT
> Range(XDST, XDST.End(xlDown)).EntireRow.ClearContents
> End Sub
> ==================== > > As tu une idée là dessus ?
>
> "Corto" a écrit :
>
>
>> Bonjour Françoise,
>> Tu peux t'inspirer de ce classeur : http://cjoint.com/?dun0RWRua1
>> Le truc c'est d'utiliser des ComboBox avec les mêmes données que la
>> Listbox et de mettre la propriété ShowDropButtonWhen à 0 pour les
>> "déguiser" en simples TextBox
>>
>> Corto
>>
>> Françoise a écrit :
>>
>>> Bonjour à tous,
>>>
>>> SOUS EXCEL 2003
>>> question du jour : j'ai un formulaire listant dans une LISTVIEW :
>>> ref ARTicle, Designation, Prix HT (environ 500 refs)
>>> je veux créer une TextBox qui permettra à l'utilisateur de taper une ref
>>> et je voudrais que le curseur se déplace au fur et à mesure vers les refs
>>> concernés
>>>
>>> exemple :
>>> Ma liste
>>> ABCDE
>>> ABDEF
>>> ABEFG
>>>
>>> dans la TextBoxAppelRef si je tape AB
>>>
>>> Le curseur se positionnera sur la première ref qui commence par AB, soit ABCDE
>>>
>>> c'est un élément courant dans les formulaires, mais je ne sais comment
>>> l'écrire en VBA
>>> ====== > >>> ce que j'ai fait :
>>>
>>> If TextBoxAppelArticle <> "" Then
>>> Application.Goto Reference:=TextBoxAppelArticle
>>> End If
>>>
>>> ===== > >>> Quelqu'un a t il déjà implémenté cela dans un USERFORM ,
>>> d'avance merci
>>>
>>>
Bonjour Françoise,
Regarde dans la macro UserForm_Initialize, c'est là que ça se passe.
Private Sub UserForm_Initialize()
ComboBox1.RowSource = Range(ListBox1.RowSource).Columns(1). _
Address(External:=True)
/*On donne au Combo 1 l'adresse de la première colonne du listbox*/
ComboBox2.RowSource = Range(ListBox1.RowSource).Columns(3). _
Address(External:=True)
/*On donne au Combo 2 l'adresse de la troisième colonne du listbox*/
End Sub
Corto
Françoise a écrit :
> Bonjour Corto et merci pour ta réponse et ton exemple, c'est exactement ce
> que je cherche à faire MAIS avec une LISTVIEW et donc j'ai un peu de mal à
> suivre comment modifier pour obtenir le résultat
>
> j'ai crée une ComboBox pour la saisie des refs articles, mais comment dire
> qu'il faut faire appel à la colonne 1 de la LISTVIEW pour faire la recherche
> et est ce que c'est possible ?
>
> Le sais tu ?
> ========== > > voici le code de mon formulaire :
>
> Private Sub UserForm_Initialize()
>
>
> 'Suppression des titres de colonnes
> ListView1.ColumnHeaders.Clear
>
> 'Alimentation des titres de colonne :
> 'Titre de la colonne : "Référence",
> 'Largeur de la colonne : ListView1.Width * 0.3,
> 'Alignement de la colonne : lvwColumnLeft
> ListView1.ColumnHeaders.Add , , "Référence", ListView1.Width * 0.2,
> lvwColumnLeft
> ListView1.ColumnHeaders.Add , , "Désignation", ListView1.Width * 0.4,
> lvwColumnLeft
> ListView1.ColumnHeaders.Add , , "Prix public", ListView1.Width * 0.2,
> lvwColumnRight
> ListView1.ColumnHeaders.Add , , "Valeur Stock Totale", ListView1.Width *
> 0.2, lvwColumnRight
> Dim iLigArticle As Integer
> iLigArticle = 2
>
> 'Suppression des éléments de la liste
> ListView1.ListItems.Clear
>
> While Workbooks("STOCK.xls").Sheets("STOCK").Cells(iLigArticle, 1) <> ""
> 'Alimentation des éléments de la liste
> ListView1.ListItems.Add iLigArticle - 1, ,
> Sheets("STOCK").Cells(iLigArticle, 1)
> ListView1.ListItems(iLigArticle - 1).SubItems(1) =
> Sheets("STOCK").Cells(iLigArticle, 6)
> ListView1.ListItems(iLigArticle - 1).SubItems(2) =
> Format(Sheets("STOCK").Cells(iLigArticle, 8), "## ##0.00 €")
> ListView1.ListItems(iLigArticle - 1).SubItems(3) =
> Format(Sheets("STOCK").Cells(iLigArticle, 18), "## ##0.00 €")
> iLigArticle = iLigArticle + 1
> Wend
>
> TextBoxValeurTotaleStock = Format(Sheets("STOCK").Range("M2").Value, "##
> ##0.00 €")
>
>
>
>
> End Sub
> Private Sub ListView1_Click()
> 'dès que l'on clique sur l'article, on affiche dans le formulaire
> usfDetailArticle les entrées et sorties de stock de l'article
>
> NumArticle = ListView1.SelectedItem
>
> Dim Sh As Worksheet
> Set Sh = Worksheets("SORTIES")
> Dim Article As String
>
> Article = NumArticle
>
> On Error Resume Next
> With Sh
> 'définir la zone de critère
> 'choisir l'étiquette de la colonne A1 -> champ où exploiter le filtre
> ..Range("K1") = .Range("A1")
> ..Range("K2") = Article 'la valeur du critère du filtre
> Sh.Range("P1").CurrentRegion.Clear
>
> 'Définir la plage de cellules pour le filtre...
> With .Range("A1:F" & .Range("A65536").End(xlUp).Row)
> 'Application du filtre
> ..AdvancedFilter Action:=xlFilterCopy, _
> CriteriaRange:=Sh.Range("K1:K2"), _
> CopyToRange:=Sh.Range("P1"), Unique:úlse
> 'Copie vers la cellule où débutera la plage résultat
> End With
> ..ShowAllData
> End With
>
> If Sh.Range("P2").Value = "" Then
> MsgBox ("aucune sortie pour ce produit")
>
> Else
> NumArticle = Sh.Range("P2").Value
> With Sheets("STOCK").Range("A:A")
> Set c = .Find(NumArticle, LookIn:=xlValues, LookAt:=xlWhole)
> If Not c Is Nothing Then Lig = c.Row
> End With
> End If
> UsfDetailArticle.Show
> End Sub
> Private Sub ComboBox1_Change()
> If ComboBox1.MatchFound Then
> ListView1.Top = ComboBox1.ListIndex
> End If
> End Sub
>
> Private Sub ComboBox1_Exit(ByVal Cancel As MSForms.ReturnBoolean)
> ComboBox1.Text = ""
> End Sub
>
> Private Sub ListView1_Change()
> Set XDST = [A2]
> For XCPT = 0 To ListView1.ListCount - 1
> If ListView1.Selected(XCPT) Then
> XDST.Offset(0, 0) = ListView1.List(XCPT, 0)
> XDST.Offset(0, 1) = ListView1.List(XCPT, 1)
> XDST.Offset(0, 2) = ListView1.List(XCPT, 2)
> XDST.Offset(0, 3) = ListView1.List(XCPT, 3)
> Set XDST = XDST.Offset(1, 0)
> End If
> Next XCPT
> Range(XDST, XDST.End(xlDown)).EntireRow.ClearContents
> End Sub
> ==================== > > As tu une idée là dessus ?
>
> "Corto" a écrit :
>
>
>> Bonjour Françoise,
>> Tu peux t'inspirer de ce classeur : http://cjoint.com/?dun0RWRua1
>> Le truc c'est d'utiliser des ComboBox avec les mêmes données que la
>> Listbox et de mettre la propriété ShowDropButtonWhen à 0 pour les
>> "déguiser" en simples TextBox
>>
>> Corto
>>
>> Françoise a écrit :
>>
>>> Bonjour à tous,
>>>
>>> SOUS EXCEL 2003
>>> question du jour : j'ai un formulaire listant dans une LISTVIEW :
>>> ref ARTicle, Designation, Prix HT (environ 500 refs)
>>> je veux créer une TextBox qui permettra à l'utilisateur de taper une ref
>>> et je voudrais que le curseur se déplace au fur et à mesure vers les refs
>>> concernés
>>>
>>> exemple :
>>> Ma liste
>>> ABCDE
>>> ABDEF
>>> ABEFG
>>>
>>> dans la TextBoxAppelRef si je tape AB
>>>
>>> Le curseur se positionnera sur la première ref qui commence par AB, soit ABCDE
>>>
>>> c'est un élément courant dans les formulaires, mais je ne sais comment
>>> l'écrire en VBA
>>> ====== > >>> ce que j'ai fait :
>>>
>>> If TextBoxAppelArticle <> "" Then
>>> Application.Goto Reference:=TextBoxAppelArticle
>>> End If
>>>
>>> ===== > >>> Quelqu'un a t il déjà implémenté cela dans un USERFORM ,
>>> d'avance merci
>>>
>>>
bon, dur, dur.....
j'ai bien compris le routage vers la colonne, mais lorsque j'insèr e le code
après
Private Sub UserForm_Initialize()
j'obtiens l'erreur "impossible de lire la propriété RowSource membre
introuvable
j'ai mis :
====
Private Sub UserForm_Initialize()
ComboBox1.RowSource =
Range(ListView1.RowSource).Columns(1).Address(External:=True)
'On donne au Combo 1 l'adresse de la première colonne du listbox
====
puis la suite de la macro déjà donné dans mail ci-dessus
j'ai changé ListBox1 par la ListView1 de mon formulaire)
Qu'est ce que je fais de mal ?????
"Corto" a écrit :Bonjour Françoise,
Regarde dans la macro UserForm_Initialize, c'est là que ça s e passe.
Private Sub UserForm_Initialize()
ComboBox1.RowSource = Range(ListBox1.RowSource).Columns(1). _
Address(External:=True)
/*On donne au Combo 1 l'adresse de la première colonne du listbox */
ComboBox2.RowSource = Range(ListBox1.RowSource).Columns(3). _
Address(External:=True)
/*On donne au Combo 2 l'adresse de la troisième colonne du listbo x*/
End Sub
Corto
Françoise a écrit :Bonjour Corto et merci pour ta réponse et ton exemple, c'est exa ctement ce
que je cherche à faire MAIS avec une LISTVIEW et donc j'ai un pe u de mal Ã
suivre comment modifier pour obtenir le résultat
j'ai crée une ComboBox pour la saisie des refs articles, mais co mment dire
qu'il faut faire appel à la colonne 1 de la LISTVIEW pour faire la recherche
et est ce que c'est possible ?
Le sais tu ?
===========
voici le code de mon formulaire :
Private Sub UserForm_Initialize()
'Suppression des titres de colonnes
ListView1.ColumnHeaders.Clear
'Alimentation des titres de colonne :
'Titre de la colonne : "Référence",
'Largeur de la colonne : ListView1.Width * 0.3,
'Alignement de la colonne : lvwColumnLeft
ListView1.ColumnHeaders.Add , , "Référence", ListView1.Widt h * 0.2,
lvwColumnLeft
ListView1.ColumnHeaders.Add , , "Désignation", ListView1.Width * 0.4,
lvwColumnLeft
ListView1.ColumnHeaders.Add , , "Prix public", ListView1.Width * 0.2,
lvwColumnRight
ListView1.ColumnHeaders.Add , , "Valeur Stock Totale", ListView1.Widt h *
0.2, lvwColumnRight
Dim iLigArticle As Integer
iLigArticle = 2
'Suppression des éléments de la liste
ListView1.ListItems.Clear
While Workbooks("STOCK.xls").Sheets("STOCK").Cells(iLigArticle, 1) <> ""
'Alimentation des éléments de la liste
ListView1.ListItems.Add iLigArticle - 1, ,
Sheets("STOCK").Cells(iLigArticle, 1)
ListView1.ListItems(iLigArticle - 1).SubItems(1) =
Sheets("STOCK").Cells(iLigArticle, 6)
ListView1.ListItems(iLigArticle - 1).SubItems(2) =
Format(Sheets("STOCK").Cells(iLigArticle, 8), "## ##0.00 €")
ListView1.ListItems(iLigArticle - 1).SubItems(3) =
Format(Sheets("STOCK").Cells(iLigArticle, 18), "## ##0.00 €")
iLigArticle = iLigArticle + 1
Wend
TextBoxValeurTotaleStock = Format(Sheets("STOCK").Range("M2").Value , "##
##0.00 €")
End Sub
Private Sub ListView1_Click()
'dès que l'on clique sur l'article, on affiche dans le formulair e
usfDetailArticle les entrées et sorties de stock de l'article
NumArticle = ListView1.SelectedItem
Dim Sh As Worksheet
Set Sh = Worksheets("SORTIES")
Dim Article As String
Article = NumArticle
On Error Resume Next
With Sh
'définir la zone de critère
'choisir l'étiquette de la colonne A1 -> champ où exploiter le filtre
..Range("K1") = .Range("A1")
..Range("K2") = Article 'la valeur du critère du filtre
Sh.Range("P1").CurrentRegion.Clear
'Définir la plage de cellules pour le filtre...
With .Range("A1:F" & .Range("A65536").End(xlUp).Row)
'Application du filtre
..AdvancedFilter Action:=xlFilterCopy, _
CriteriaRange:=Sh.Range("K1:K2"), _
CopyToRange:=Sh.Range("P1"), Unique:úlse
'Copie vers la cellule où débutera la plage résultat
End With
..ShowAllData
End With
If Sh.Range("P2").Value = "" Then
MsgBox ("aucune sortie pour ce produit")
Else
NumArticle = Sh.Range("P2").Value
With Sheets("STOCK").Range("A:A")
Set c = .Find(NumArticle, LookIn:=xlValues, LookAt:=xlWhole )
If Not c Is Nothing Then Lig = c.Row
End With
End If
UsfDetailArticle.Show
End Sub
Private Sub ComboBox1_Change()
If ComboBox1.MatchFound Then
ListView1.Top = ComboBox1.ListIndex
End If
End Sub
Private Sub ComboBox1_Exit(ByVal Cancel As MSForms.ReturnBoolean)
ComboBox1.Text = ""
End Sub
Private Sub ListView1_Change()
Set XDST = [A2]
For XCPT = 0 To ListView1.ListCount - 1
If ListView1.Selected(XCPT) Then
XDST.Offset(0, 0) = ListView1.List(XCPT, 0)
XDST.Offset(0, 1) = ListView1.List(XCPT, 1)
XDST.Offset(0, 2) = ListView1.List(XCPT, 2)
XDST.Offset(0, 3) = ListView1.List(XCPT, 3)
Set XDST = XDST.Offset(1, 0)
End If
Next XCPT
Range(XDST, XDST.End(xlDown)).EntireRow.ClearContents
End Sub
=====================
As tu une idée là dessus ?
"Corto" a écrit :Bonjour Françoise,
Tu peux t'inspirer de ce classeur : http://cjoint.com/?dun0RWRua1
Le truc c'est d'utiliser des ComboBox avec les mêmes donné es que la
Listbox et de mettre la propriété ShowDropButtonWhen à 0 pour les
"déguiser" en simples TextBox
Corto
Françoise a écrit :Bonjour à tous,
SOUS EXCEL 2003
question du jour : j'ai un formulaire listant dans une LISTVIEW :
ref ARTicle, Designation, Prix HT (environ 500 refs)
je veux créer une TextBox qui permettra à l'utilisateur d e taper une ref
et je voudrais que le curseur se déplace au fur et à mesu re vers les refs
concernés
exemple :
Ma liste
ABCDE
ABDEF
ABEFG
dans la TextBoxAppelRef si je tape AB
Le curseur se positionnera sur la première ref qui commence pa r AB, soit ABCDE
c'est un élément courant dans les formulaires, mais je ne sais comment
l'écrire en VBA
=======
ce que j'ai fait :
If TextBoxAppelArticle <> "" Then
Application.Goto Reference:=TextBoxAppelArticle
End If
======
Quelqu'un a t il déjà implémenté cela dans un U SERFORM ,
d'avance merci
bon, dur, dur.....
j'ai bien compris le routage vers la colonne, mais lorsque j'insèr e le code
après
Private Sub UserForm_Initialize()
j'obtiens l'erreur "impossible de lire la propriété RowSource membre
introuvable
j'ai mis :
====
Private Sub UserForm_Initialize()
ComboBox1.RowSource =
Range(ListView1.RowSource).Columns(1).Address(External:=True)
'On donne au Combo 1 l'adresse de la première colonne du listbox
====
puis la suite de la macro déjà donné dans mail ci-dessus
j'ai changé ListBox1 par la ListView1 de mon formulaire)
Qu'est ce que je fais de mal ?????
"Corto" a écrit :
Bonjour Françoise,
Regarde dans la macro UserForm_Initialize, c'est là que ça s e passe.
Private Sub UserForm_Initialize()
ComboBox1.RowSource = Range(ListBox1.RowSource).Columns(1). _
Address(External:=True)
/*On donne au Combo 1 l'adresse de la première colonne du listbox */
ComboBox2.RowSource = Range(ListBox1.RowSource).Columns(3). _
Address(External:=True)
/*On donne au Combo 2 l'adresse de la troisième colonne du listbo x*/
End Sub
Corto
Françoise a écrit :
Bonjour Corto et merci pour ta réponse et ton exemple, c'est exa ctement ce
que je cherche à faire MAIS avec une LISTVIEW et donc j'ai un pe u de mal Ã
suivre comment modifier pour obtenir le résultat
j'ai crée une ComboBox pour la saisie des refs articles, mais co mment dire
qu'il faut faire appel à la colonne 1 de la LISTVIEW pour faire la recherche
et est ce que c'est possible ?
Le sais tu ?
===========
voici le code de mon formulaire :
Private Sub UserForm_Initialize()
'Suppression des titres de colonnes
ListView1.ColumnHeaders.Clear
'Alimentation des titres de colonne :
'Titre de la colonne : "Référence",
'Largeur de la colonne : ListView1.Width * 0.3,
'Alignement de la colonne : lvwColumnLeft
ListView1.ColumnHeaders.Add , , "Référence", ListView1.Widt h * 0.2,
lvwColumnLeft
ListView1.ColumnHeaders.Add , , "Désignation", ListView1.Width * 0.4,
lvwColumnLeft
ListView1.ColumnHeaders.Add , , "Prix public", ListView1.Width * 0.2,
lvwColumnRight
ListView1.ColumnHeaders.Add , , "Valeur Stock Totale", ListView1.Widt h *
0.2, lvwColumnRight
Dim iLigArticle As Integer
iLigArticle = 2
'Suppression des éléments de la liste
ListView1.ListItems.Clear
While Workbooks("STOCK.xls").Sheets("STOCK").Cells(iLigArticle, 1) <> ""
'Alimentation des éléments de la liste
ListView1.ListItems.Add iLigArticle - 1, ,
Sheets("STOCK").Cells(iLigArticle, 1)
ListView1.ListItems(iLigArticle - 1).SubItems(1) =
Sheets("STOCK").Cells(iLigArticle, 6)
ListView1.ListItems(iLigArticle - 1).SubItems(2) =
Format(Sheets("STOCK").Cells(iLigArticle, 8), "## ##0.00 €")
ListView1.ListItems(iLigArticle - 1).SubItems(3) =
Format(Sheets("STOCK").Cells(iLigArticle, 18), "## ##0.00 €")
iLigArticle = iLigArticle + 1
Wend
TextBoxValeurTotaleStock = Format(Sheets("STOCK").Range("M2").Value , "##
##0.00 €")
End Sub
Private Sub ListView1_Click()
'dès que l'on clique sur l'article, on affiche dans le formulair e
usfDetailArticle les entrées et sorties de stock de l'article
NumArticle = ListView1.SelectedItem
Dim Sh As Worksheet
Set Sh = Worksheets("SORTIES")
Dim Article As String
Article = NumArticle
On Error Resume Next
With Sh
'définir la zone de critère
'choisir l'étiquette de la colonne A1 -> champ où exploiter le filtre
..Range("K1") = .Range("A1")
..Range("K2") = Article 'la valeur du critère du filtre
Sh.Range("P1").CurrentRegion.Clear
'Définir la plage de cellules pour le filtre...
With .Range("A1:F" & .Range("A65536").End(xlUp).Row)
'Application du filtre
..AdvancedFilter Action:=xlFilterCopy, _
CriteriaRange:=Sh.Range("K1:K2"), _
CopyToRange:=Sh.Range("P1"), Unique:=False
'Copie vers la cellule où débutera la plage résultat
End With
..ShowAllData
End With
If Sh.Range("P2").Value = "" Then
MsgBox ("aucune sortie pour ce produit")
Else
NumArticle = Sh.Range("P2").Value
With Sheets("STOCK").Range("A:A")
Set c = .Find(NumArticle, LookIn:=xlValues, LookAt:=xlWhole )
If Not c Is Nothing Then Lig = c.Row
End With
End If
UsfDetailArticle.Show
End Sub
Private Sub ComboBox1_Change()
If ComboBox1.MatchFound Then
ListView1.Top = ComboBox1.ListIndex
End If
End Sub
Private Sub ComboBox1_Exit(ByVal Cancel As MSForms.ReturnBoolean)
ComboBox1.Text = ""
End Sub
Private Sub ListView1_Change()
Set XDST = [A2]
For XCPT = 0 To ListView1.ListCount - 1
If ListView1.Selected(XCPT) Then
XDST.Offset(0, 0) = ListView1.List(XCPT, 0)
XDST.Offset(0, 1) = ListView1.List(XCPT, 1)
XDST.Offset(0, 2) = ListView1.List(XCPT, 2)
XDST.Offset(0, 3) = ListView1.List(XCPT, 3)
Set XDST = XDST.Offset(1, 0)
End If
Next XCPT
Range(XDST, XDST.End(xlDown)).EntireRow.ClearContents
End Sub
=====================
As tu une idée là dessus ?
"Corto" a écrit :
Bonjour Françoise,
Tu peux t'inspirer de ce classeur : http://cjoint.com/?dun0RWRua1
Le truc c'est d'utiliser des ComboBox avec les mêmes donné es que la
Listbox et de mettre la propriété ShowDropButtonWhen à 0 pour les
"déguiser" en simples TextBox
Corto
Françoise a écrit :
Bonjour à tous,
SOUS EXCEL 2003
question du jour : j'ai un formulaire listant dans une LISTVIEW :
ref ARTicle, Designation, Prix HT (environ 500 refs)
je veux créer une TextBox qui permettra à l'utilisateur d e taper une ref
et je voudrais que le curseur se déplace au fur et à mesu re vers les refs
concernés
exemple :
Ma liste
ABCDE
ABDEF
ABEFG
dans la TextBoxAppelRef si je tape AB
Le curseur se positionnera sur la première ref qui commence pa r AB, soit ABCDE
c'est un élément courant dans les formulaires, mais je ne sais comment
l'écrire en VBA
=======
ce que j'ai fait :
If TextBoxAppelArticle <> "" Then
Application.Goto Reference:=TextBoxAppelArticle
End If
======
Quelqu'un a t il déjà implémenté cela dans un U SERFORM ,
d'avance merci
bon, dur, dur.....
j'ai bien compris le routage vers la colonne, mais lorsque j'insèr e le code
après
Private Sub UserForm_Initialize()
j'obtiens l'erreur "impossible de lire la propriété RowSource membre
introuvable
j'ai mis :
====
Private Sub UserForm_Initialize()
ComboBox1.RowSource =
Range(ListView1.RowSource).Columns(1).Address(External:=True)
'On donne au Combo 1 l'adresse de la première colonne du listbox
====
puis la suite de la macro déjà donné dans mail ci-dessus
j'ai changé ListBox1 par la ListView1 de mon formulaire)
Qu'est ce que je fais de mal ?????
"Corto" a écrit :Bonjour Françoise,
Regarde dans la macro UserForm_Initialize, c'est là que ça s e passe.
Private Sub UserForm_Initialize()
ComboBox1.RowSource = Range(ListBox1.RowSource).Columns(1). _
Address(External:=True)
/*On donne au Combo 1 l'adresse de la première colonne du listbox */
ComboBox2.RowSource = Range(ListBox1.RowSource).Columns(3). _
Address(External:=True)
/*On donne au Combo 2 l'adresse de la troisième colonne du listbo x*/
End Sub
Corto
Françoise a écrit :Bonjour Corto et merci pour ta réponse et ton exemple, c'est exa ctement ce
que je cherche à faire MAIS avec une LISTVIEW et donc j'ai un pe u de mal Ã
suivre comment modifier pour obtenir le résultat
j'ai crée une ComboBox pour la saisie des refs articles, mais co mment dire
qu'il faut faire appel à la colonne 1 de la LISTVIEW pour faire la recherche
et est ce que c'est possible ?
Le sais tu ?
===========
voici le code de mon formulaire :
Private Sub UserForm_Initialize()
'Suppression des titres de colonnes
ListView1.ColumnHeaders.Clear
'Alimentation des titres de colonne :
'Titre de la colonne : "Référence",
'Largeur de la colonne : ListView1.Width * 0.3,
'Alignement de la colonne : lvwColumnLeft
ListView1.ColumnHeaders.Add , , "Référence", ListView1.Widt h * 0.2,
lvwColumnLeft
ListView1.ColumnHeaders.Add , , "Désignation", ListView1.Width * 0.4,
lvwColumnLeft
ListView1.ColumnHeaders.Add , , "Prix public", ListView1.Width * 0.2,
lvwColumnRight
ListView1.ColumnHeaders.Add , , "Valeur Stock Totale", ListView1.Widt h *
0.2, lvwColumnRight
Dim iLigArticle As Integer
iLigArticle = 2
'Suppression des éléments de la liste
ListView1.ListItems.Clear
While Workbooks("STOCK.xls").Sheets("STOCK").Cells(iLigArticle, 1) <> ""
'Alimentation des éléments de la liste
ListView1.ListItems.Add iLigArticle - 1, ,
Sheets("STOCK").Cells(iLigArticle, 1)
ListView1.ListItems(iLigArticle - 1).SubItems(1) =
Sheets("STOCK").Cells(iLigArticle, 6)
ListView1.ListItems(iLigArticle - 1).SubItems(2) =
Format(Sheets("STOCK").Cells(iLigArticle, 8), "## ##0.00 €")
ListView1.ListItems(iLigArticle - 1).SubItems(3) =
Format(Sheets("STOCK").Cells(iLigArticle, 18), "## ##0.00 €")
iLigArticle = iLigArticle + 1
Wend
TextBoxValeurTotaleStock = Format(Sheets("STOCK").Range("M2").Value , "##
##0.00 €")
End Sub
Private Sub ListView1_Click()
'dès que l'on clique sur l'article, on affiche dans le formulair e
usfDetailArticle les entrées et sorties de stock de l'article
NumArticle = ListView1.SelectedItem
Dim Sh As Worksheet
Set Sh = Worksheets("SORTIES")
Dim Article As String
Article = NumArticle
On Error Resume Next
With Sh
'définir la zone de critère
'choisir l'étiquette de la colonne A1 -> champ où exploiter le filtre
..Range("K1") = .Range("A1")
..Range("K2") = Article 'la valeur du critère du filtre
Sh.Range("P1").CurrentRegion.Clear
'Définir la plage de cellules pour le filtre...
With .Range("A1:F" & .Range("A65536").End(xlUp).Row)
'Application du filtre
..AdvancedFilter Action:=xlFilterCopy, _
CriteriaRange:=Sh.Range("K1:K2"), _
CopyToRange:=Sh.Range("P1"), Unique:úlse
'Copie vers la cellule où débutera la plage résultat
End With
..ShowAllData
End With
If Sh.Range("P2").Value = "" Then
MsgBox ("aucune sortie pour ce produit")
Else
NumArticle = Sh.Range("P2").Value
With Sheets("STOCK").Range("A:A")
Set c = .Find(NumArticle, LookIn:=xlValues, LookAt:=xlWhole )
If Not c Is Nothing Then Lig = c.Row
End With
End If
UsfDetailArticle.Show
End Sub
Private Sub ComboBox1_Change()
If ComboBox1.MatchFound Then
ListView1.Top = ComboBox1.ListIndex
End If
End Sub
Private Sub ComboBox1_Exit(ByVal Cancel As MSForms.ReturnBoolean)
ComboBox1.Text = ""
End Sub
Private Sub ListView1_Change()
Set XDST = [A2]
For XCPT = 0 To ListView1.ListCount - 1
If ListView1.Selected(XCPT) Then
XDST.Offset(0, 0) = ListView1.List(XCPT, 0)
XDST.Offset(0, 1) = ListView1.List(XCPT, 1)
XDST.Offset(0, 2) = ListView1.List(XCPT, 2)
XDST.Offset(0, 3) = ListView1.List(XCPT, 3)
Set XDST = XDST.Offset(1, 0)
End If
Next XCPT
Range(XDST, XDST.End(xlDown)).EntireRow.ClearContents
End Sub
=====================
As tu une idée là dessus ?
"Corto" a écrit :Bonjour Françoise,
Tu peux t'inspirer de ce classeur : http://cjoint.com/?dun0RWRua1
Le truc c'est d'utiliser des ComboBox avec les mêmes donné es que la
Listbox et de mettre la propriété ShowDropButtonWhen à 0 pour les
"déguiser" en simples TextBox
Corto
Françoise a écrit :Bonjour à tous,
SOUS EXCEL 2003
question du jour : j'ai un formulaire listant dans une LISTVIEW :
ref ARTicle, Designation, Prix HT (environ 500 refs)
je veux créer une TextBox qui permettra à l'utilisateur d e taper une ref
et je voudrais que le curseur se déplace au fur et à mesu re vers les refs
concernés
exemple :
Ma liste
ABCDE
ABDEF
ABEFG
dans la TextBoxAppelRef si je tape AB
Le curseur se positionnera sur la première ref qui commence pa r AB, soit ABCDE
c'est un élément courant dans les formulaires, mais je ne sais comment
l'écrire en VBA
=======
ce que j'ai fait :
If TextBoxAppelArticle <> "" Then
Application.Goto Reference:=TextBoxAppelArticle
End If
======
Quelqu'un a t il déjà implémenté cela dans un U SERFORM ,
d'avance merci
Bonjour Françoise,
Désolé mais je ne connaissais pas le contrôle ListView et depuis le
départ je pensais que tu parlais en fait d'un ListBox.
La solution que je te proposais ne fonctionnera pas avec un ListView car
il n'est pas associé à une plage Excel.
En résumé, j'ai perdu une belle occasion de me taire :-X :-! et encore
désolé de t'avoir fait perdre ton temps. :-[
Corto
Françoise a écrit :
> bon, dur, dur.....
> j'ai bien compris le routage vers la colonne, mais lorsque j'insère le code
> après
> Private Sub UserForm_Initialize()
> j'obtiens l'erreur "impossible de lire la propriété RowSource membre
> introuvable
>
> j'ai mis :
> === > > Private Sub UserForm_Initialize()
> ComboBox1.RowSource =
> Range(ListView1.RowSource).Columns(1).Address(External:=True)
> 'On donne au Combo 1 l'adresse de la première colonne du listbox
> === > > puis la suite de la macro déjà donné dans mail ci-dessus
>
> j'ai changé ListBox1 par la ListView1 de mon formulaire)
>
> Qu'est ce que je fais de mal ?????
>
>
> "Corto" a écrit :
>
>
>> Bonjour Françoise,
>> Regarde dans la macro UserForm_Initialize, c'est là que ça se passe.
>> Private Sub UserForm_Initialize()
>> ComboBox1.RowSource = Range(ListBox1.RowSource).Columns(1). _
>> Address(External:=True)
>> /*On donne au Combo 1 l'adresse de la première colonne du listbox*/
>> ComboBox2.RowSource = Range(ListBox1.RowSource).Columns(3). _
>> Address(External:=True)
>> /*On donne au Combo 2 l'adresse de la troisième colonne du listbox*/
>> End Sub
>>
>> Corto
>>
>> Françoise a écrit :
>>
>>> Bonjour Corto et merci pour ta réponse et ton exemple, c'est exactement ce
>>> que je cherche à faire MAIS avec une LISTVIEW et donc j'ai un peu de mal à
>>> suivre comment modifier pour obtenir le résultat
>>>
>>> j'ai crée une ComboBox pour la saisie des refs articles, mais comment dire
>>> qu'il faut faire appel à la colonne 1 de la LISTVIEW pour faire la recherche
>>> et est ce que c'est possible ?
>>>
>>> Le sais tu ?
>>> ========== > >>> voici le code de mon formulaire :
>>>
>>> Private Sub UserForm_Initialize()
>>>
>>>
>>> 'Suppression des titres de colonnes
>>> ListView1.ColumnHeaders.Clear
>>>
>>> 'Alimentation des titres de colonne :
>>> 'Titre de la colonne : "Référence",
>>> 'Largeur de la colonne : ListView1.Width * 0.3,
>>> 'Alignement de la colonne : lvwColumnLeft
>>> ListView1.ColumnHeaders.Add , , "Référence", ListView1.Width * 0.2,
>>> lvwColumnLeft
>>> ListView1.ColumnHeaders.Add , , "Désignation", ListView1.Width * 0.4,
>>> lvwColumnLeft
>>> ListView1.ColumnHeaders.Add , , "Prix public", ListView1.Width * 0.2,
>>> lvwColumnRight
>>> ListView1.ColumnHeaders.Add , , "Valeur Stock Totale", ListView1.Width *
>>> 0.2, lvwColumnRight
>>> Dim iLigArticle As Integer
>>> iLigArticle = 2
>>>
>>> 'Suppression des éléments de la liste
>>> ListView1.ListItems.Clear
>>>
>>> While Workbooks("STOCK.xls").Sheets("STOCK").Cells(iLigArticle, 1) <> ""
>>> 'Alimentation des éléments de la liste
>>> ListView1.ListItems.Add iLigArticle - 1, ,
>>> Sheets("STOCK").Cells(iLigArticle, 1)
>>> ListView1.ListItems(iLigArticle - 1).SubItems(1) =
>>> Sheets("STOCK").Cells(iLigArticle, 6)
>>> ListView1.ListItems(iLigArticle - 1).SubItems(2) =
>>> Format(Sheets("STOCK").Cells(iLigArticle, 8), "## ##0.00 €")
>>> ListView1.ListItems(iLigArticle - 1).SubItems(3) =
>>> Format(Sheets("STOCK").Cells(iLigArticle, 18), "## ##0.00 €")
>>> iLigArticle = iLigArticle + 1
>>> Wend
>>>
>>> TextBoxValeurTotaleStock = Format(Sheets("STOCK").Range("M2").Value, "##
>>> ##0.00 €")
>>>
>>>
>>>
>>>
>>> End Sub
>>> Private Sub ListView1_Click()
>>> 'dès que l'on clique sur l'article, on affiche dans le formulaire
>>> usfDetailArticle les entrées et sorties de stock de l'article
>>>
>>> NumArticle = ListView1.SelectedItem
>>>
>>> Dim Sh As Worksheet
>>> Set Sh = Worksheets("SORTIES")
>>> Dim Article As String
>>>
>>> Article = NumArticle
>>>
>>> On Error Resume Next
>>> With Sh
>>> 'définir la zone de critère
>>> 'choisir l'étiquette de la colonne A1 -> champ où exploiter le filtre
>>> ..Range("K1") = .Range("A1")
>>> ..Range("K2") = Article 'la valeur du critère du filtre
>>> Sh.Range("P1").CurrentRegion.Clear
>>>
>>> 'Définir la plage de cellules pour le filtre...
>>> With .Range("A1:F" & .Range("A65536").End(xlUp).Row)
>>> 'Application du filtre
>>> ..AdvancedFilter Action:=xlFilterCopy, _
>>> CriteriaRange:=Sh.Range("K1:K2"), _
>>> CopyToRange:=Sh.Range("P1"), Unique:úlse
>>> 'Copie vers la cellule où débutera la plage résultat
>>> End With
>>> ..ShowAllData
>>> End With
>>>
>>> If Sh.Range("P2").Value = "" Then
>>> MsgBox ("aucune sortie pour ce produit")
>>>
>>> Else
>>> NumArticle = Sh.Range("P2").Value
>>> With Sheets("STOCK").Range("A:A")
>>> Set c = .Find(NumArticle, LookIn:=xlValues, LookAt:=xlWhole)
>>> If Not c Is Nothing Then Lig = c.Row
>>> End With
>>> End If
>>> UsfDetailArticle.Show
>>> End Sub
>>> Private Sub ComboBox1_Change()
>>> If ComboBox1.MatchFound Then
>>> ListView1.Top = ComboBox1.ListIndex
>>> End If
>>> End Sub
>>>
>>> Private Sub ComboBox1_Exit(ByVal Cancel As MSForms.ReturnBoolean)
>>> ComboBox1.Text = ""
>>> End Sub
>>>
>>> Private Sub ListView1_Change()
>>> Set XDST = [A2]
>>> For XCPT = 0 To ListView1.ListCount - 1
>>> If ListView1.Selected(XCPT) Then
>>> XDST.Offset(0, 0) = ListView1.List(XCPT, 0)
>>> XDST.Offset(0, 1) = ListView1.List(XCPT, 1)
>>> XDST.Offset(0, 2) = ListView1.List(XCPT, 2)
>>> XDST.Offset(0, 3) = ListView1.List(XCPT, 3)
>>> Set XDST = XDST.Offset(1, 0)
>>> End If
>>> Next XCPT
>>> Range(XDST, XDST.End(xlDown)).EntireRow.ClearContents
>>> End Sub
>>> ==================== > >>> As tu une idée là dessus ?
>>>
>>> "Corto" a écrit :
>>>
>>>
>>>
>>>> Bonjour Françoise,
>>>> Tu peux t'inspirer de ce classeur : http://cjoint.com/?dun0RWRua1
>>>> Le truc c'est d'utiliser des ComboBox avec les mêmes données que la
>>>> Listbox et de mettre la propriété ShowDropButtonWhen à 0 pour les
>>>> "déguiser" en simples TextBox
>>>>
>>>> Corto
>>>>
>>>> Françoise a écrit :
>>>>
>>>>
>>>>> Bonjour à tous,
>>>>>
>>>>> SOUS EXCEL 2003
>>>>> question du jour : j'ai un formulaire listant dans une LISTVIEW :
>>>>> ref ARTicle, Designation, Prix HT (environ 500 refs)
>>>>> je veux créer une TextBox qui permettra à l'utilisateur de taper une ref
>>>>> et je voudrais que le curseur se déplace au fur et à mesure vers les refs
>>>>> concernés
>>>>>
>>>>> exemple :
>>>>> Ma liste
>>>>> ABCDE
>>>>> ABDEF
>>>>> ABEFG
>>>>>
>>>>> dans la TextBoxAppelRef si je tape AB
>>>>>
>>>>> Le curseur se positionnera sur la première ref qui commence par AB, soit ABCDE
>>>>>
>>>>> c'est un élément courant dans les formulaires, mais je ne sais comment
>>>>> l'écrire en VBA
>>>>> ====== > >>>>> ce que j'ai fait :
>>>>>
>>>>> If TextBoxAppelArticle <> "" Then
>>>>> Application.Goto Reference:=TextBoxAppelArticle
>>>>> End If
>>>>>
>>>>> ===== > >>>>> Quelqu'un a t il déjà implémenté cela dans un USERFORM ,
>>>>> d'avance merci
>>>>>
>>>>>
>>>>>
Bonjour Françoise,
Désolé mais je ne connaissais pas le contrôle ListView et depuis le
départ je pensais que tu parlais en fait d'un ListBox.
La solution que je te proposais ne fonctionnera pas avec un ListView car
il n'est pas associé à une plage Excel.
En résumé, j'ai perdu une belle occasion de me taire :-X :-! et encore
désolé de t'avoir fait perdre ton temps. :-[
Corto
Françoise a écrit :
> bon, dur, dur.....
> j'ai bien compris le routage vers la colonne, mais lorsque j'insère le code
> après
> Private Sub UserForm_Initialize()
> j'obtiens l'erreur "impossible de lire la propriété RowSource membre
> introuvable
>
> j'ai mis :
> === > > Private Sub UserForm_Initialize()
> ComboBox1.RowSource =
> Range(ListView1.RowSource).Columns(1).Address(External:=True)
> 'On donne au Combo 1 l'adresse de la première colonne du listbox
> === > > puis la suite de la macro déjà donné dans mail ci-dessus
>
> j'ai changé ListBox1 par la ListView1 de mon formulaire)
>
> Qu'est ce que je fais de mal ?????
>
>
> "Corto" a écrit :
>
>
>> Bonjour Françoise,
>> Regarde dans la macro UserForm_Initialize, c'est là que ça se passe.
>> Private Sub UserForm_Initialize()
>> ComboBox1.RowSource = Range(ListBox1.RowSource).Columns(1). _
>> Address(External:=True)
>> /*On donne au Combo 1 l'adresse de la première colonne du listbox*/
>> ComboBox2.RowSource = Range(ListBox1.RowSource).Columns(3). _
>> Address(External:=True)
>> /*On donne au Combo 2 l'adresse de la troisième colonne du listbox*/
>> End Sub
>>
>> Corto
>>
>> Françoise a écrit :
>>
>>> Bonjour Corto et merci pour ta réponse et ton exemple, c'est exactement ce
>>> que je cherche à faire MAIS avec une LISTVIEW et donc j'ai un peu de mal à
>>> suivre comment modifier pour obtenir le résultat
>>>
>>> j'ai crée une ComboBox pour la saisie des refs articles, mais comment dire
>>> qu'il faut faire appel à la colonne 1 de la LISTVIEW pour faire la recherche
>>> et est ce que c'est possible ?
>>>
>>> Le sais tu ?
>>> ========== > >>> voici le code de mon formulaire :
>>>
>>> Private Sub UserForm_Initialize()
>>>
>>>
>>> 'Suppression des titres de colonnes
>>> ListView1.ColumnHeaders.Clear
>>>
>>> 'Alimentation des titres de colonne :
>>> 'Titre de la colonne : "Référence",
>>> 'Largeur de la colonne : ListView1.Width * 0.3,
>>> 'Alignement de la colonne : lvwColumnLeft
>>> ListView1.ColumnHeaders.Add , , "Référence", ListView1.Width * 0.2,
>>> lvwColumnLeft
>>> ListView1.ColumnHeaders.Add , , "Désignation", ListView1.Width * 0.4,
>>> lvwColumnLeft
>>> ListView1.ColumnHeaders.Add , , "Prix public", ListView1.Width * 0.2,
>>> lvwColumnRight
>>> ListView1.ColumnHeaders.Add , , "Valeur Stock Totale", ListView1.Width *
>>> 0.2, lvwColumnRight
>>> Dim iLigArticle As Integer
>>> iLigArticle = 2
>>>
>>> 'Suppression des éléments de la liste
>>> ListView1.ListItems.Clear
>>>
>>> While Workbooks("STOCK.xls").Sheets("STOCK").Cells(iLigArticle, 1) <> ""
>>> 'Alimentation des éléments de la liste
>>> ListView1.ListItems.Add iLigArticle - 1, ,
>>> Sheets("STOCK").Cells(iLigArticle, 1)
>>> ListView1.ListItems(iLigArticle - 1).SubItems(1) =
>>> Sheets("STOCK").Cells(iLigArticle, 6)
>>> ListView1.ListItems(iLigArticle - 1).SubItems(2) =
>>> Format(Sheets("STOCK").Cells(iLigArticle, 8), "## ##0.00 €")
>>> ListView1.ListItems(iLigArticle - 1).SubItems(3) =
>>> Format(Sheets("STOCK").Cells(iLigArticle, 18), "## ##0.00 €")
>>> iLigArticle = iLigArticle + 1
>>> Wend
>>>
>>> TextBoxValeurTotaleStock = Format(Sheets("STOCK").Range("M2").Value, "##
>>> ##0.00 €")
>>>
>>>
>>>
>>>
>>> End Sub
>>> Private Sub ListView1_Click()
>>> 'dès que l'on clique sur l'article, on affiche dans le formulaire
>>> usfDetailArticle les entrées et sorties de stock de l'article
>>>
>>> NumArticle = ListView1.SelectedItem
>>>
>>> Dim Sh As Worksheet
>>> Set Sh = Worksheets("SORTIES")
>>> Dim Article As String
>>>
>>> Article = NumArticle
>>>
>>> On Error Resume Next
>>> With Sh
>>> 'définir la zone de critère
>>> 'choisir l'étiquette de la colonne A1 -> champ où exploiter le filtre
>>> ..Range("K1") = .Range("A1")
>>> ..Range("K2") = Article 'la valeur du critère du filtre
>>> Sh.Range("P1").CurrentRegion.Clear
>>>
>>> 'Définir la plage de cellules pour le filtre...
>>> With .Range("A1:F" & .Range("A65536").End(xlUp).Row)
>>> 'Application du filtre
>>> ..AdvancedFilter Action:=xlFilterCopy, _
>>> CriteriaRange:=Sh.Range("K1:K2"), _
>>> CopyToRange:=Sh.Range("P1"), Unique:úlse
>>> 'Copie vers la cellule où débutera la plage résultat
>>> End With
>>> ..ShowAllData
>>> End With
>>>
>>> If Sh.Range("P2").Value = "" Then
>>> MsgBox ("aucune sortie pour ce produit")
>>>
>>> Else
>>> NumArticle = Sh.Range("P2").Value
>>> With Sheets("STOCK").Range("A:A")
>>> Set c = .Find(NumArticle, LookIn:=xlValues, LookAt:=xlWhole)
>>> If Not c Is Nothing Then Lig = c.Row
>>> End With
>>> End If
>>> UsfDetailArticle.Show
>>> End Sub
>>> Private Sub ComboBox1_Change()
>>> If ComboBox1.MatchFound Then
>>> ListView1.Top = ComboBox1.ListIndex
>>> End If
>>> End Sub
>>>
>>> Private Sub ComboBox1_Exit(ByVal Cancel As MSForms.ReturnBoolean)
>>> ComboBox1.Text = ""
>>> End Sub
>>>
>>> Private Sub ListView1_Change()
>>> Set XDST = [A2]
>>> For XCPT = 0 To ListView1.ListCount - 1
>>> If ListView1.Selected(XCPT) Then
>>> XDST.Offset(0, 0) = ListView1.List(XCPT, 0)
>>> XDST.Offset(0, 1) = ListView1.List(XCPT, 1)
>>> XDST.Offset(0, 2) = ListView1.List(XCPT, 2)
>>> XDST.Offset(0, 3) = ListView1.List(XCPT, 3)
>>> Set XDST = XDST.Offset(1, 0)
>>> End If
>>> Next XCPT
>>> Range(XDST, XDST.End(xlDown)).EntireRow.ClearContents
>>> End Sub
>>> ==================== > >>> As tu une idée là dessus ?
>>>
>>> "Corto" a écrit :
>>>
>>>
>>>
>>>> Bonjour Françoise,
>>>> Tu peux t'inspirer de ce classeur : http://cjoint.com/?dun0RWRua1
>>>> Le truc c'est d'utiliser des ComboBox avec les mêmes données que la
>>>> Listbox et de mettre la propriété ShowDropButtonWhen à 0 pour les
>>>> "déguiser" en simples TextBox
>>>>
>>>> Corto
>>>>
>>>> Françoise a écrit :
>>>>
>>>>
>>>>> Bonjour à tous,
>>>>>
>>>>> SOUS EXCEL 2003
>>>>> question du jour : j'ai un formulaire listant dans une LISTVIEW :
>>>>> ref ARTicle, Designation, Prix HT (environ 500 refs)
>>>>> je veux créer une TextBox qui permettra à l'utilisateur de taper une ref
>>>>> et je voudrais que le curseur se déplace au fur et à mesure vers les refs
>>>>> concernés
>>>>>
>>>>> exemple :
>>>>> Ma liste
>>>>> ABCDE
>>>>> ABDEF
>>>>> ABEFG
>>>>>
>>>>> dans la TextBoxAppelRef si je tape AB
>>>>>
>>>>> Le curseur se positionnera sur la première ref qui commence par AB, soit ABCDE
>>>>>
>>>>> c'est un élément courant dans les formulaires, mais je ne sais comment
>>>>> l'écrire en VBA
>>>>> ====== > >>>>> ce que j'ai fait :
>>>>>
>>>>> If TextBoxAppelArticle <> "" Then
>>>>> Application.Goto Reference:=TextBoxAppelArticle
>>>>> End If
>>>>>
>>>>> ===== > >>>>> Quelqu'un a t il déjà implémenté cela dans un USERFORM ,
>>>>> d'avance merci
>>>>>
>>>>>
>>>>>
Bonjour Françoise,
Désolé mais je ne connaissais pas le contrôle ListView et depuis le
départ je pensais que tu parlais en fait d'un ListBox.
La solution que je te proposais ne fonctionnera pas avec un ListView car
il n'est pas associé à une plage Excel.
En résumé, j'ai perdu une belle occasion de me taire :-X :-! et encore
désolé de t'avoir fait perdre ton temps. :-[
Corto
Françoise a écrit :
> bon, dur, dur.....
> j'ai bien compris le routage vers la colonne, mais lorsque j'insère le code
> après
> Private Sub UserForm_Initialize()
> j'obtiens l'erreur "impossible de lire la propriété RowSource membre
> introuvable
>
> j'ai mis :
> === > > Private Sub UserForm_Initialize()
> ComboBox1.RowSource =
> Range(ListView1.RowSource).Columns(1).Address(External:=True)
> 'On donne au Combo 1 l'adresse de la première colonne du listbox
> === > > puis la suite de la macro déjà donné dans mail ci-dessus
>
> j'ai changé ListBox1 par la ListView1 de mon formulaire)
>
> Qu'est ce que je fais de mal ?????
>
>
> "Corto" a écrit :
>
>
>> Bonjour Françoise,
>> Regarde dans la macro UserForm_Initialize, c'est là que ça se passe.
>> Private Sub UserForm_Initialize()
>> ComboBox1.RowSource = Range(ListBox1.RowSource).Columns(1). _
>> Address(External:=True)
>> /*On donne au Combo 1 l'adresse de la première colonne du listbox*/
>> ComboBox2.RowSource = Range(ListBox1.RowSource).Columns(3). _
>> Address(External:=True)
>> /*On donne au Combo 2 l'adresse de la troisième colonne du listbox*/
>> End Sub
>>
>> Corto
>>
>> Françoise a écrit :
>>
>>> Bonjour Corto et merci pour ta réponse et ton exemple, c'est exactement ce
>>> que je cherche à faire MAIS avec une LISTVIEW et donc j'ai un peu de mal à
>>> suivre comment modifier pour obtenir le résultat
>>>
>>> j'ai crée une ComboBox pour la saisie des refs articles, mais comment dire
>>> qu'il faut faire appel à la colonne 1 de la LISTVIEW pour faire la recherche
>>> et est ce que c'est possible ?
>>>
>>> Le sais tu ?
>>> ========== > >>> voici le code de mon formulaire :
>>>
>>> Private Sub UserForm_Initialize()
>>>
>>>
>>> 'Suppression des titres de colonnes
>>> ListView1.ColumnHeaders.Clear
>>>
>>> 'Alimentation des titres de colonne :
>>> 'Titre de la colonne : "Référence",
>>> 'Largeur de la colonne : ListView1.Width * 0.3,
>>> 'Alignement de la colonne : lvwColumnLeft
>>> ListView1.ColumnHeaders.Add , , "Référence", ListView1.Width * 0.2,
>>> lvwColumnLeft
>>> ListView1.ColumnHeaders.Add , , "Désignation", ListView1.Width * 0.4,
>>> lvwColumnLeft
>>> ListView1.ColumnHeaders.Add , , "Prix public", ListView1.Width * 0.2,
>>> lvwColumnRight
>>> ListView1.ColumnHeaders.Add , , "Valeur Stock Totale", ListView1.Width *
>>> 0.2, lvwColumnRight
>>> Dim iLigArticle As Integer
>>> iLigArticle = 2
>>>
>>> 'Suppression des éléments de la liste
>>> ListView1.ListItems.Clear
>>>
>>> While Workbooks("STOCK.xls").Sheets("STOCK").Cells(iLigArticle, 1) <> ""
>>> 'Alimentation des éléments de la liste
>>> ListView1.ListItems.Add iLigArticle - 1, ,
>>> Sheets("STOCK").Cells(iLigArticle, 1)
>>> ListView1.ListItems(iLigArticle - 1).SubItems(1) =
>>> Sheets("STOCK").Cells(iLigArticle, 6)
>>> ListView1.ListItems(iLigArticle - 1).SubItems(2) =
>>> Format(Sheets("STOCK").Cells(iLigArticle, 8), "## ##0.00 €")
>>> ListView1.ListItems(iLigArticle - 1).SubItems(3) =
>>> Format(Sheets("STOCK").Cells(iLigArticle, 18), "## ##0.00 €")
>>> iLigArticle = iLigArticle + 1
>>> Wend
>>>
>>> TextBoxValeurTotaleStock = Format(Sheets("STOCK").Range("M2").Value, "##
>>> ##0.00 €")
>>>
>>>
>>>
>>>
>>> End Sub
>>> Private Sub ListView1_Click()
>>> 'dès que l'on clique sur l'article, on affiche dans le formulaire
>>> usfDetailArticle les entrées et sorties de stock de l'article
>>>
>>> NumArticle = ListView1.SelectedItem
>>>
>>> Dim Sh As Worksheet
>>> Set Sh = Worksheets("SORTIES")
>>> Dim Article As String
>>>
>>> Article = NumArticle
>>>
>>> On Error Resume Next
>>> With Sh
>>> 'définir la zone de critère
>>> 'choisir l'étiquette de la colonne A1 -> champ où exploiter le filtre
>>> ..Range("K1") = .Range("A1")
>>> ..Range("K2") = Article 'la valeur du critère du filtre
>>> Sh.Range("P1").CurrentRegion.Clear
>>>
>>> 'Définir la plage de cellules pour le filtre...
>>> With .Range("A1:F" & .Range("A65536").End(xlUp).Row)
>>> 'Application du filtre
>>> ..AdvancedFilter Action:=xlFilterCopy, _
>>> CriteriaRange:=Sh.Range("K1:K2"), _
>>> CopyToRange:=Sh.Range("P1"), Unique:úlse
>>> 'Copie vers la cellule où débutera la plage résultat
>>> End With
>>> ..ShowAllData
>>> End With
>>>
>>> If Sh.Range("P2").Value = "" Then
>>> MsgBox ("aucune sortie pour ce produit")
>>>
>>> Else
>>> NumArticle = Sh.Range("P2").Value
>>> With Sheets("STOCK").Range("A:A")
>>> Set c = .Find(NumArticle, LookIn:=xlValues, LookAt:=xlWhole)
>>> If Not c Is Nothing Then Lig = c.Row
>>> End With
>>> End If
>>> UsfDetailArticle.Show
>>> End Sub
>>> Private Sub ComboBox1_Change()
>>> If ComboBox1.MatchFound Then
>>> ListView1.Top = ComboBox1.ListIndex
>>> End If
>>> End Sub
>>>
>>> Private Sub ComboBox1_Exit(ByVal Cancel As MSForms.ReturnBoolean)
>>> ComboBox1.Text = ""
>>> End Sub
>>>
>>> Private Sub ListView1_Change()
>>> Set XDST = [A2]
>>> For XCPT = 0 To ListView1.ListCount - 1
>>> If ListView1.Selected(XCPT) Then
>>> XDST.Offset(0, 0) = ListView1.List(XCPT, 0)
>>> XDST.Offset(0, 1) = ListView1.List(XCPT, 1)
>>> XDST.Offset(0, 2) = ListView1.List(XCPT, 2)
>>> XDST.Offset(0, 3) = ListView1.List(XCPT, 3)
>>> Set XDST = XDST.Offset(1, 0)
>>> End If
>>> Next XCPT
>>> Range(XDST, XDST.End(xlDown)).EntireRow.ClearContents
>>> End Sub
>>> ==================== > >>> As tu une idée là dessus ?
>>>
>>> "Corto" a écrit :
>>>
>>>
>>>
>>>> Bonjour Françoise,
>>>> Tu peux t'inspirer de ce classeur : http://cjoint.com/?dun0RWRua1
>>>> Le truc c'est d'utiliser des ComboBox avec les mêmes données que la
>>>> Listbox et de mettre la propriété ShowDropButtonWhen à 0 pour les
>>>> "déguiser" en simples TextBox
>>>>
>>>> Corto
>>>>
>>>> Françoise a écrit :
>>>>
>>>>
>>>>> Bonjour à tous,
>>>>>
>>>>> SOUS EXCEL 2003
>>>>> question du jour : j'ai un formulaire listant dans une LISTVIEW :
>>>>> ref ARTicle, Designation, Prix HT (environ 500 refs)
>>>>> je veux créer une TextBox qui permettra à l'utilisateur de taper une ref
>>>>> et je voudrais que le curseur se déplace au fur et à mesure vers les refs
>>>>> concernés
>>>>>
>>>>> exemple :
>>>>> Ma liste
>>>>> ABCDE
>>>>> ABDEF
>>>>> ABEFG
>>>>>
>>>>> dans la TextBoxAppelRef si je tape AB
>>>>>
>>>>> Le curseur se positionnera sur la première ref qui commence par AB, soit ABCDE
>>>>>
>>>>> c'est un élément courant dans les formulaires, mais je ne sais comment
>>>>> l'écrire en VBA
>>>>> ====== > >>>>> ce que j'ai fait :
>>>>>
>>>>> If TextBoxAppelArticle <> "" Then
>>>>> Application.Goto Reference:=TextBoxAppelArticle
>>>>> End If
>>>>>
>>>>> ===== > >>>>> Quelqu'un a t il déjà implémenté cela dans un USERFORM ,
>>>>> d'avance merci
>>>>>
>>>>>
>>>>>