Comment créer un userform ce tri sélectif?

Le
gloub
Bonjour,
Je suis en train de ranger mon grenier et voudrait retrouver mes
affaires plus rapidement que par le passé. J’ai pensé enregistrer tous
mes objets, leur attribuer un numéro et les mettre dans des bas de
rangement numérotés.
Pour l’instant ma base de données fonctionne grâce au filtre automatique
, mais pourriez vous m’aider à l’utiliser de façon plus conviviale ?
Je travaille sur 4 colonnes
A1=ordre d’enregistrement ; B1= Descriptif de mes articles ; C1= n° de
référence ; d1= n° de bac de rangement
J’aimerais bien créer un userform avec un champ dans lequel je taperais
un élément d’une ligne à chercher et un autre champ qui récupérerait
toute les lignes contenant cet élément.

Par exemple pour chercher un tournevis avec le filtre automatique, je
choisis l’option personnalisé et je tape « tour* » et toutes les lignes
contenant l’élément « tour » s’affichent. J’obtiens bien la liste de
tous mes tournevis.

En utilisant l’enregistreur j’ai récupéré la macro suivante qui
correspond à cette recherche
Sub Macro1()
'
Selection.AutoFilter Field:=2, Criteria1:="=tour*", Operator:=xlAnd
End Sub

Comment intégrer cette macro dans un userform et surtout comment faire
fonctionner l’userform de façà à ce que j'ai un champ dans lequel je
tape ma recherche et un aure champ dans lequel s'affichent les toutes
les lignes correspondant à cette recherche?

Merci pour votre aide.
Questions / Réponses high-tech
Vidéos High-Tech et Jeu Vidéo
Téléchargements
Vos réponses Page 1 / 5
Gagnez chaque mois un abonnement Premium avec GNT : Inscrivez-vous !
Trier par : date / pertinence
FFO
Le #18046171
Salut à toi

Je te propose cette exemple sur le lien ci-dessous

La recherche ne se fait que sur le descriptif de l'article
Feuil1 une liste d'articles avec l'ensemble des paramètres que tu as cités
Actives le Bouton "Recherche"
Saisie dans la fenêtre "Critére de la recherche" un critère de recherche
précédé par "*" si tu veux tout ce qui commence par ou suivi de ce même
caractère si tu veux tout ce qui se termine par ou encadré par ce caractère
si tu veux tout ce qui contient ou sans ce caractère si veux exactement le
critére de recherche

Active le bouton "Recherche"
Tu auras le résultat dans la fenêtre "Résultat de la recherche"
Tu peux sans fermer le formulaire relancer une nouvelle recherche

J'espère que celà correspond à tes attentes
Fais des essais et dis moi !!!

http://www.cijoint.fr/cjlink.php?file=cj200812/cijQEHQ51j.xls
lSteph
Le #18046151
Bonjour,
Supposons Feuil1 avec ces colonnes disposées dans l'ordre énoncé ABCD
sur un nombre de lignes indéterminé et qu'on fasse apparaître le UF
sur dblClic
dans la feuille.

Dans ton projet:
insérer Un userform , mettre un bouton, une combobox, une listebox

'''''code de Feuil1

Option Explicit

Private Sub Worksheet_BeforeDoubleClick(ByVal _
Target As Excel.Range, Cancel As Boolean)
Cancel = True
UserForm1.Show
End Sub

'''''code de userform1

Option Explicit

Private Sub ComboBox1_Change()
Dim i As Long, myarray(65536, 4), j As Long, x As Long
ListBox1.Clear
ListBox1.Visible = ComboBox1.ListIndex > -1
x = 1
For i = 2 To [B65536].End(xlUp).Row
If [b:b].Cells(i) = ComboBox1 Then
For j = 0 To 3
myarray(x, j) = Cells(i, j + 1)
Next j
x = x + 1
End If
Next i
ListBox1.List() = myarray
End Sub

Private Sub CommandButton1_Click()
Unload Me
End Sub


Private Sub UserForm_Initialize()
ComboBox1.RowSource = "$B$2:" & [B65536].End(xlUp).Address
ListBox1.Visible = False
ListBox1.ColumnCount = 4
End Sub
''''''''''''''

'lSteph


On 4 déc, 14:10, gloub
Bonjour,
Je suis en train de ranger mon grenier et voudrait retrouver mes
affaires plus rapidement que par le passé. J’ai pensé enregistrer t ous
mes objets, leur attribuer un numéro et les mettre dans des bas de
rangement numérotés.
Pour l’instant ma base de données fonctionne grâce au filtre automa tique
, mais pourriez vous m’aider à l’utiliser de façon plus convivial e ?
Je travaille sur 4 colonnes
A1=ordre d’enregistrement ; B1= Descriptif de mes articles ; C1= n° de
référence ; d1= n° de bac de rangement
J’aimerais bien créer un userform  avec un champ dans lequel je tap erais
  un élément d’une ligne à chercher  et un autre champ qui r écupérerait
toute les lignes contenant cet élément.

Par exemple pour chercher un tournevis avec le filtre automatique, je
choisis l’option personnalisé et je tape « tour* » et toutes les lignes
contenant l’élément « tour » s’affichent. J’obtiens bien la liste de
tous mes tournevis.

En utilisant l’enregistreur j’ai récupéré la macro suivante qui
correspond à cette recherche
Sub Macro1()
'
     Selection.AutoFilter Field:=2, Criteria1:="=tour*", Oper ator:=xlAnd
End Sub

Comment intégrer cette macro dans un userform  et surtout comment fai re
fonctionner l’userform de façà à ce que j'ai un champ dans lequel je
tape ma recherche et un aure champ dans lequel s'affichent les toutes
les lignes correspondant à cette recherche?

Merci pour votre aide.


lSteph
Le #18046411
ou ceci dans le userform (j'ai changé un peu l'initialize pour éviter
les doublons):

Private Sub ComboBox1_Change()
Dim i As Long, myarray(65536, 4), j As Long, x As Long
ListBox1.Clear
ListBox1.Visible = ComboBox1.ListIndex > -1
x = 1
For i = 2 To [B65536].End(xlUp).Row
If [b:B].Cells(i) = ComboBox1 Then
For j = 0 To 3
myarray(x, j) = Cells(i, j + 1)
Next j
x = x + 1
End If
Next i
ListBox1.List() = myarray
End Sub

Private Sub CommandButton1_Click()
Unload Me
End Sub


Private Sub UserForm_Initialize()
Dim i As Long, myC As New Collection
Do While myC.Count > 0
myC.Remove 1
Loop
On Error Resume Next
For i = 2 To [B65536].End(xlUp).Row
myC.Add Cells(i, 2), CStr(Cells(i, 2))
Next i
ListBox1.Visible = False
ListBox1.ColumnCount = 4
For i = 0 To myC.Count
ComboBox1.AddItem myC(i)
Next

End Sub

'lSteph


On 4 déc, 15:58, lSteph
Bonjour,
Supposons Feuil1 avec ces colonnes disposées dans l'ordre énoncé AB CD
sur un nombre de lignes indéterminé et qu'on fasse apparaître le UF
sur dblClic
dans la feuille.

Dans ton projet:
insérer Un userform , mettre un bouton, une combobox, une listebox

'''''code de Feuil1

Option Explicit

Private Sub Worksheet_BeforeDoubleClick(ByVal _
Target As Excel.Range, Cancel As Boolean)
Cancel = True
UserForm1.Show
End Sub

'''''code de userform1

Option Explicit

Private Sub ComboBox1_Change()
Dim i As Long, myarray(65536, 4), j As Long, x As Long
ListBox1.Clear
ListBox1.Visible = ComboBox1.ListIndex > -1
x = 1
For i = 2 To [B65536].End(xlUp).Row
If [b:b].Cells(i) = ComboBox1 Then
For j = 0 To 3
myarray(x, j) = Cells(i, j + 1)
Next j
x = x + 1
End If
Next i
ListBox1.List() = myarray
End Sub

Private Sub CommandButton1_Click()
Unload Me
End Sub

Private Sub UserForm_Initialize()
ComboBox1.RowSource = "$B$2:" & [B65536].End(xlUp).Address
ListBox1.Visible = False
ListBox1.ColumnCount = 4
End Sub
''''''''''''''

'lSteph

On 4 déc, 14:10, gloub
> Bonjour,
> Je suis en train de ranger mon grenier et voudrait retrouver mes
> affaires plus rapidement que par le passé. J’ai pensé enregistrer tous
> mes objets, leur attribuer un numéro et les mettre dans des bas de
> rangement numérotés.
> Pour l’instant ma base de données fonctionne grâce au filtre auto matique
> , mais pourriez vous m’aider à l’utiliser de façon plus convivi ale ?
> Je travaille sur 4 colonnes
> A1=ordre d’enregistrement ; B1= Descriptif de mes articles ; C1 = n° de
> référence ; d1= n° de bac de rangement
> J’aimerais bien créer un userform  avec un champ dans lequel je t aperais
>   un élément d’une ligne à chercher  et un autre champ qui récupérerait
> toute les lignes contenant cet élément.

> Par exemple pour chercher un tournevis avec le filtre automatique, je
> choisis l’option personnalisé et je tape « tour* » et toutes le s lignes
> contenant l’élément « tour » s’affichent. J’obtiens bien la liste de
> tous mes tournevis.

> En utilisant l’enregistreur j’ai récupéré la macro suivante q ui
> correspond à cette recherche
> Sub Macro1()
> '
>      Selection.AutoFilter Field:=2, Criteria1:="=tour*", Op erator:=xlAnd
> End Sub

> Comment intégrer cette macro dans un userform  et surtout comment f aire
> fonctionner l’userform de façà à ce que j'ai un champ dans lequ el je
> tape ma recherche et un aure champ dans lequel s'affichent les toutes
> les lignes correspondant à cette recherche?

> Merci pour votre aide.


lSteph
Le #18046391
Re,
S'il faut un exemple http://cjoint.com/?meqpht5Stv
pour ce qui restera heureusement j'ai mis le code plus haut!

__
lSteph


On 4 déc, 14:10, gloub
Bonjour,
Je suis en train de ranger mon grenier et voudrait retrouver mes
affaires plus rapidement que par le passé. J’ai pensé enregistrer t ous
mes objets, leur attribuer un numéro et les mettre dans des bas de
rangement numérotés.
Pour l’instant ma base de données fonctionne grâce au filtre automa tique
, mais pourriez vous m’aider à l’utiliser de façon plus convivial e ?
Je travaille sur 4 colonnes
A1=ordre d’enregistrement ; B1= Descriptif de mes articles ; C1= n° de
référence ; d1= n° de bac de rangement
J’aimerais bien créer un userform  avec un champ dans lequel je tap erais
  un élément d’une ligne à chercher  et un autre champ qui r écupérerait
toute les lignes contenant cet élément.

Par exemple pour chercher un tournevis avec le filtre automatique, je
choisis l’option personnalisé et je tape « tour* » et toutes les lignes
contenant l’élément « tour » s’affichent. J’obtiens bien la liste de
tous mes tournevis.

En utilisant l’enregistreur j’ai récupéré la macro suivante qui
correspond à cette recherche
Sub Macro1()
'
     Selection.AutoFilter Field:=2, Criteria1:="=tour*", Oper ator:=xlAnd
End Sub

Comment intégrer cette macro dans un userform  et surtout comment fai re
fonctionner l’userform de façà à ce que j'ai un champ dans lequel je
tape ma recherche et un aure champ dans lequel s'affichent les toutes
les lignes correspondant à cette recherche?

Merci pour votre aide.


lSteph
Le #18046361
[HS] héééé! Mais dans ton grenier, t'avais pas un casque à pointe !?

;-)


On 4 déc, 14:10, gloub
gloub
Le #18046761
Justement, j'étais en train de me demander si t'étais bien le "méchant"
champignonneur dont je ne retrouve plus trace.

J'ai fait un gros vide pour ma retraite et j'ai perdu bp de trucs, sauf
la mémoir.
Je n'oublie pas mùes bienfaiteur et te remercie vivement pour ton aide.
Je vais essyer de comprendre à mon rythme et te tiendrai au courant.
Encore merci

Bonne soirée
La tête de boche


lSteph a écrit :
[HS] héééé! Mais dans ton grenier, t'avais pas un casque à pointe!?

;-)


On 4 déc, 14:10, gloub

gloub
Le #18047001
FFO a écrit :
Salut à toi

Je te propose cette exemple sur le lien ci-dessous

La recherche ne se fait que sur le descriptif de l'article
Feuil1 une liste d'articles avec l'ensemble des paramètres que tu as cités
Actives le Bouton "Recherche"
Saisie dans la fenêtre "Critére de la recherche" un critère de recherche
précédé par "*" si tu veux tout ce qui commence par ou suivi de ce même
caractère si tu veux tout ce qui se termine par ou encadré par ce caractère
si tu veux tout ce qui contient ou sans ce caractère si veux exactement le
critére de recherche

Active le bouton "Recherche"
Tu auras le résultat dans la fenêtre "Résultat de la recherche"
Tu peux sans fermer le formulaire relancer une nouvelle recherche

J'espère que celà correspond à tes attentes
Fais des essais et dis moi !!!

http://www.cijoint.fr/cjlink.php?file=cj200812/cijQEHQ51j.xls




Merci de m'avoir répondu aussi vite.

Je viens de tester ton fichier.

Cela ressemble effectivement à ce que je cherche, mais en essayant de
lle faire fonctionner j'obtiens l'erreur d'execution 1004: La méthode
autofilter de la classe range a echoué.
Dans le champ critère de recherche j'ai tapé kit* puis j'ai cliqué sur
le bouton "recherche" purpour obtenir toutes les lignes contenant le mot
kit et ça bugue!
Pas de chance. Moi pas comprendre pourquoi. Que faire?
gloub
Le #18047471
Re,
Je viens de faire joujou avec ton code.
Ca marche bien quand la ligne de désignation de l'article ne contient
qu'un mot, mais si par exemple à la place de clou, je mets clou de
girofle, les autres "clou ne s'affichent pas.

En apprenti sorcier, j'ai essayé de rajouté une colonne pour indiquer la
"quantité" d'objets, mais ça ne s'affiche pas.
Faut dire que j'ai seulement mis un 5 à la place du 4 dans ton code,
pour qu'il balaye un peu plus large, mais il ne veut rien chiquer , il
ne veut pas m'afficher un cinquième colonne.

Voilà ce que j'ai fait:

Dans combox1_change:

Dim i As Long, myarray(600, 5), j As Long, x As Long

Dans userform_initialise:
ListBox1.ColumnCount = 5

Bonne soirée à toi

Michel


lSteph a écrit :
Re,
S'il faut un exemple http://cjoint.com/?meqpht5Stv
pour ce qui restera heureusement j'ai mis le code plus haut!

__
lSteph


On 4 déc, 14:10, gloub
Bonjour,
Je suis en train de ranger mon grenier et voudrait retrouver mes
affaires plus rapidement que par le passé. J’ai pensé enregistrer tous
mes objets, leur attribuer un numéro et les mettre dans des bas de
rangement numérotés.
Pour l’instant ma base de données fonctionne grâce au filtre automatique
, mais pourriez vous m’aider à l’utiliser de façon plus conviviale ?
Je travaille sur 4 colonnes
A1=ordre d’enregistrement ; B1= Descriptif de mes articles ; C1= n° de
référence ; d1= n° de bac de rangement
J’aimerais bien créer un userform avec un champ dans lequel je taperais
un élément d’une ligne à chercher et un autre champ qui récupérerait
toute les lignes contenant cet élément.

Par exemple pour chercher un tournevis avec le filtre automatique, je
choisis l’option personnalisé et je tape « tour* » et toutes les lignes
contenant l’élément « tour » s’affichent. J’obtiens bien la liste de
tous mes tournevis.

En utilisant l’enregistreur j’ai récupéré la macro suivante qui
correspond à cette recherche
Sub Macro1()
'
Selection.AutoFilter Field:=2, Criteria1:="=tour*", Operator:=xlAnd
End Sub

Comment intégrer cette macro dans un userform et surtout comment faire
fonctionner l’userform de façà à ce que j'ai un champ dans lequel je
tape ma recherche et un aure champ dans lequel s'affichent les toutes
les lignes correspondant à cette recherche?

Merci pour votre aide.





LSteph
Le #18048711
Bonjour,
Normal !
si je mettais un clou dans ton plat à la place du clou de girofle tu
aurais mal aux dents!

--
LSteph

gloub a écrit :

Re,
Je viens de faire joujou avec ton code.
Ca marche bien quand la ligne de désignation de l'article ne contient
qu'un mot, mais si par exemple à la place de clou, je mets clou de
girofle, les autres "clou ne s'affichent pas.

En apprenti sorcier, j'ai essayé de rajouté une colonne pour indiquer la
"quantité" d'objets, mais ça ne s'affiche pas.
Faut dire que j'ai seulement mis un 5 à la place du 4 dans ton code,
pour qu'il balaye un peu plus large, mais il ne veut rien chiquer , il
ne veut pas m'afficher un cinquième colonne.

Voilà ce que j'ai fait:

Dans combox1_change:

Dim i As Long, myarray(600, 5), j As Long, x As Long

Dans userform_initialise:
ListBox1.ColumnCount = 5

Bonne soirée à toi

Michel


lSteph a écrit :
Re,
S'il faut un exemple http://cjoint.com/?meqpht5Stv
pour ce qui restera heureusement j'ai mis le code plus haut!

__
lSteph


On 4 déc, 14:10, gloub
Bonjour,
Je suis en train de ranger mon grenier et voudrait retrouver mes
affaires plus rapidement que par le passé. J’ai pensé enregistrer tous
mes objets, leur attribuer un numéro et les mettre dans des bas de
rangement numérotés.
Pour l’instant ma base de données fonctionne grâce au filtre automatique
, mais pourriez vous m’aider à l’utiliser de façon plus conviviale ?
Je travaille sur 4 colonnes
A1=ordre d’enregistrement ; B1= Descriptif de mes articles ; C1= n° de
référence ; d1= n° de bac de rangement
J’aimerais bien créer un userform avec un champ dans lequel je taperais
un élément d’une ligne à chercher et un autre champ qui récupérerait
toute les lignes contenant cet élément.

Par exemple pour chercher un tournevis avec le filtre automatique, je
choisis l’option personnalisé et je tape « tour* » et toutes les lignes
contenant l’élément « tour » s’affichent. J’obtiens bien la liste de
tous mes tournevis.

En utilisant l’enregistreur j’ai récupéré la macro suivante qui
correspond à cette recherche
Sub Macro1()
'
Selection.AutoFilter Field:=2, Criteria1:="=tour*", Operator:=xlAnd
End Sub

Comment intégrer cette macro dans un userform et surtout comment faire
fonctionner l’userform de façà à ce que j'ai un champ dans lequel je
tape ma recherche et un aure champ dans lequel s'affichent les toutes
les lignes correspondant à cette recherche?

Merci pour votre aide.







LSteph
Le #18048701
.. je viens de tester, si j'ajoute "de girofle" derrière un clou
j'obtiens bien, à la fois clou et clou de girofle dans le premier choix
puis selon celui que je sélectionne j'obtiens convenablement ce qui
correspond et pas l'autre, dans la liste!


gloub a écrit :

Re,
Je viens de faire joujou avec ton code.
Ca marche bien quand la ligne de désignation de l'article ne contient
qu'un mot, mais si par exemple à la place de clou, je mets clou de
girofle, les autres "clou ne s'affichent pas.

En apprenti sorcier, j'ai essayé de rajouté une colonne pour indiquer la
"quantité" d'objets, mais ça ne s'affiche pas.
Faut dire que j'ai seulement mis un 5 à la place du 4 dans ton code,
pour qu'il balaye un peu plus large, mais il ne veut rien chiquer , il
ne veut pas m'afficher un cinquième colonne.

Voilà ce que j'ai fait:

Dans combox1_change:

Dim i As Long, myarray(600, 5), j As Long, x As Long

Dans userform_initialise:
ListBox1.ColumnCount = 5

Bonne soirée à toi

Michel


lSteph a écrit :
Re,
S'il faut un exemple http://cjoint.com/?meqpht5Stv
pour ce qui restera heureusement j'ai mis le code plus haut!

__
lSteph


On 4 déc, 14:10, gloub
Bonjour,
Je suis en train de ranger mon grenier et voudrait retrouver mes
affaires plus rapidement que par le passé. J’ai pensé enregistrer tous
mes objets, leur attribuer un numéro et les mettre dans des bas de
rangement numérotés.
Pour l’instant ma base de données fonctionne grâce au filtre automatique
, mais pourriez vous m’aider à l’utiliser de façon plus conviviale ?
Je travaille sur 4 colonnes
A1=ordre d’enregistrement ; B1= Descriptif de mes articles ; C1= n° de
référence ; d1= n° de bac de rangement
J’aimerais bien créer un userform avec un champ dans lequel je taperais
un élément d’une ligne à chercher et un autre champ qui récupérerait
toute les lignes contenant cet élément.

Par exemple pour chercher un tournevis avec le filtre automatique, je
choisis l’option personnalisé et je tape « tour* » et toutes les lignes
contenant l’élément « tour » s’affichent. J’obtiens bien la liste de
tous mes tournevis.

En utilisant l’enregistreur j’ai récupéré la macro suivante qui
correspond à cette recherche
Sub Macro1()
'
Selection.AutoFilter Field:=2, Criteria1:="=tour*", Operator:=xlAnd
End Sub

Comment intégrer cette macro dans un userform et surtout comment faire
fonctionner l’userform de façà à ce que j'ai un champ dans lequel je
tape ma recherche et un aure champ dans lequel s'affichent les toutes
les lignes correspondant à cette recherche?

Merci pour votre aide.







Publicité
Poster une réponse
Anonyme