Lignes manquantes

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/HLfocL43qsb_Recuperation-des-donnees.csv

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

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!

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. ???

Recuperation-des-donnees.xlsx

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.

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.