Lignes manquantes [Résolu/Fermé]

Signaler
Messages postés
519
Date d'inscription
dimanche 18 novembre 2007
Statut
Membre
Dernière intervention
2 juillet 2020
-
Messages postés
519
Date d'inscription
dimanche 18 novembre 2007
Statut
Membre
Dernière intervention
2 juillet 2020
-
Bonjour,

J'ai un fichier .csv avec 43000 lignes.
Mais dans ces lignes, il y a des lignes manquantes.
Comment puis-je aller à l'endroit ou il manque une ligne pour pouvoir recopier à sa place (la ligne supérieure ou inférieure) ?

Par exemple en colonne B il y a le temps:
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 la ligne 3)
sur 4 lignes, ça va, mais sur 43000 lignes, ça devient compliqué.

Merci de votre aide
Cordialement

Modif:
Je me suis trompé.
Mon message sur libre Office a été supprimer.
Mais je préférerais avoir celui de Libre-Office et pas celui de Excel

Configuration: Windows 10, Google Chrome

4 réponses

Messages postés
25182
Date d'inscription
lundi 23 juillet 2007
Statut
Contributeur
Dernière intervention
10 juillet 2020
5 356
Bonjour
il ne manque pas la ligne 3 dans votre exemple?

ceci dit, pour régler ça:
une colonne hors champ, par exemple Z
on commence en Z2:
=SI(B2="";B1;B2)
à tirer sur la hauteur

en suite copier Z et faire un collage spécial valeur sur B

crdlmnt
Messages postés
519
Date d'inscription
dimanche 18 novembre 2007
Statut
Membre
Dernière intervention
2 juillet 2020
10
Bonjour,
Oui, c'est une solution (que j'aurais dû trouver) pour rrpérer les lignes manquantes.
C'est déjà plus facile
Merci de ton aide
Messages postés
519
Date d'inscription
dimanche 18 novembre 2007
Statut
Membre
Dernière intervention
2 juillet 2020
10
bonjour,
il ne manque pas la ligne 3, mais li manque 220300
Messages postés
6831
Date d'inscription
jeudi 13 septembre 2007
Statut
Contributeur
Dernière intervention
10 juillet 2020
532
Bonjour,

En vba on utilise la fonction Split pour séparer la 1ère portion de texte jusqu'au signe = que l'on met dans la colonne B;
Ensuite on fait une boucle sur la colonne B pour voir si l'écart entre 2 lignes consécutives est égale à 100.
Si ce n'est pas le cas on saisie dans la colonne C "ligne manquante"

Voir ceci pour les boucles sur colonnes

https://www.developpez.net/forums/d605223/logiciels/microsoft-office/excel/contribuez/boucles-parcourir-colonne-ligne-plage-donnees-2-methodes/

Option Explicit
Private Sub CommandButton1_Click()
Splitcolonne
End Sub
'https://www.developpez.net/forums/d605223/logiciels/microsoft-office/excel/contribuez/boucles-parcourir-colonne-ligne-plage-donnees-2-methodes/
Sub Splitcolonne()
Dim FL1 As Worksheet, NoCol As Integer
Dim NoLig As Long, Var As Variant
    Set FL1 = Worksheets("Feuil1") 'adapter le nom de la feuille
    NoCol = 1 'lecture de la colonne A
    Application.ScreenUpdating = False
    For NoLig = 1 To Split(FL1.UsedRange.Address, "$")(4)
        Var = FL1.Cells(NoLig, NoCol)
        FL1.Cells(NoLig, NoCol + 1) = Split(Var, "=")(0)
    Next
    Application.ScreenUpdating = True
    Set FL1 = Nothing
    Lignemanquante
End Sub
Sub Lignemanquante()
Dim FL1 As Worksheet, NoCol As Integer
Dim NoLig As Long, Var As Variant
Dim i As Integer
    Set FL1 = Worksheets("Feuil1") 'adapter le nom de la feuille
    NoCol = 2 'lecture de la colonne B
    Application.ScreenUpdating = False
    For NoLig = 1 To Split(FL1.UsedRange.Address, "$")(4) - 1
    Var = FL1.Cells(NoLig, NoCol)
       If FL1.Cells(NoLig + 1, NoCol) = FL1.Cells(NoLig, NoCol) + 100 Then
    Else
   FL1.Cells(NoLig, NoCol + 1) = "ligne manquante"
  i = i + 1
    End If
    Next
    MsgBox "vous avez: " & i & " lignes manquantes"
    Application.ScreenUpdating = True
    Set FL1 = Nothing
End Sub



il ne restera plus qu'a insérer les lignes aux endroits voulus

Voilà
Messages postés
519
Date d'inscription
dimanche 18 novembre 2007
Statut
Membre
Dernière intervention
2 juillet 2020
10
Bonjour,
J'ai la macro adéquat pour Excel, mais pas pour "LibreOffice".
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

Comme je l'ai mis à la fin de mon message, je me suis trompé, je voulais une macro (la même que le code ci-dessus) mais pour un fichier csv dans "LibreOffice".

Voir exemple avec Excel fichier joint avec le texte :

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 21 lignes.
Voir là ou il y a les cellules en jaunes

Fichier joint (Excel):
https://www.cjoint.com/doc/18_12/HLfisc727Mb_Recuperation-des-donnees.xlsm"]https://www.cjoint.com/doc/18_12/HLfisc727Mb_Recuperation-des-donnees.xlsm
Je souhaiterais avoir la même chose, mais avec "LibreOffice" dans un fichier .csv

Fichier joint .csv pour LibreOfice
https://www.cjoint.com/doc/18_12/HLfocL43qsb_Recuperation-des-donnees.csv

J'avais mis la même question dans "LibreOffice", mais on me l'a supprimée (ça faisait doublon)
Maintenant, je ne sais plus comment m'expliquer.
Messages postés
6831
Date d'inscription
jeudi 13 septembre 2007
Statut
Contributeur
Dernière intervention
10 juillet 2020
532
Pour LibreOffice je ne peux pas t'aider!