La limite de 65000 lignes !

Fermé
ddj017 Messages postés 5 Date d'inscription lundi 21 juillet 2008 Statut Membre Dernière intervention 2 mars 2009 - 21 juil. 2008 à 10:06
ddj017 Messages postés 5 Date d'inscription lundi 21 juillet 2008 Statut Membre Dernière intervention 2 mars 2009 - 22 juil. 2008 à 14:53
Bonjour,
... et merci d'avance pour toute l'aide fournie à l'ignare que je suis.
Un système de capteurs transmet des mesures vers une application tierce, qui les traites, mais
écrit également les mesures dans un fichier texte (une ligne = date + heure et la valeur de tous
les capteurs). Une feuille Excel (traitement des mesures personnalisé) importe ces mesures à
partir du fichier texte. Tout est ok ... aussi longtemps que le fichier texte a enregistré la 65000
ème mesure ... et là, .... Excel se plante !
Comment faire ?
- limiter les lignes dans le fichier texte à 65000 et effacer les lignes les plus anciennes .....
mais comment faire ???
- Demander à Excel de ne lire que les 65000 dernières mesures (ou 60000 ...) ....
- ou encore créer une macro ou un script qui va effacer un lot de ligne anciennes (10000 par
ex) chaque fois que la limite des 65000 est atteinte ??? Mais là aussi comment faire !
Voilà, c'est pas simple.
Merci encore

5 réponses

dubcek Messages postés 18718 Date d'inscription lundi 15 janvier 2007 Statut Contributeur Dernière intervention 22 mars 2024 5 615
21 juil. 2008 à 11:03
oui, 65000 lignes est la limite
A quelle cadence sont produites ces données ?
pourquoi ne pas faire un fichier par jour ?
toutes tes propositions sont possibles, c'est à faire en .bat Windows ?
0
Merci beaucoup pour l'aimable réponse.
Le fichier texte reçoit une nouvelle ligne de mesures toute les 5 secondes, le rafraichissement de la feuille excel se fait toute les minutes (le minimum prévu), mais ces valeurs sont susceptibles d'êtres adaptées.
Via fichiers .bat ???? Tu as une suggestion de structure ?
Un fichier par jour, oui cela peut être une bonne piste, mais il faut sauter à la corde avec les noms et l'écriture des fichiers pour ne pas interrompre le process.
Le programme trier, peut écrire un nouveau fichier par jour, il crée alors un fichier nom_date.txt ou date_nom.txt , je ne sais plus ainsi que le format de la date, je dois vérifier ("nom" étant du libre choix de l'opérateur).

J'attendrai avec impatience le prochain message, c'est bien agréable de pouvoir bénéficier de toute ces compétences!

Merci
0
dubcek Messages postés 18718 Date d'inscription lundi 15 janvier 2007 Statut Contributeur Dernière intervention 22 mars 2024 5 615
22 juil. 2008 à 09:53
est-ce que le programme démarre toute les 5 secs ou s'exécute en continu et génère des données toute les 5 secs ?
est ce qu'il tourne 24/24 ?
parce que pour changer le nom du fichier de sortie, il faut que l'application le re-ouvre.
Par ex. à travers les tâches planifiées, arréter le prog. à 23h59m58 et le redémarrer à 0h0m3 avec un nouveau nom utilisant la date.
on peut aussi utiliser un lien:
fichier_sorte -> fichier_ AAAAMMJJ
en ecrivant dans fichier_sortie et en changeant le lien chaque jour
0
ddj017 Messages postés 5 Date d'inscription lundi 21 juillet 2008 Statut Membre Dernière intervention 2 mars 2009
22 juil. 2008 à 14:45
Merci pour votre réflexion et aide.
le programme tiers écrit une nouvelle ligne avec les mesures toute les 5 secondes (mais cette valeur est paramétrable).
excel, lui, va lire les data toutes les minutes. A mon avis le fichier texte reste ouvert pendant toute la session du programme tiers qui en fait tourne sans désemparer (au fait comment je pourrais vérifier s'il ouvre puis ferme après chaque écriture le fichier texte ?)
0
lermite222 Messages postés 8702 Date d'inscription dimanche 8 avril 2007 Statut Contributeur Dernière intervention 22 janvier 2020 1 190
22 juil. 2008 à 10:22
Bonjour,
pourquoi pas faire tout simplement une macro avec VBA d'excel ?
Comme par exemple ta première solution, décaler de 10000 lignes vers le haut
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
Static PR As Boolean
    If PR Then Exit Sub
    
    If Target.Row >= 65000 Then
        PR = True
        Rows("1:10000").Select
        Selection.Delete Shift:=xlUp
        Range("A55000").Select
        PR = False
    End If

End Sub

Possible que si les entrées sont en mode DDE l'événement change ne soit pas solicité, faut alors essayé avec calculate.
Mais d'autre solutions sont possible.. commencé une autre page, un autre classeur..
A+
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
ddj017 Messages postés 5 Date d'inscription lundi 21 juillet 2008 Statut Membre Dernière intervention 2 mars 2009
22 juil. 2008 à 14:53
hé hé !!!! il y a de l'idée là ... je vais essayer ! Je vais devoir cogiter le visual basic !(c'est bête que les neurones se plantent un peu à 63ans).
Grand merci et si d'autres idées ... n'hésitez pas
0