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

Indeling document

Status
Niet open voor verdere reacties.
Dat is precies zoals ik het wil hebben, heel erg bedankt :D

Wel vroeg ik me af of het ook mogelijk is de rijen real-time aan te passen? Hiermee bedoel ik dat als bij kolom 5 of 6 'YES' wordt geantwoord en dit veranderd bij beide in nee, dat de rijen in tabblad 'Uitsplitsing (2)' dan ook meteen verwijderen.

Ik heb ook wat zitten stoeien en begrijp nu zelf hoe ik andere kolommen toe kan voegen :) dus dat is helemaal mooi.

Nogmaals alvast heel erg bedankt voor al je hulp en je mooie bestandje. Het werkt lekker snel!
 
Laatst bewerkt:
Goedemiddag,

Ik kreeg eerst het een en ander niet werkend in m'n andere bestand, maar na heel veel proberen en uittesten is het helemaal gelukt :)

Wel zou ik graag willen weten hoe ik die cijfers wegkrijg die bij regels worden toegevoegd? Zie onderstaande code:

Code:
If Regel = 0 Then Exit Sub
  If Kolom = 13 And Cells(Regel, Kolom).Value <> "" Then
      If UCase(Cells(Regel, 12).Value) = "YES" Then
        With Sheets("Substances")
          Set c = .Range("A3:A5000").Find(Cells(Regel, "A").Value, LookIn:=xlValues)
          If Not c Is Nothing Then
            NextPC = .Cells(c.Row, c.Column).End(xlDown).Row
            Aantal = NextPC - c.Row - 1
            If Aantal > Cells(Regel, Kolom).Value Then
              Regels = "" & NextPC - (Aantal - Cells(Regel, Kolom).Value) & ":" & NextPC - 1 & ""
              .Rows(Regels).Delete shift:=xlUp
            ElseIf Aantal < Cells(Regel, Kolom).Value Then
              Regels = "" & NextPC & ":" & NextPC + (Cells(Regel, Kolom).Value - Aantal) - 1 & ""
              .Rows(Regels).Insert shift:=xlDown
            End If
          Else
            With Sheets("Substances")
              LastRow = .Range("C65536").End(xlUp).Row + 2
              .Cells(LastRow, "A").Value = Cells(Regel, "A").Value
              .Cells(LastRow, "B").Value = Cells(Regel, "B").Value
              For x = 1 To Cells(Regel, Kolom).Value
                LastRow = LastRow + 1
                .Cells(LastRow, "C").Value = x
              Next x
            End With
          End If
        End With
      End If
    End If

Thnx :)
 
RV2010,

Daar is het stukje rode code verantwoordelijk voor.

Code:
If Regel = 0 Then Exit Sub
  If Kolom = 13 And Cells(Regel, Kolom).Value <> "" Then
      If UCase(Cells(Regel, 12).Value) = "YES" Then
        With Sheets("Substances")
          Set c = .Range("A3:A5000").Find(Cells(Regel, "A").Value, LookIn:=xlValues)
          If Not c Is Nothing Then
            NextPC = .Cells(c.Row, c.Column).End(xlDown).Row
            Aantal = NextPC - c.Row - 1
            If Aantal > Cells(Regel, Kolom).Value Then
              Regels = "" & NextPC - (Aantal - Cells(Regel, Kolom).Value) & ":" & NextPC - 1 & ""
              .Rows(Regels).Delete shift:=xlUp
            ElseIf Aantal < Cells(Regel, Kolom).Value Then
              Regels = "" & NextPC & ":" & NextPC + (Cells(Regel, Kolom).Value - Aantal) - 1 & ""
              .Rows(Regels).Insert shift:=xlDown
            End If
          Else
            With Sheets("Substances")
              LastRow = .Range("C65536").End(xlUp).Row + 2
              .Cells(LastRow, "A").Value = Cells(Regel, "A").Value
              .Cells(LastRow, "B").Value = Cells(Regel, "B").Value
              [COLOR="Red"]For x = 1 To Cells(Regel, Kolom).Value
                LastRow = LastRow + 1
                .Cells(LastRow, "C").Value = x
              Next x[/COLOR]
            End With
          End If
        End With
      End If
    End If
 
Beste Superzeeuw,

Dat dacht ik al ;) heb ook vanalles geprobeerd, maar ik krijg die cijfers niet weg. Maar dat komt natuurlijk omdat die waarden over worden genomen? Toch is het prima zo hoor.

