Poser votre question
0

Lignes manquantes

posée 2018-12-05 19:00:20 +0200

ce message est marqué comme un wiki communautaire

Cette contribution est un wiki. N'importe qui ayant une aura > 75 est invité à l'améliorer.

Bonjour, Comment puis-je compléter les lignes manquantes en prenant celle du dessus ou du dessous. Ce qui doit faire au total 1440 lignes. Sur l'exemple, il manque plusieurs lignes. Voir, là ou il y a les cellules en jaunes

Fichier joint .csv pour LibreOfice https://www.cjoint.com/doc/18_12/HLfo...

Voici la macro qui est sur Excel

Sub Rétablir_LignesManquantes()
Dim lgn, n&, i&, j%, k%, t&, dt&
With Worksheets("Recuperation_des_donnees")
   n = .Cells(.Rows.Count, 1).End(xlUp).Row
   t = (.Cells(n, 2) \ 100) Mod 100 + (.Cells(n, 2) \ 10000) * 60
   Application.ScreenUpdating = False
   For i = n To 3 Step -1
      t = (1440 + t - 1) Mod 1440
      dt = (.Cells(i - 1, 2) \ 100) Mod 100 + (.Cells(i - 1, 2) \ 10000) * 60
      If dt <> t Then
         j = t - dt - 1: lgn = .Cells(i - 1, 1).Resize(, 62).Value
         .Range(.Cells(i, 1), .Cells(i + j, 1)).EntireRow.Insert
         For k = 0 To j
              .Cells(i + k, 1).Resize(, 62).Value = lgn
              .Cells(i + k, 2) = (((dt + k + 1) \ 60) * 100 + (dt + k + 1) Mod 60) * 100
         Next k
         t = dt
      End If
   Next i
End With
End Sub
éditer requalifier signaler fermer fusionner supprimer

Commentaires

Pourriez-vous décrire ce qu'est censée faire cette macro? Le fichier joint est un .csv, tout formatage, par ex. le jaune, est perdu.

De plus, comme vous avez coché "wiki", vous ne pouvez pas corriger votre question: votre "karma" est 1 et vous avez besoin de 75!

Image Gravatar de ajlittozajlittoz ( 2018-12-05 20:28:22 +0200 )éditer

2Réponses

0

répondue 2018-12-06 10:13:49 +0200

Image Gravatar de ajlittoz

Savoir qu'une ligne est manquante est assez aisé. J'ai ajouté une colonne dans la feuille avec la formule

=SI(OU(B3-B2=100;B3-B2=4100;B3-B2=-235900);"";"***")

à partir de la deuxième ligne de donnée. Si les échantillons sont bien séparés d'une minute, la cellule est vide. Si l'intervalle entre 2 échantillons n'est pas d'une minute, *** apparaît. Vous pouvez adapter à ce que vous voulez faire ensuite. Notez que la rupture de régularité de l’échantillonnage (passage à ----46 au lieu de ----00 et inversement) est aussi signalée.

Il est certainement possible de compenser les échantillons manquants par macro mais je ne l'ai jamais fait.

Personnellement, je préférerais agir à la source, ce qui me semble plus simple, mais cela nécessite de la programmation. Un petit démon connecté au dispositif qui envoie les échantillons pourrait vérifier qu'aucun ne manque en comparant l'horodatage au précédent. S'il en manque un, il lui suffit d'un construire un (ou plusieurs) et de l'envoyer avant l'échantillon réel. Quand j'écris "construire", je pense à une interpolation, simple ou à base de filtre de Kalman. La sortie de ce démon est connectée au "logiciel d'accumulation" (soit Xnet_Meteo s'il a recours à un socket externe pour récupérer les échantillons, ce qui permet de se substituer au socket, soit un autre qui alimente le fichier).

ATTENTION! Si vous enregistrez votre feuille en .xls(x), vous risquez de tomber sur des problèmes de compatibilité. Enregistrez toujours les fichiers en "natif-application", sauf, au dernier moment, pour les transmettre à quelqu'un d'autre.

éditer signaler supprimer permalien plus

Commentaires

Ok, je vais regarder ça. Merci de votre aide

Effectivement, avec cette formule, (j'aurais du y penser) cela permet de repérer toutes les lignes manquantes. C'est déjà plus simple.

Image Gravatar de guy85guy85 ( 2018-12-06 10:28:24 +0200 )éditer
0

répondue 2018-12-06 08:23:40 +0200

Image Gravatar de guy85

Bonjour,

Bonjour,

1) J'ai une station météo qui récupère les données de plusieurs sondes (Pression, température, humidité, vent, soleil). 2) Ces données, sont récupérées toutes les minutes par un logiciel : "Xnet_Meteo". 3) Les données récupérées par ce logiciel vont dans un fichier qui s'appelle : "Xnet_Meteo.csv 4) Tous les jours, je récupère donc 1440 données (donc 1440 lignes). 5) MAIS, il y a des minutes (colonne B) qui n'apparaissent pas, donc, il manque des lignes complètes.

C'est ces lignes qu'il faut que j'ajoute pour avoir un total de 1440 lignes, pas facile de les trouvées. Ce que je fais en ce moment, je recherche ligne par ligne celle qui manque, et je copie soit celle d'avant ou celle d'après que j'insère entre ces dernières. Cette méthode est trop longue.

Donc, est-il possible d'avoir une macro qui puisse me permettre de combler les lignes manquantes ?

Voici un lien comme exemple (Excel) car le fichier que j'envoi (sous forme de tableau) finalement, avec le lien, il n'est visible quand texte. ???

C:\fakepath\Recuperation-des-donnees.xlsx

éditer signaler supprimer permalien plus
S'identifier/S'inscrire pour répondre

Outils de question

1 suiveurs

Stats

Posée: 2018-12-05 19:00:20 +0200

Consultée: 40 fois

Mise à jour: Dec 06 '18