• Privacywetgeving
    Het is bij Helpmij.nl niet toegestaan om persoonsgegevens in een voorbeeld te plaatsen. Alle voorbeelden die persoonsgegevens bevatten zullen zonder opgaaf van reden verwijderd worden. In de vraag zal specifiek vermeld moeten worden dat het om fictieve namen gaat.

macro voor automatische lijnen en gegevens toe te voegen die ontbreken.

Status
Niet open voor verdere reacties.

davylenders123

Gebruiker
Lid geworden
20 jun 2010
Berichten
902
Ik maak elke dag een csv bestandje aan vanuit een programma van het werk.

Dit bevat gegevens die niet elke dag juist het zelfde zijn.(de opmaak wel)
In kolom a staan de lijn nummers en deze volgen op elkaar.
Als er voor een bepaalde lijn geen gegevens zijn dan wordt deze lijn niet overgenomen
in de csv.

Kan ik er op de een of andere manier ervoor zorgen dat via een macro de ontbrekende lijnen automatische worden ingevoegd met in de cellen in de kolomen a de ontbrekende lijnen nummer ingevuld en in kolom b tem f een 0 als waarde.


In bijlage een vb bestandje met nog wat meer uitleg erin.
(dit is wel een xls bestandje omdat ik geen csv bestandje konopladen hier maar het moet werken in een csv bestandje natuurlijk)

Bekijk bijlage 2 temp.xls
 
Zou deze macro het probleem oplossen?

Code:
Sub Aanvullen()
Application.ScreenUpdating = False 
rij = 2
    For Each cl In Range("A2:A" & Range("A65500").End(xlUp).Row)
        rij = rij + 1
        Ontbrekende = cl.Offset(1, 0) - cl.Value
    If Ontbrekende > 1 Then
            Rows(rij).Insert Shift:=xlShiftDown
            Cells(rij, 1) = cl + 1
            For y = 2 To 6
                Cells(rij, y) = 0
            Next
    End If
Next
End Sub
 
Laatst bewerkt:
Davy,

welke lijnnummers moeten er in het bestand voorkomen?
Altijd dezelfde, neem ik aan, maar is het een oplopende reeks van bv 0 t/m 123 of ontbreken er nummers in de reeks en bevat de reeks bv 0 t/m 47 en 254, 246?
 
Cobe@

De code van u werkt perfect.
Alleen zou hij maar moeten aanvullen tem lijn 47.

Haije@


De lijn nummers zijn eigenlijk oplopen van 0 tem 47 en 254 en 255.
Deze komen elke dag voor met soms ontbrekende lijnen omdat er daar geen gegevens voor zijn.
 
Cobe@

De code van u werkt perfect.
Alleen zou hij maar moeten aanvullen tem lijn 47.

Haije@


De lijn nummers zijn eigenlijk oplopen van 0 tem 47 en 254 en 255.
Deze komen elke dag voor met soms ontbrekende lijnen omdat er daar geen gegevens voor zijn.


Davy,

dan moet je dus de range in de macro van Cobbe even aanpassen in

For Each cl In Range("A2:A52")
 
Code:
For Each cl In Range("A2:A" & Range("A65500").End(xlUp).Row)
wordt dan:
For Each cl In Range("A2:A47")
 
Heb de code aangepast maar de code doet nog steeds het zelfde.

Code:
Sub Aanvullen()
Application.ScreenUpdating = False
rij = 2
    For Each cl In Range("A2:A47")
        rij = rij + 1
        Ontbrekende = cl.Offset(1, 0) - cl.Value
    If Ontbrekende > 1 Then
            Rows(rij).Insert Shift:=xlShiftDown
            Cells(rij, 1) = cl + 1
            For y = 2 To 6
                Cells(rij, y) = 0
            Next
    End If
Next
End Sub

Heb A52 ook geprobeerd maar blijft het zelfde
 
Laatst bewerkt:
Dan moet deze code wel voldoen indien er tenminste elke keer 2 rijen(de 2 laatste) zijn die niet meetellen.

Code:
Sub Aanvullen()
Application.ScreenUpdating = False
rij = 2
    For Each cl In Range("A2:A" & Range("A65500").End(xlUp).Row - 2)
        rij = rij + 1
        Ontbrekende = cl.Offset(1, 0) - cl.Value
    If Ontbrekende > 1 Then
            Rows(rij).Insert Shift:=xlShiftDown
            Cells(rij, 1) = cl + 1
            For y = 2 To 6
                Cells(rij, y) = 0
            Next
    End If
Next
End Sub
 
Bedankt:thumb:

Deze code werkt.

Bedankt voor jullie snele reactie en kant en klare oplossing.
top:thumb:
 
Cobe

Sorry maar zit toch nog een klein foutje in.
Hij telt tot 48 in plaats van 47 .
Heb al wat waarde aan het wijzigen geweest maar krijg het niet opgelost.
Wat moet ik hier nog voor wijzigen ?
 
Sorry even zonder testen code aangepast, -2 zou -3 zijn:

Code:
For Each cl In Range("A2:A" & Range("A65500").End(xlUp).Row - [COLOR="red"][B]3[/B][/COLOR])
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan