ok
Je joint mon code qui permet de faire ma recherche et recupérer les information qu'il me faut mais cela avec des boucles, et ca marche. Mais j'aimerai utiliser Autofilter pour gagner du temps de recherche.
Sub prg(IntID As Integer, IntNumber As Integer)
'déclaration des variables
Dim docexcel As Excel.Workbook
Dim xlSht
Dim NumLigne As Integer
Dim IDlu As Integer
Dim Numlu As Integer
Dim errorcode As String
Dim severity As String
Dim intitule As String
Dim cause As String
Dim remedes As String
NumLigne = 2
'le prog va aller chercher les informations du défaut dans le fichierexcel:
Set
docexcel = CreateObject('Excel.Application')
docexcel.Visible = False
docexcel.Workbooks.Open 'C:docexcel.xls'
Set
xlSht = docexcel.ActiveSheet
'tant que il y a des données ou que le code n'a pas été trouvé
Do
IDlu = xlSht.Application.Cells(NumLigne, 1)
'si le code lu est le même que celui saisi
If
IDlu = IntID Then
Do
' on parcourt tt le erreur qui on l'ID de notre erreur
Numlu = xlSht.Application.Cells(NumLigne, 3)
If
Numlu = IntNumber Then
errorcode = xlSht.Cells(NumLigne, 2)
severity = xlSht.Cells(NumLigne, 4)
intitule = xlSht.Cells(NumLigne, 5)
cause = xlSht.Cells(NumLigne, 6)
remedes = xlSht.Cells(NumLigne, 7)
Exit Do
' l'erreur a été trouvé on peut sortir de la boucle
End If
NumLigne = NumLigne + 1
Loop While
IDlu = IntID
Exit Do
'sort de la boucle si le code a été trouvé ou que l'erreur n'est pas repertoriée
End If
NumLigne = NumLigne + 1
Loop While
(xlSht.Application.Cells(NumLigne, 1) <> '')
'ferme le document excel
docexcel.Application.Quit
End Sub
----------------------------------------------------------------------------
sinon j'ai essayé de faire un essaie plus simple en vba avec autofilter est ca donne ca :
Worksheets('7d8041error').Range('A1').AutoFilter field:=1, Criteria1:='20'
Worksheets('7d8041error').Range('A1').AutoFilter field:=3, Criteria1:='15'
ActiveWorkbook.Names.Add Name:='resultat', RefersToR1C1:='=' & _
ActiveSheet.AutoFilter.Range.SpecialCells(xlCellTypeVisible).Address(ReferenceStyle:=xlR1C1, RowAbsolute:=True, _
ColumnAbsolute:=True, external:=True)
A l'affichage j'obtiens bien une seule ligne et quand je selection dans le menu déroulant 'resultat' j'ai bien a selection mais comment fait t'ont pour recupérer la ligne selectionée, genre avoir le numéro de ligne serait suffisant mais faut encore trouver la méthode qui recupére ce numéro de ligne.
Je suis désolé si mes explications ne sont pas tres clair, mais je fais du mieux que je peux.
Merci d'avance.