Lignes manquantes
Résolu
Guy72
Messages postés
982
Date d'inscription
Statut
Membre
Dernière intervention
-
Guy72 Messages postés 982 Date d'inscription Statut Membre Dernière intervention -
Guy72 Messages postés 982 Date d'inscription Statut Membre Dernière intervention -
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
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
-
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
-
bonjour,
il ne manque pas la ligne 3, mais li manque 220300 -
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à
-
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.