ptithomm
Messages postés10Date d'inscriptionjeudi 15 avril 2004StatutMembreDernière intervention17 mai 2006
-
24 mars 2005 à 10:54
valtrase
Messages postés937Date d'inscriptionlundi 19 janvier 2004StatutMembreDernière intervention 9 mai 2022
-
25 mars 2005 à 10:52
Bonjour,
Je cherche a trie un document excel depui une autre application en vb.
ca j'ai besoin de trouver une ligne dans ce document grace a la
connaissance de 2parametre de 2 colonnes.
Mais si je fait un recherche ligne a ligne ca prend bcp de temps (
jusqu'a 1min) car mon document contient environ 5000 lignes. Je sais
pas si faire un filtre sur le document excel est possible depuis une
autre appli. et je sais pas si ca peut faire gagner du tps.
en gros en macro excel ca donne :
Selection.AutoFilter Field:=1, Criteria1:="3"
Selection.AutoFilter Field:=3, Criteria1:="4"
Selection.AutoFilter Field:=1
Selection.AutoFilter Field:=3
Mais je veux faire ca depuis une autre appli
pour l'instant je fait une recherche ligne a ligne. Voila ce mon code:
Public Sub defautsysteme(IntID As Integer, IntNumber As Integer)
'déclaration des variables
Dim docexcel 'As Excel.Application
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
Screen.MousePointer = vbHourglass
'le prog va aller chercher les informations du défaut dans le fichier excel:
Set docexcel = CreateObject("Excel.Application")
docexcel.Visible = False
docexcel.Workbooks.Open "C:\Defaut_sys.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
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
Quelqu'un a t'il une solution ou peut il m'aider, svp? merci d'avance.
valtrase
Messages postés937Date d'inscriptionlundi 19 janvier 2004StatutMembreDernière intervention 9 mai 20223 25 mars 2005 à 10:52
Re,
Sinon en gros quand tu crée to appi Docexcel et ta feuille xlScht tu as sous la main toutes les propriétées et méthode de ses objets
je te conseille de faire un for each qui est plus rapide qu'une boucle