|
Publicité | ||||||||||||||||||||||
|
|
#1 |
|
Nouveau membre du Club
![]() Date d'inscription: avril 2007
Messages: 72
|
Bonjour,
On va dire que le titre n'est pas très très explicite mais on va faire avec... Une fois par semaine, je doit réaliser une vérification des performance de la semaine passé à l'aide d'un fichier CSV ( de 12 à 13000 ligne fourni par le serveur et non modifiable) je dois donc extraire les fiches (lignes) qui ont certain critere
j'ai tout d'abord penser à un filtre automatique, mais a ma grande surprise, dans la colonne date, il (excel) concidere que la cellule est une date ou du texte ce qui fausse le filtre auto. De plus vu le nombre de donnée differente le filtre auto se limite a un certain nombre et les dernieres dates valide sont en 2008. J'ai donc fais un parcours complet du fichier avec un verification des conditions mais cette macro prend a peu pres 30 à 40 min... Y aurai-t-il une solution plus rapide ? Merci ci-joint le code que j'ai développer : Code :
Sub sla() Dim fich_csv As Workbook Dim nb_ligne As Long Dim cpt As Long Dim parcours As Long Dim date_debut As String Dim date_fin As String Application.ScreenUpdating = False Set fich_csv = Workbooks.Open(Application.GetOpenFilename("Excel file (*.csv), *.csv", , "Selectionnez la derniere extraction eRequester")) date_debut = InputBox("entrez la date de début de période") date_fin = InputBox("entrez la date de fin de période") nb_ligne = Range("A1", Range("A1").End(xlDown)).Count parcours = 2 For cpt = 2 To nb_ligne If condition(date_debut, date_fin, parcours) Then parcours = parcours + 1 Else Range("m" & parcours).EntireRow.Delete End If Next Application.ScreenUpdating = True End Sub Function condition(date_deb As String, date_fin As String, parcours As Long) As Boolean condition = False If Range("m" & parcours).Value = "Closed" Then If Range("K" & parcours).Value = "Maintenance Corrective" Or Range("K" & parcours).Value = "Evolution mineure" Then If Range("CY" & parcours).Value <> "" Then If CDate(Range("CY" & parcours).Value) >= CDate(date_deb) And CDate(Range("CY" & parcours).Value) <= CDate(date_fin) Then condition = True End If Else If CDate(Range("N" & parcours).Value) >= CDate(date_deb) And CDate(Range("N" & parcours).Value) <= CDate(date_fin) Then condition = True End If End If End If End If End Function |
|
|
|
|
|
![]() |
||
[XL-2003] Extraire quelques lignes de donnée d'un fichier CSV de 14000 ligne
|
||
| Outils de la discussion | |
|
|