Help!

PC-Problemen?
De vrijwilligers van Oplossing.be zoeken gratis met u mee!

Hulp bij posten

Recente topics

Auteur Topic: For next loop vraagje...  (gelezen 3780 keer)

0 leden en 1 gast bekijken dit topic.

Offline pa3ewc

  • Nieuw lid
  • Berichten: 3
  • Geslacht: Man
  • Oplossing.be
For next loop vraagje...
« Gepost op: 19 februari 2018, 09:54:57 »
Heb in kolom A van werkblad "Customer" mijn gegevens ingevuld die ik wil hebben. In de kolommen B,C staat de data vermeld.
(er kunnen meerdere kolommen bijkomen aankomend weken)
Deze gegevens van beide kolommen B + C worden automatisch overgenomen in het werkblad "Updates".
Nu zorgt een macro ervoor dat deze gegevens in werkblad "Updates" via een email verstuurd kunnen worden. Dit heb ik zover werkend gekregen. !

Nu heb ik een macro die ik gevonden heb op het forum wat aangepast om ervoor te zorgen dat ik ook de gegevens van werkblad "Updates"
kan wegschrijven (horizontaal) in werkblad "Timeupdates".
Dit werkt voor kolom B + C van werkblad "Updates".!

Het enige wat er gebeurd is dat de gegevens van kolom B overschreven worden door kolom C.! Dat mag niet gebeuren.  :-\
(zie bijgevoegde macro) Graag aanpassen dat dit overschrijven niet meer gedaan wordt maar dat het onder elkaar komt te staan.

Waar zoek ik nu een oplossing voor zoek zijn de volgende puntjes. Hopelijk is er een forumlid die mij op weg kan helpen:  :help:

1. Kolom B en kolom C van werkblad "Updates" moeten in werkblad "Timeupdates" altijd onder elkaar geschreven worden.
    Dus iedere kolom apart op een lijn onder elkaar.

2. Graag de volgorde van wegschrijven op werkblad "Timeupdates" MOET altijd afhankelijk van de Cell A1 (datum en tijd) op het
    werkblad "Updates". Dus de laatste update qua datum en tijd van deze Cell 1 moet altijd op de eerste regel staan.
    (Dus zeg maar aflopend op datum en tijd.)

3. Misschien een betere manier om kolommen die in de toekomst bijgemaakt worden op werkblad "Customer" simpeler te laten uitvoeren in  de macro hierbij gevoegd. Dus dat ik niet elke kolom met de desbetreffende cellen telkens hoef bij te voegen in een loop zoals ik hieronder in deze macro telkens probeer te doen. Tenminste als deze loop werkend gemaakt kan worden want nu doet hij het niet !  :-\

Bedankt voor jullie hulp.

Sub Updateoverzicht()

Dim i As Integer
Dim c As Range

With Sheets("Timeupdates")

Set c = .Cells(.Rows.Count, 1).End(xlUp).Offset(1)

    End With

With Sheets("Updates")

For i = 1 To 31  'Loops 31 times. Change the 5 to match the number of your cells to copy

                  c.Offset(, i - 1).Value = .Range(Choose(i, "A1", "B2", "B5", "B6", "B3", "B8", "B7", "B9", "B10", "B12", "B11", "B13", "B14", "B15", "B16", "B17", "B18", "B19", "B20", "B21", "B22", "B24", "B23", "B32", "B31", "B30", "B29", "B28", "B27", "B26", "B25")).Value _
                 
    Next i


With Sheets("Updates")

'Set c = .Cells(.Rows.Count, 1).End(x1Up).Offset(1)

For i = 1 To 31  'Loops 31 times. Change the 5 to match the number of your cells to copy

                   c.Offset(, i - 1).Value = .Range(Choose(i, "A1", "C2", "C5", "C6", "C3", "C8", "C7", "C9", "C10", "C12", "C11", "C13", "C14", "C15", "C16", "C17", "C18", "C19", "C20", "C21", "C22", "C24", "C23", "C32", "C31", "C30", "C29", "C28", "C27", "C26", "C25")).Value _


    Next i


   End With
End With

End Sub

Offline Ex-lid

  • Oplosser
  • ****
  • Berichten: 670
  • Geslacht: Man
  • dit lid is verbannen
Re: For next loop vraagje...
« Reactie #1 Gepost op: 19 februari 2018, 11:07:26 »
Bedoel je zoiets?
Sub Updateoverzicht()
With Sheets("Timeupdates")
    Set c = .Cells(.Rows.Count, 1).End(xlUp).Offset(1)
    Set c1 = .Cells(.Rows.Count, 1).End(xlUp).Offset(2)
End With
With Sheets("Updates")
    For i = 1 To 31
        c.Offset(, i - 1).Value = .Range(Choose(i, "A1", "B2", "B5", "B6", "B3", "B8", "B7", "B9", "B10", "B12", "B11", "B13", "B14", _
        "B15", "B16", "B17", "B18", "B19", "B20", "B21", "B22", "B24", "B23", "B32", "B31", "B30", "B29", "B28", "B27", "B26", "B25")).Value
        c1.Offset(, i - 1).Value = .Range(Choose(i, "A1", "C2", "C5", "C6", "C3", "C8", "C7", "C9", "C10", "C12", "C11", "C13", "C14", _
        "C15", "C16", "C17", "C18", "C19", "C20", "C21", "C22", "C24", "C23", "C32", "C31", "C30", "C29", "C28", "C27", "C26", "C25")).Value
    Next i
End With
End Sub

Offline pa3ewc

  • Nieuw lid
  • Berichten: 3
  • Geslacht: Man
  • Oplossing.be
Re: For next loop vraagje...
« Reactie #2 Gepost op: 19 februari 2018, 11:56:41 »
Hallo Dotchiejack,

Ja dat is zeker in de goede richting. ! bedankt alvast hiervoor. het werkt nu en komen beiden kolommen als regels onder elkaar te staan :thumbsup:

Had alleen nu deze 2 regels op werkblad "Timeupdate" zo weergegeven dat de nieuwe timeupdates altijd bovenaan komt te staan en niet zoals het nu gebeurd eronder. Dan heb ik altijd de laatste update times boven aan staan. Zou je dit nog voor elkaar kunnen krijgen.? Dat zou super zijn.....

Moet even gaan kijken hoe jij je dat gedaan hebt met de macro. Zie dat je het c, c1, enzovoort gaat noemen voor de eventuele verdere kolommen die in wilde maken en ook weer hier aan toegevoegd worden.

Offline SoftAid

  • Administrator
  • Ambassadeur
  • *****
  • Berichten: 20.129
  • Geslacht: Man
  • Nobody is perfect, not even me...
Re: For next loop vraagje...
« Reactie #3 Gepost op: 19 februari 2018, 13:00:52 »
Hallo pa3ewc,

Had alleen nu deze 2 regels op werkblad "Timeupdate" zo weergegeven dat de nieuwe timeupdates altijd bovenaan komt te staan en niet zoals het nu gebeurd eronder. Dan heb ik altijd de laatste update times boven aan staan. Zou je dit nog voor elkaar kunnen krijgen.? Dat zou super zijn.....
Je kan in de macro van Dotchiejack, net voor de End Sub volgende code plaatsen om te sorteren op datum.

With ActiveWorkbook.Worksheets("Timeupdates").Sort
        .SetRange Range("A1:AF32")
        .Header = xlYes
        .MatchCase = False
        .Orientation = xlTopToBottom
        .SortMethod = xlPinYin
        .Apply
    End With

:) SoftAid :)             
Maximum grootte bijlagen vergroot naar 4 MB
Dubbelposten, het posten op verschillende forums van dezelfde vraag, dient op
voorhand gemeld te worden, met een link naar het topic op de andere site.
Overtreding van deze regel kan bestraft worden met verbanning !

Offline Ex-lid

  • Oplosser
  • ****
  • Berichten: 670
  • Geslacht: Man
  • dit lid is verbannen
Re: For next loop vraagje...
« Reactie #4 Gepost op: 19 februari 2018, 13:16:32 »
Of zo:
Sub dotch()
Dim fRow As Long, iRow As Long
fRow = 2
Rows(fRow).Insert Shift:=xlDown
iRow = fRow
With Sheets("Updates")
Cells(iRow, 1).Resize(, 31).Value = Array(.[A1], .[B2], .[B5], .[B6], .[B3], .[B8], .[B7], .[B9], .[B10], .[B12], .[B11], .[B13], .[B14], _
.[B15], .[B16], .[B17], .[B18], .[B19], .[B20], .[B21], .[B22], .[B24], .[B23], .[B32], .[B31], .[B31], .[B30], .[B29], .[B28], .[B27], .[B26], .[B25])
Rows(fRow).Insert Shift:=xlDown
iRow = fRow
Cells(iRow, 1).Resize(, 31).Value = Array(.[A1], .[C2], .[C5], .[C6], .[C3], .[C8], .[C7], .[C9], .[C10], .[C12], .[C11], .[C13], .[C14], _
.[C15], .[C16], .[C17], .[C18], .[C19], .[C20], .[C21], .[C22], .[C24], .[C23], .[C32], .[C31], .[C31], .[C30], .[C29], .[C28], .[C27], .[C26], .[C25])
End With
End Sub

Offline pa3ewc

  • Nieuw lid
  • Berichten: 3
  • Geslacht: Man
  • Oplossing.be
Re: For next loop vraagje...
« Reactie #5 Gepost op: 19 februari 2018, 14:08:30 »
Beste Dotchiejack en SoftAid,

Beiden bedankt voor jullie reactie.  :thumbsup:

Het werkt nu zoals ik het wilde hebben.
Heb nu ook de mogelijkheden om jullie voorbeelden wat aan te passen om te zien wat er zoal mee gebeurd.
Dit om wat ervan te leren natuurlijk.

Nogmaals dank.!
 

Offline Ex-lid

  • Oplosser
  • ****
  • Berichten: 670
  • Geslacht: Man
  • dit lid is verbannen
Re: For next loop vraagje...
« Reactie #6 Gepost op: 19 februari 2018, 14:40:51 »
Dank voor de terugkoppeling :thumbsup:
Suc6

Offline RedHead

  • Excel-Expert
  • Ambassadeur
  • *****
  • Berichten: 2.277
  • Geslacht: Man
  • Met Excel lukt 't wel.... (toch???)
Re: For next loop vraagje...
« Reactie #7 Gepost op: 19 februari 2018, 21:03:49 »
Persoonlijk lijkt het mij het allerslimste om je achterliggende database gelijk te houden aan de invoer velden in de sheet Customer. Zie mijn voorbeeld hierin. Zo hoef je namelijk helemaal niets met lussen te doorlopen...   ;)

Sub VerplaatsCustomerNaarUpdate()

    With Sheets("Timeupdates (2)")
        With .Cells(.Rows.Count, 1).End(xlUp).Offset(1)
            .Resize(2).Value = Format(Now, "dd-mm-yyyy \/ hh:mm")
            .Offset(, 1).Resize(2, (.Parent.Rows(1).SpecialCells(xlCellTypeConstants).Columns.Count) - 1).Value = Application.transpose(Sheets("Customer").Range("B2:C32"))
        End With
    End With
   
End Sub
______________________________

Groet, Leo

 


www.combell.com