Lignes manquantes
Résolu
Guy72
Messages postés
1048
Statut
Membre
-
Guy72 Messages postés 1048 Statut Membre -
Guy72 Messages postés 1048 Statut Membre -
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
A voir également:
- Lignes manquantes
- Écrire plusieurs lignes dans une cellule excel mac - Guide
- Excel trier par ordre alphabétique en gardant les lignes - Guide
- Supprimer lignes vides excel fin de tableau - Forum Excel
- Filtre excel ne fonctionne pas sur toutes les lignes ✓ - Forum Excel
- Afficher toutes les lignes masquées excel ✓ - Forum Excel
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
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,
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/
il ne restera plus qu'a insérer les lignes aux endroits voulus
Voilà
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".
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.
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.
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