Ik heb nog wel wat kleine vraagjes :):

[1] Is het mogelijk om als kolom 9 (M) uit het bestand NO is ipv YES (of veranderd wordt),de gehele regel verwijderd wordt in het tabblad Uitsplitsing (2), dus niet alleen de subregels?

[2] Als een getal is ingevuld op tabblad 'Info' in kolom N en dit wordt veranderd, dan komen er geen nieuwe cijfers bij op tabblad Uitsplitsing (2) als het getal hoger wordt. Enig idee hoe dit kan?

[3] Is het eventueel mogelijk om als het aantal componenten op 0 wordt gezet (= kolom N), maar kolom M met YES is beantwoord, eventueel toch 1 regel toe te voegen met daarin n/a?

Ik hoop dat ik niet al te veel / moeilijke dingen vraag en dat het duidelijk is.
Ik wil je nogmaals heel erg bedanken voor je hulp!
 
EDIT: Is inmiddels opgelost. Ik had validatietype 'WholeNumbers' gebruikt, maar tekst in de kolom als hint dat er iets ingevuld moest worden. Zodra hij vervolgens de waarden ging controleren, ontstond er een foutmelding. Ik heb de tekst nu weggehaald en alles werkt nu prima, inclusief het toevoegen :). Enig idee hoe dit kan?

Zou je als je tijd hebt misschien nog even naar mijn hierboven genoemde 3 vragen willen kijken :D?

Thnx again.
 
Laatst bewerkt:
Ik heb nog wel wat kleine vraagjes :):

[1] Is het mogelijk om als kolom 9 (M) uit het bestand NO is ipv YES (of veranderd wordt),de gehele regel verwijderd wordt in het tabblad Uitsplitsing (2), dus niet alleen de subregels?

[2] Als een getal is ingevuld op tabblad 'Info' in kolom N en dit wordt veranderd, dan komen er geen nieuwe cijfers bij op tabblad Uitsplitsing (2) als het getal hoger wordt. Enig idee hoe dit kan?

[3] Is het eventueel mogelijk om als het aantal componenten op 0 wordt gezet (= kolom N), maar kolom M met YES is beantwoord, eventueel toch 1 regel toe te voegen met daarin n/a?

Iemand die misschien kan helpen :)?
 
RV2010,

[1] Is het mogelijk om als kolom 9 (M) uit het bestand NO is ipv YES (of veranderd wordt),de gehele regel verwijderd wordt in het tabblad Uitsplitsing (2), dus niet alleen de subregels?
Dit heb je toch al opgelost met formules?
[2] Als een getal is ingevuld op tabblad 'Info' in kolom N en dit wordt veranderd, dan komen er geen nieuwe cijfers bij op tabblad Uitsplitsing (2) als het getal hoger wordt. Enig idee hoe dit kan?
Bedoel je het zoals in het nieuwe bijgevoegde progje?
[3] Is het eventueel mogelijk om als het aantal componenten op 0 wordt gezet (= kolom N), maar kolom M met YES is beantwoord, eventueel toch 1 regel toe te voegen met daarin n/a?
Kost wat meer moeite om te maken.
 

Bijlagen

RV2010,

Dit heb je toch al opgelost met formules?
Helaas niet. Ik heb het niet voor elkaar gekregen om de regel dan helemaal te verwijderen. De 1e regel (namelijk met de productcode/productnaam) blijft bestaan.

Bedoel je het zoals in het nieuwe bijgevoegde progje?
Precies, dat bedoel ik :) thnx!

Kost wat meer moeite om te maken.
Ok, dan laat dat maar zitten ;)

Ik vroeg me, naast dat 1e punt, nog wel 2 dingen af. Heb echt heel veel zitten zoeken, maar ik kom er echt niet uit:

- Als er een rij wordt toegevoegd, dan wordt er normaal geen regel tussen gelaten. Nu heb ik dat wel zo gedaan, maar zodra ik dan het aantal verminder, dan wordt die lege rij verwijderd. Kan je mij misschien vertellen in welke code ik dat moet zoeken? Want ik kom er echt niet uit...

- Is het mogelijk om, ipv de PC en PN over te nemen, een koppeling te maken? Dus bijv. in tabblad 'Uitsplitsing (2)' =$A3 bij PC en =$B3 bij PN? Dit zou er namelijk voor zorgen dat als de PC of PN veranderd, dit wordt meegenomen in het andere tabblad :D.

Bedankt voor al je tijd en moeite!! :thumb:
 
