Lignes à ajouter

Discussions à propos du tableur Calc.
Les questions sur les macros doivent être postées dans la section dédiée en dessous.

Modérateur : Vilains modOOs

Règles du forum
Cette section est uniquement dédiée au tableur Calc. Vous ne devez pas poster ici de questions sur les macros mais utiliser la section éponyme.
Répondre
guy8572
Membre OOrganisé
Membre OOrganisé
Messages : 54
Inscription : 04 déc. 2018 17:22

Lignes à ajouter

Message 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
LibreOffice 7.6.2 sous Windows 11
Jeff
GourOOu
GourOOu
Messages : 9608
Inscription : 18 sept. 2006 11:40
Localisation : France

Re: Lignes à ajouter

Message 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
AOO_forum1.png (18.07 Kio) Consulté 1378 fois
Même avec l’autofiltre enclenché, tu peux insérer le ligne manquante.

A +
Avatar de l’utilisateur
micmac
RespOOnsable forum
RespOOnsable forum
Messages : 9224
Inscription : 28 août 2010 10:45

Re: Lignes à ajouter

Message 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.
guy8572
Membre OOrganisé
Membre OOrganisé
Messages : 54
Inscription : 04 déc. 2018 17:22

Re: Lignes à ajouter

Message 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
LibreOffice 7.6.2 sous Windows 11
Xtof68
Fraîchement OOthentifié
Messages : 6
Inscription : 05 déc. 2018 10:59

Re: Lignes à ajouter

Message par Xtof68 »

"Éponyme" = qui donne son nom à quelque chose, donc tu ne risques pas de trouver un forum intitulé ainsi. :wink:
Salutations...
LibreOffice 5.2.3.3 sous Windows 7 Professionnel
guy8572
Membre OOrganisé
Membre OOrganisé
Messages : 54
Inscription : 04 déc. 2018 17:22

Re: Lignes à ajouter

Message 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 ???
LibreOffice 7.6.2 sous Windows 11
Avatar de l’utilisateur
Dude
IdOOle de la suite
IdOOle de la suite
Messages : 25143
Inscription : 03 mars 2006 08:45
Localisation : 127.0.0.1
Contact :

Re: Lignes à ajouter

Message 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
guy8572
Membre OOrganisé
Membre OOrganisé
Messages : 54
Inscription : 04 déc. 2018 17:22

Re: Lignes à ajouter

Message par guy8572 »

Désolé, mais je n'ai toujours pas compris. ????
LibreOffice 7.6.2 sous Windows 11
Jeff
GourOOu
GourOOu
Messages : 9608
Inscription : 18 sept. 2006 11:40
Localisation : France

Re: Lignes à ajouter

Message par Jeff »

Clique sur l’hyperlien situé dans le texte du bandeau rouge :
Cliquer sur l’image pour zoomer
Cliquer sur l’image pour zoomer
Ç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:
guy8572
Membre OOrganisé
Membre OOrganisé
Messages : 54
Inscription : 04 déc. 2018 17:22

Re: Lignes à ajouter

Message 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
LibreOffice 7.6.2 sous Windows 11
Avatar de l’utilisateur
Jean-Louis Cadeillan
GourOOu
GourOOu
Messages : 5732
Inscription : 03 janv. 2009 00:56

Re: Lignes à ajouter

Message 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
LibO 7.6.5.2 (x64 avec Java 1.8.0_401) et AOO 4.1.15 (avec Java x32 1.8.0_381), Windows 7 Édition Intégrale 64 SP1
guy8572
Membre OOrganisé
Membre OOrganisé
Messages : 54
Inscription : 04 déc. 2018 17:22

Re: Lignes à ajouter

Message par guy8572 »

Bonjour,
Je regarde ça
Cordialement
LibreOffice 7.6.2 sous Windows 11
guy8572
Membre OOrganisé
Membre OOrganisé
Messages : 54
Inscription : 04 déc. 2018 17:22

Re: Lignes à ajouter

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

LibreOffice 7.6.2 sous Windows 11
Avatar de l’utilisateur
Jean-Louis Cadeillan
GourOOu
GourOOu
Messages : 5732
Inscription : 03 janv. 2009 00:56

Re: Lignes à ajouter

Message 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
LibO 7.6.5.2 (x64 avec Java 1.8.0_401) et AOO 4.1.15 (avec Java x32 1.8.0_381), Windows 7 Édition Intégrale 64 SP1
guy8572
Membre OOrganisé
Membre OOrganisé
Messages : 54
Inscription : 04 déc. 2018 17:22

Re: Lignes à ajouter

Message par guy8572 »

Disons en réel, après avoir (montre en main) attendu 3mn, j'ai tout arrêté
LibreOffice 7.6.2 sous Windows 11
Avatar de l’utilisateur
Jean-Louis Cadeillan
GourOOu
GourOOu
Messages : 5732
Inscription : 03 janv. 2009 00:56

Re: Lignes à ajouter

Message 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
LibO 7.6.5.2 (x64 avec Java 1.8.0_401) et AOO 4.1.15 (avec Java x32 1.8.0_381), Windows 7 Édition Intégrale 64 SP1
guy8572
Membre OOrganisé
Membre OOrganisé
Messages : 54
Inscription : 04 déc. 2018 17:22

Re: Lignes à ajouter

Message 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 ,
LibreOffice 7.6.2 sous Windows 11
Répondre