Bonjour à tous, Je suis en train de créer un programme qui est censé récupérer certaines valeurs dans un fichier .csv source. Ces valeurs sont triées en fonction de certains critères:
- il faut que les dates soient comprises dans la periode rentrée par l'utilisateur au format "jj/mm/aaaa hh:mm:ss"
- on ne récupère que 3 colonnes.
J'ai deux problèmes:
-1, le programme fonctionnait hier mais avec quelques imperfections: j'arrivait à recopier des valeurs comprises dans mon intervalle de temps mais en plus sa me recopiait d'autres dates ayant le même jour que ma date de début, mais ayant un mois différent. Là je ne comprends plus rien.
- 2, Aujourd'hui le programme fonctionne jusqu'au niveau de la boucle Do Until mais il n'entre pas dans la boucle
AIDEZ MOI SVP!!
- il faut que les dates soient comprises dans la periode rentrée par l'utilisateur au format "jj/mm/aaaa hh:mm:ss"
- on ne récupère que 3 colonnes.
Option Explicit Sub LireCSV() Application.Calculation = xlCalculationManual 'Commande pour diminuer le temps de traitement de la machine Dim Chaine As String Dim Ar() As String Dim i As Long Dim iRow As Long, iCol As Long Dim NumFichier As Integer Dim Separateur As String * 1 Dim fso, fil Set fso = CreateObject("Scripting.FileSystemObject") 'création d'un objet qui nous permet d'ouvrir notre fichier source Set fil = fs Windows("Fenêtre.xlsm").Activate 'Activation de la fenêtre dans laquelle nous sommes en train de travailler Sheets("Filtre").Activate 'Activation de la feuille Filtre dans laquelle je veux recopier les données filtrées Separateur = ";" 'séparateur pour les fichier texte Sheets("Filtre").Cells.Clear 'On supprime tout le contenu des cellules pour s'assurer que nous n'allons pas écrire des données sur des données existantes déjà Application.ScreenUpdating = False 'Pour ne pas voir à l'écran ce que le programme fait NumFichier = FreeFile 'Numero du fichier, aucas où il y'en aura plusieurs iRow = 1 'initialisation du numero de ligne 'Recopie de l'entête dans la première ligne de la feuille Sheets("Filtre").Cells(1, 1) = "Etat" Sheets("Filtre").Cells(1, 2) = "Date et heure" Sheets("Filtre").Cells(1, 3) = "Msg" Do Until fil.AtEndOfStream = True 'Début de la boucle de filtrage (.AtEndOfStream indique la fin du fichier) iCol = 1 'initialisation de la valeur de la colonne Chaine = fil.readline 'une ligne de mon fichier source dans laquuelle les données qont séparés par des points virgule Ar = Split(Chaine, Separateur) 'tableau qui supprime les points virgule et nous renvoie les données en colonnes 'Boucle de filtrage des données 'Si le timestring est comprise dans l'intervalle de dates rentrées par l'utilisateur au format "jj/mm/aaaa hh:mm:ss" If ((Sheets("Feuil1").Cells(9, 3).Value <= Ar(13)) And (Ar(13) <= Sheets("Feuil1").Cells(11, 3).Value)) Then iRow = iRow + 1 'Alors on incrémente le numero de la ligne For i = LBound(Ar) To UBound(Ar) 'On parcourt une ligne du fichier source If (i = 2 Or i = 13 Or i = 14) Then 'On ne récupère que les colonnes choisie Sheets("Filtre").Cells(iRow, iCol) = Ar(i) iCol = iCol + 1 'On incrémente le numero de colonne End If Next i 'Fin de boucle for End If 'fin de condition if Loop 'fin de boucle Do Until fil.Close 'Fermeture du fichier source Application.ScreenUpdating = True 'On peut maintenant continuer d'utiliser notre écran Application.Calculation = xlCalculationAutomatic 'commande pour diminuer le temps de traitement de la machine End Sub |
J'ai deux problèmes:
-1, le programme fonctionnait hier mais avec quelques imperfections: j'arrivait à recopier des valeurs comprises dans mon intervalle de temps mais en plus sa me recopiait d'autres dates ayant le même jour que ma date de début, mais ayant un mois différent. Là je ne comprends plus rien.
- 2, Aujourd'hui le programme fonctionne jusqu'au niveau de la boucle Do Until mais il n'entre pas dans la boucle
AIDEZ MOI SVP!!