Page 1 sur 1

Lignes à ajouter

Publié : 04 déc. 2018 16:28
par guy8572
Bonjour,

J'ai un fichier .csv avec 43000 lignes.
Mais dans ces lignes, il y a des données manquantes, ce qui provoque une ligne en moins au total.
Comment puis-je aller à l'endroit ou il manque une ligne pour pouvoir recopier à sa place (la ligne supérieure ou inférieure) ?
Ou est-il possible d'avoir une macro qui copie le ligne d'avant ou d'après ?

Par exemple en colonne B :
ligne 1: 220000 = 22 h 00 mn 00 s
ligne 2: 220100 = 22 h 01 mn 00 s
ligne 3: 220200 = 22 h 02 mn 00 s
ligne 4: 220400 = 22 h 04 mn 00 s (il manque 220300)

Sur 4 lignes, ça va, mais sur 43000 lignes, ça devient compliqué.

Merci de votre aide
Cordialement

Re: Lignes à ajouter

Publié : 04 déc. 2018 17:00
par Jeff
Bonjour et bienvenue,
guy8572 a écrit :une ligne en moins au total.
S’il manque qu’une seule ligne, je ne pense pas qu’élaborer une macro soit nécessaire (d’autant qu’en lisant le bandeau rouge en haut de page, tu verras que ce n’est pas la bonne section).

Je pense que je rajouterai une formule dans la première colonne libre, par exemple en C3, puis une fois que la formule est validée, double-clic sur la poignée de recopie (le petit carré noir en bas à droite de la cellule) pour recopier sur la totalité de la colonne :
AOO_forum.png
La formule utilisée en C3 :

Code : Tout sélectionner

=OU(A3-A2<>100;ET(NBVAL(A4)=1; A3+100<>A4))
Ensuite, un autofiltre en tête de colonne (sélectionner la plage complète puis menu Données > Filtre > Autofiltre), et choisir d’afficher la valeur 1, tu auras les lignes qui encadrent la valeur manquante :
AOO_forum1.png
Même avec l’autofiltre enclenché, tu peux insérer le ligne manquante.

A +

Re: Lignes à ajouter

Publié : 04 déc. 2018 17:09
par micmac
Bonjour et bienvenue sur le forum,
Dans votre signature il y a écrit : LibreOffice 5.2.7.2 sous Windows 10
Votre signature fait mention d'une version ancienne de LibreOffice.
Pensez à vous mettre à jour de la dernière version 6.0.7 Stable.
Si c'est une version imposée, mentionnez-le dans votre signature par Obligation de version.

Accès direct à votre signature pour la corriger.

Cordialement.

Re: Lignes à ajouter

Publié : 04 déc. 2018 17:53
par guy8572
Bonsoir,
Merci de vos réponse.
Effectivement, je n'ai pas fais attention pour une demande de macro.
Je vais poser la question dans la section "éponyme" (que cela veut dire ?)

Pour répondre à vos réponse,
Sur 1441 lignes (égal à une journée en minutes), il me manque déjà 96 lignes.
C'est un fichier qui récupère des données toutes les minutes pendant un mois.
Pour la version d'accord, je vais faire le nécessaire.

Voici un fichier pour la journée d'hier:
h**ps://www.cjoint.com/doc/18_12/HLer0LzCfob_Re ... onnees.csv
La modération vous a écrit: Pas de fichier hébergé en dehors du forum : relisez les règles !

Comment trouver les lignes manquantes (colonne B) dans ce fichier ?

Cordialement

Edit:
éponyme "Not found"
Voici la formule Excel:

Code : Tout sélectionner

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

Re: Lignes à ajouter

Publié : 05 déc. 2018 10:06
par Xtof68
"Éponyme" = qui donne son nom à quelque chose, donc tu ne risques pas de trouver un forum intitulé ainsi. :wink:
Salutations...

Re: Lignes à ajouter

Publié : 05 déc. 2018 11:06
par guy8572
S’il manque qu’une seule ligne, je ne pense pas qu’élaborer une macro soit nécessaire (d’autant qu’en lisant le bandeau rouge en haut de page, tu verras que ce n’est pas la bonne section).
Alors ou faut-il aller pour avoir quelqu'un qui puisse me répondre sur les macros ???

Re: Lignes à ajouter

Publié : 05 déc. 2018 11:20
par Dude
guy8572 a écrit :Alors ou faut-il aller pour avoir quelqu'un qui puisse me répondre sur les macros ???
Ouverture de ses petits yeux :
Plus haut, Jeff a écrit :d’autant qu’en lisant le bandeau rouge en haut de page, tu verras que ce n’est pas la bonne section

Re: Lignes à ajouter

Publié : 05 déc. 2018 13:40
par guy8572
Désolé, mais je n'ai toujours pas compris. ????