Iemand die mij verder kan helpen? Zit nog met de volgende vragen:
- De beginregel aanpassen; dus waar de 1e uit het andere tabblad gehaalde regel komt.
- Een regel helemaal verwijderen als het antwoord op kolom 12 nee is en dus kolom 13 0 is.
- Als ik een geheel nieuw hoofdregel toevoeg, wordt er steeds 1 regel tussengelaten. Maar bij het verwijderen wordt die tussenregel ook verwijderd. Hoe krijg ik dat opgelost?
- Is het mogelijk om naar PC en PN te verwijzen, i.p.v. deze over te nemen?

Dit is de code:
Code:
  If Regel = 0 Then Exit Sub
  If Kolom = 13 And Cells(Regel, Kolom).Value > "0" Then
    If UCase(Cells(Regel, 12).Value) = "YES" Then
      With Sheets("Uitsplitsing")
        Set c = .Range("A4:A5000").Find(Cells(Regel, "A").Value, LookIn:=xlValues)
        If Not c Is Nothing Then
          NextPC = .Cells(c.Row, c.Column).End(xlDown).Row
          Aantal = NextPC - c.Row - 1
          If Aantal > Cells(Regel, Kolom).Value Then
            Regels = "" & NextPC - (Aantal - Cells(Regel, Kolom).Value) & ":" & NextPC - 1 & ""
            .Rows(Regels).Delete shift:=xlUp
          ElseIf Aantal < Cells(Regel, Kolom).Value Then
            Regels = "" & NextPC & ":" & NextPC + (Cells(Regel, Kolom).Value - Aantal) - 1 & ""
            .Rows(Regels).Insert shift:=xlDown
          End If
        Else
          With Sheets("Uitsplitsing")
            LastRow = .Range("C65536").End(xlUp).Row + 2
            .Cells(LastRow, "A").Value = Cells(Regel, "A").Value
            .Cells(LastRow, "B").Value = Cells(Regel, "B").Value
            For x = 1 To Cells(Regel, Kolom).Value
              LastRow = LastRow + 1
              .Cells(LastRow, "C").Value = x
            Next x
          End With
        End If
      End With
    End If
  End If
 
Laatst bewerkt:
RV2010,

Met beide reacties kan ik niet goed uit de voeten.

- De beginregel aanpassen; dus waar de 1e uit het andere tabblad gehaalde regel komt.
Wat bedoel je hier precies mee?
- Een regel helemaal verwijderen als het antwoord op kolom 12 nee is en dus kolom 13 0 is.
Kolom 12 = L en daar staat nooit iets en kolom 13 = M en daar komen geen getallen voor.
- Als ik een geheel nieuw hoofdregel toevoeg, wordt er steeds 1 regel tussengelaten. Maar bij het verwijderen wordt die tussenregel ook verwijderd. Hoe krijg ik dat opgelost?[/QOUTE]
Welke tussenregel bedoel je?
- Is het mogelijk om naar PC en PN te verwijzen, i.p.v. deze over te nemen?
Dat kan met een formule die in de macro is in te voegen maar eerst de bovenstaande problemen anders verzuipen we.

Plaats het bijgewerkte bestand weer eens
 
- De beginregel aanpassen; dus waar de 1e uit het andere tabblad gehaalde regel komt.
Inderdaad vaag omschreven. Hiermee bedoel ik de 1e regel in het tabblad Uitsplitsing. Als ik hem op +2 zet begint hij bij rij 3, maar laat hij ook elke keer een regel tussen als er weer een nieuw item uit tabblad Info wordt overgenomen. Dat hij daar een regel tussenlaat is niet erg, maar ik wil graag weten hoe ik de beginrij kan instellen. Dus zeg maar stel dat ik hem op +1 zet (en dat betekend geen regels tussen nieuwe items), dat hij dan nog op rij 3 begint.

- Een regel helemaal verwijderen als het antwoord op kolom 12 nee is en dus kolom 13 0 is.
In tabblad Info staan in kolommen antwoorden als YES en no. Als het YES is, moet er in kolom 13 (M) een cijfer ingevuld worden. Stel dat dit nou veranderd of verkeerd is gegaan, en kolom 12 (L) wordt weer op 'no' gezet. Dan zou eigenlijk de hele regel inclusief subregels die aangemaakt zijn op tabblad Uitsplitsing weggehaald worden.

