Précédent   Forum des professionnels en informatique > Logiciels > Microsoft Office > Excel > Macros et VBA Excel
Macros et VBA Excel Vos questions relatives aux macros Excel, à l'utilisation de VBA et à l'automatisation de vos classeurs Excel.
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
Vieux 03/02/2010, 16h00   #1
Nouveau membre du Club
 
Date d'inscription: avril 2007
Messages: 72
Par défaut Extraire quelques lignes de donnée d'un fichier CSV de 14000 ligne

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
  • un statut clos
  • la date comprise entre lundi et dimanche de la semaine derniere ( rentré manuellement)
  • un type : MAC ou EVO

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 
 
imaril est déconnecté   Envoyer un message privé Réponse avec citation
NEWS EXCELF.A.Q EXCELTUTORIELS EXCELSOURCES EXCELOUTILS EXCELLIVRES EXCELOFFICE 2010

Réponse Proposer ce sujet en actualité

Précédent   Forum des professionnels en informatique > Logiciels > Microsoft Office > Excel > Macros et VBA Excel



Outils de la discussion

Règles de messages
Vous ne pouvez pas créer de nouvelles discussions
Vous ne pouvez pas envoyer des réponses
Vous ne pouvez pas envoyer des pièces jointes
Vous ne pouvez pas modifier vos messages

Les balises BB sont activées : oui
Les smileys sont activés : oui
La balise [IMG] est activée : oui
Le code HTML peut être employé : non
Trackbacks are non
Pingbacks are non
Refbacks are non



Fuseau horaire GMT +1. Il est actuellement 07h23.


Vos questions techniques : forum d'entraide Excel - Publiez vos articles, tutoriels et cours
et rejoignez-nous dans l'équipe de rédaction du club d'entraide des développeurs francophones
Nous contacter - Hébergement - Participez - Copyright © 2000-2010 www.developpez.com - Legal informations.