Re: Lignes à ajouter

Publié : 05 déc. 2018 18:46
par Jeff
Clique sur l’hyperlien situé dans le texte du bandeau rouge :
AOO_forum.png
Ça t’amène directement en section Macro, où tu pourras poster ta question.

Attention : il y a également un bandeau rouge en tête de section Macros :wink:

Re: Lignes à ajouter

Publié : 05 déc. 2018 18:53
par guy8572
Là, ça fonctionne, mais comme je l'ai mis dans le message hier à 18h53, javais ce message.
Edit:
éponyme "Not found"
Merci pour la réponse

Re: Lignes à ajouter

Publié : 10 déc. 2018 00:07
par Jean-Louis Cadeillan
Bonsoir,
Ci-joint une solution sans macro, basée sur la fonction RECHERCHEV() lorsque le quatrième argument vaut 1 ou est omis : sur Feuille2, les lignes sont ajoutées en prenant la valeur au-dessous quand la minute est inexistante. (voir aide sur RECHERCHEV() ici)
Il m'a fallu tout de même ajouter une colonne sur ta feuille XNet_Meteo - Copie, de manière à identifier chaque couple date/heure/minute de manière précise (pour l'ajouter, il suffit, après avoir inséré une colonne à gauche, de saisir la formule =B2+C2*10^-6 en A2, puis de double-cliquer sur la croix de recopie en bas à droite de la cellule).
La feuille2 restitue une semaine entière (dont tu peux choisir le premier jour en A1:A3). Ce premier jour, en 0:00, doit être présent sur la feuille XNet. Si jamais la semaine n'est pas finie, le tableau n'affichera rien au-delà de la dernière valeur existante.
Attention, le temps de chargement et de recalcul peuvent être importants, selon ta configuration. Tu peux désactiver le recalcul automatique en décochant Outils > Calculer > Calculer automatiquement. Tu peux alors forcer le recalcul global, si nécessaire, par Maj+Ctrl+F9.
Tu peux tenter de prolonger le tableau de Feuille2 sur 1 mois (en recopiant les formules vers le bas), mais j'ai bien peur que la durée de traitement ne devienne trop importante...
Une fois les valeurs trouvées, tu peux faire un copier/collage spécial vers le fichier de ton choix.
À tester.
Cordialement,
Jean-Louis

Re: Lignes à ajouter

Publié : 11 déc. 2018 09:20
par guy8572
Bonjour,
Je regarde ça
Cordialement

Re: Lignes à ajouter

Publié : 11 déc. 2018 14:18
par guy8572
Désolé, c'est beaucoup trop long, 10mn après toujours rien

La modération vous a écrit: Bis repetita.
Merci de ne pas poster plusieurs messages à la suite. Vous disposez d'un bouton Éditer en haut à droite de chaque message et d'un autre bouton ajout si vous désirez ajouter un complément lorsqu'il n'y a pas de réponse.


Re: Lignes à ajouter

Publié : 11 déc. 2018 15:31
par Jean-Louis Cadeillan
Bonsoir,
guy8572 a écrit :c'est beaucoup trop long
Le chargement du fichier ? Sur mon système actuel 8.1 avec un portable avec 2Go de RAM et un processeur Atom 1,33 GHz, Libo 6.06, le chargement a duré moins de 45 s... je vois bien que tu es sous Win 10 :mrgreen: , mais 10 minutes !
Cordialement,
Jean-Louis

Re: Lignes à ajouter

Publié : 11 déc. 2018 16:02
par guy8572
Disons en réel, après avoir (montre en main) attendu 3mn, j'ai tout arrêté

Re: Lignes à ajouter

Publié : 11 déc. 2018 21:18
par Jean-Louis Cadeillan
Bonsoir,
Ci-joint une version allégée qui se charge chez moi en 5". Pour un jour complet (1440 lignes). Le jour en question se saisit en A1 de Feuille2.
Cordialement,
Jean-Louis

Re: Lignes à ajouter

Publié : 12 déc. 2018 08:35
par guy8572
Bonjour,
Ok, ça fonctionne mis désolé.
Comme il faut que je recopie le ficher, ça ne va pas, car le fichier modifier ne doit rien avoir d'autre, à part les lignes ajoutées (pas de formules, pas de texte différents, formatage de la colonne heures (6), sinon, il plante (il est très susceptible).
Cordialement

Edit:
Par contre, j'ai fais un autre essai avec le fichier précédent (le mois entier).
Je faisais certainement un mauvaise manipulation, je ne devais pas avoir compris le fonctionnement, car maintenant ça fonctionne très bien.
Mais comme je le dis plus haut, je ne peux pas recopier le fichier dans mon logiciel.
Ou en faisant un copier/coller valeur ,