- Als ik een geheel nieuw hoofdregel toevoeg, wordt er steeds 1 regel tussengelaten. Maar bij het verwijderen wordt die tussenregel ook verwijderd. Hoe krijg ik dat opgelost?
Dit heeft gedeeltelijk betrekking op mijn 1e vraag en antwoord en gaat over de volgende code. Als er een nieuw item wordt toegevoegd met een aantal subrijen (degene met nummers) dan wordt er op het einde een regel tussengelaten. Dus als er daarna weer een nieuw item wordt toegevoegd van tabblad Info naar tabblad Uitsplitsing, dan blijft er een regel tussen die 2. Maar, als ik nu bij het bovenste item bijv. getal 4 in 3 verander, dan verdwijnt die lege tussenregel en komt het volgende item meteen tegen het laatste subitem aan:
Code:
          With Sheets("Uitsplitsing(2)")
            LastRow = .Range("C65536").End(xlUp).Row + 2
            .Cells(LastRow, "A").Value = Cells(Regel, "A").Value
            .Cells(LastRow, "B").Value = Cells(Regel, "B").Value
            For x = 1 To Cells(Regel, Kolom).Value
              LastRow = LastRow + 1
              .Cells(LastRow, "C").Value = x
            Next x

Dat zijn de antwoorden op je vragen. Ik zal morgen het bestand plaatsen.
 
RV2010,

Met de volgende code kun je hem toch op regel 3 laten starten en is tevens je laatste vraag opgelost:

Code:
 With Sheets("Uitsplitsing(2)")
            [COLOR="red"]if [/COLOR]LastRow = .Range("C65536").End(xlUp).Row + 1 [COLOR="red"]<3 then LastRow=3[/COLOR]
            .Cells(LastRow, "A").Value = Cells(Regel, "A").Value
            .Cells(LastRow, "B").Value = Cells(Regel, "B").Value
            For x = 1 To Cells(Regel, Kolom).Value
              LastRow = LastRow + 1
              .Cells(LastRow, "C").Value = x
            Next x
 
RV2010,

Met de volgende code kun je hem toch op regel 3 laten starten en is tevens je laatste vraag opgelost:

Code:
 With Sheets("Uitsplitsing(2)")
            [COLOR="red"]if [/COLOR]LastRow = .Range("C65536").End(xlUp).Row + 1 [COLOR="red"]<3 then LastRow=3[/COLOR]
            .Cells(LastRow, "A").Value = Cells(Regel, "A").Value
            .Cells(LastRow, "B").Value = Cells(Regel, "B").Value
            For x = 1 To Cells(Regel, Kolom).Value
              LastRow = LastRow + 1
              .Cells(LastRow, "C").Value = x
            Next x

Ow ik wist niet dat dat zo makkelijk was.
Heb helaas geen tijd gehad vandaag om naar het document te kijken.
Weet jij zo hoe ik, als ik het aantal subregels naar boven en beneden verander, ervoor kan zorgen dat er steeds een regel leeg blijft? Of heb je daarvoor dat document nodig?

Hoe dan ook, ik probeer het morgen online te gooien. Bedankt!
 
RV2010,

Als jij die lege regel ertussen wilt hebben dan gebruik je datgene je al ontdekt had, zie rode 2

Code:
 With Sheets("Uitsplitsing(2)")
            if LastRow = .Range("C65536").End(xlUp).Row + [COLOR="red"]2[/COLOR] <3 then LastRow=3
            .Cells(LastRow, "A").Value = Cells(Regel, "A").Value
            .Cells(LastRow, "B").Value = Cells(Regel, "B").Value
            For x = 1 To Cells(Regel, Kolom).Value
              LastRow = LastRow + 1
              .Cells(LastRow, "C").Value = x
            Next x
 
RV2010,

Ik kan je hier niet verder mee helpen omdat ik problemen heb die ik niet kan oplossen.
Zowel Excel 2003 als 2007 blijven mekkeren om een verwijzing naar Ref Edit Control.
Deze krijg ik niet op orde en misschien wel omdat 2003 en 2007 naast elkaar draaien.
 
Hm ok. Dat is jammer.
En als ik je de code zo geef?
Of lukt het dan ook niet?

Bedankt voor al je moeite in ieder geval!
 
RV2010,

Ik ben er toch nog eens verder mee gaan stoeien.

Als ik namelijk de code overneem in een blanco workbook werkt de code wel.

Kun jij anders in jouw programma onder VBA de verwijzing naar Ref Edit Control eens uitzetten en het progje dan opnieuw posten.
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan