Tous d'abord bonjour !
Je viens de m'inscrire sur ce forum, car je suis en train de dév une aplli en vba dont l'un des but et de rechercher en fonction d'un ou plusieurs critères des éléments dans une base de donnée.
C'est une basse de donnée composée de produit industrielle ( Numéro de commande, réf article etc) et de remarques associées à la commande.
Ce que je cherche à faire, grâce à un user forme, entrer plusieurs critères (ref article etc.) et que s'affiche toutes les remarques associées aux critères (Il peut très bien y avoir plusieurs remarque pour un seul critère).
pour faire cela je me suis inspiré d'un programme trouvé sur ce forum, mais je n'arrive pas à l'adapter (sachant que je suis sous excel 97), en faite des que je rentre une valeur dans le champ de recherche, vba me retourne une erreur 1004, au niveau du FIND...
Aussi la recherche dois commencer à la ligne 4 (2 à l'origine)... et pour l'instant je n'utilise que deux champs de recherche (4 à l'origine)... Ma feuille de travail est "carccmd". le userform ce nomme "userform2"
Je mes mon code à dispo pour que vous puissiez juger par vous même...
Egalement nouvelle version prenant en compte les modifs...v1.1
Regarde la pièce jointe essai base de donnée (vidée).zip
Merci d'avance pour votre aide...
PS : Ha oui,aussi... je suis une bille en VBA... en gros j'ai commencé pour la première fois à programmer la semaine dernière...
Je ne suis donc pas totale au faite de toute les subtilités de ce langage.
Je viens de m'inscrire sur ce forum, car je suis en train de dév une aplli en vba dont l'un des but et de rechercher en fonction d'un ou plusieurs critères des éléments dans une base de donnée.
C'est une basse de donnée composée de produit industrielle ( Numéro de commande, réf article etc) et de remarques associées à la commande.
Ce que je cherche à faire, grâce à un user forme, entrer plusieurs critères (ref article etc.) et que s'affiche toutes les remarques associées aux critères (Il peut très bien y avoir plusieurs remarque pour un seul critère).
pour faire cela je me suis inspiré d'un programme trouvé sur ce forum, mais je n'arrive pas à l'adapter (sachant que je suis sous excel 97), en faite des que je rentre une valeur dans le champ de recherche, vba me retourne une erreur 1004, au niveau du FIND...
Aussi la recherche dois commencer à la ligne 4 (2 à l'origine)... et pour l'instant je n'utilise que deux champs de recherche (4 à l'origine)... Ma feuille de travail est "carccmd". le userform ce nomme "userform2"
Je mes mon code à dispo pour que vous puissiez juger par vous même...
Version 1.1 prenant en compte les remarques ci-dessous.
Private Sub ListBox1_Click()
Sheets("carccmd").Cells(UserForm2.ListBox1.List(UserForm2.ListBox1.ListIndex, 2), 4).Select
End Sub
Private Sub TextBox1_Change()
Call chercher(TextBox1.Value, 2)
End Sub
Private Sub TextBox2_Change()
Call chercher(TextBox2.Value, 3)
End Sub
Private Sub TextBox3_Change()
Call chercher(TextBox3.Value, 4)
End Sub
Private Sub TextBox4_Change()
Call chercher(TextBox4.Value, 5)
End Sub
Public Sub chercher(rech As String, c As Integer) ' recherche d'une chaine
Dim sel As Range
Dim valide As Boolean
Dim i As Integer
Dim l As Long
Dim n As Integer
.....l = 5: n = 0
.....UserForm2.ListBox1.Clear
With Worksheets("carccmd")
.....If rech = "" Then Exit Sub
Do
.....Set sel = .Cells.Find(What:=rech, After:=.Cells(l, c), LookIn:=xlValues, LookAt:=xlPart, SearchOrder:=xlByColumns, SearchDirection:=xlNext, MatchCase:=False)
.....If sel Is Nothing Then Exit Do
.....If sel.Column <> c Then Exit Do
.....If sel.Row <= l Then Exit Do
.....l = sel.Row
.....valide = True
.....For i = 2 To 5
..........If UserForm2.Controls("TextBox" & i).Value <> "" _
...............And InStr(1, LCase(.Cells(l, i).Value), LCase(UserForm2.Controls("TextBox" & i).Value)) 'je dois aussi avoir une erreur ici...
...............= 0 Then valide = False
.....Next i
.....If valide Then
..........UserForm2.ListBox1.AddItem _
...............(.Cells(l, 1).Value & " " & .Cells(l, 2).Value)
..........UserForm2.ListBox1.List(n, 2) = sel.Row
..........n = n + 1
.....End If
Loop
End With
End Sub
Egalement nouvelle version prenant en compte les modifs...v1.1
Regarde la pièce jointe essai base de donnée (vidée).zip
Merci d'avance pour votre aide...
PS : Ha oui,aussi... je suis une bille en VBA... en gros j'ai commencé pour la première fois à programmer la semaine dernière...
Je ne suis donc pas totale au faite de toute les subtilités de ce langage.
Dernière édition: