XL 2010 Réducteur de ligne

auverland

XLDnaute Occasionnel
Bonjour à Tous

Auriez-vous dans vos macros une tite moulinette pour réduire la fréquence de mes acquisitions ?

Je souhaiterais garder une ligne toutes les 449 lignes car on m'a fourni des acquisition à 450Hz ald 50hz

Merci d'avance et bon dimanche
 

auverland

XLDnaute Occasionnel
Bonjour Job75, Patrick, le forum,

J'ai pas forcement de critères particulier
J'ai des colonnes Date heure temps avec toutes mes données

DateHeureTemps
16/06/2019​
20:24:47​
00:00.0​

J'aimerais garder par exemple une ligne, supprimer les 449ieme suivante garder la 450iem et suprimer les 449 suivantes et cela jusqu'à la fin de mes acquis
 

Laurent78

XLDnaute Occasionnel
Bonjour,
Vous souhaitez :
- supprimer les lignes dans le fichiers TXT d'acquisition ? (assez simple avec PowerQuery)
- supprimer les lignes dans le fichiers Excel, une fois l'importation faite ?
- faire une importation via une macro, en ne prenant qu'une 1 toutes les 50 lignes ?

A vous lire
Bon dimanche
Laurent
 
Dernière édition:

Laurent78

XLDnaute Occasionnel
re Bonjour,
ci-joint un fichier Excel utilisant Power Query (besoin d'aide?) avec les 2 requêtes, l'une sur le fichier .txt à mettre dans c:\Temp, l'autre sur la table Excel.

A priori, je préfère la requête sur le TXT, puisqu'elle n'important que ce dont on a besoin.
A+
Laurent
 

Pièces jointes

  • Aquisition.txt
    146.5 KB · Affichages: 8
  • Extration d'1 ligne sur 450.xlsx
    458.5 KB · Affichages: 9

job75

XLDnaute Barbatruc
Re, bonjour Laurent78,

Pour ceux qui comme moi n'ont pas Power Query voici une solution VBA très classique :
VB:
Sub Import()
Dim fichier$, texte$, lig&, a$(), n&, b(), s, ub%
fichier = ThisWorkbook.Path & "\Fichier TXT.txt" 'à adapter
Open fichier For Input As #1 'accès au fichier
Do While Not EOF(1) 'EndOfFile: fin du fichier
    Line Input #1, texte 'récupère la ligne
    If lig Mod 450 = 0 Then
        ReDim Preserve a(n) 'base 0
        a(n) = texte
        n = n + 1
    End If
    lig = lig + 1
Loop
Close #1
'---transposition---
ReDim b(n, 2) 'base 0
For n = 0 To UBound(a)
    s = Split(a(n), ";")
    ub = UBound(s)
    If ub > -1 Then b(n, 0) = CDate(s(0))
    If ub > 0 Then b(n, 1) = s(1)
    If ub > 1 Then b(n, 2) = s(2)
Next
'---restitution---
With [A2]
    .Resize(n, 3) = b
    .Resize(n, 3).Sort .Cells, xlAscending, Header:=xlNo 'tri sur les dates
    .Offset(n).Resize(Rows.Count - n - .Row + 1).ClearContents 'RAZ en dessous
End With
End Sub
Téléchargez les fichiers joints dans le même dossier (le bureau).

A+
 

Pièces jointes

  • Import(1).xlsm
    23.4 KB · Affichages: 9
  • Fichier TXT.txt
    146.5 KB · Affichages: 10

Laurent78

XLDnaute Occasionnel
J'ai testé avec un fichier texte de 1 000 000 de lignes : ma macro s'exécute en 1, 6 seconde chez moi.
Bonjour Job75,
Juste pour ceux qui lirais ce fils, Power query est dispo depuis certaines versions d'Excel 2010, et plus généralement depuis la version 2013.
Merci pour la macro, cela peut aussi servir
Petite question, est-il plus rapide faire ainsi (tableau "a" intermédiaire) que de remplir la feuille Excel au fur et à mesure ?

Bon dimanche
 

Discussions similaires

Statistiques des forums

Discussions
312 347
Messages
2 087 504
Membres
103 565
dernier inscrit
Fabien78