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

Tabel transponeren en toevoegen aan eerste lege rij

Status
Niet open voor verdere reacties.

Dloyd Spencer

Gebruiker
Lid geworden
16 jan 2006
Berichten
13
Beste

Ik ben een leek wat betreft macro's in excel. Kan iemand me helpen met onderstaande vraag? Alvast bedankt.

Tabblad 'Formulier bestelling'

In dit tabblad staat een tabel van 2 kolommen en 7 rijen. In de eerste kolom (bereik A5:A11) staan een aantal omschrijvingen (bestelnr, datum bestelling, leverancier, ...) en in de tweede kolom (bereik B5:B11) staat een waarde/datum/tekst/... (1234, 07/04/2015, leverancier ABC, ...). Ik had graag de gegevens in de cellen uit bereik B5:B11 willen kopiëren naar een ander tabblad, 'Bestellingen', en laten toevoegen onderaan de lijst, m.a.w. in de eerste lege rij. Bovendien wil ik de gegevens eerst transponeren. Ik bedoel dat ik de gegevens uit bereik B5:B11 (uit tabblad 'Formulier bestelling') wil kopiëren naar bereik A2:G2 (de eerstvolgende lege rij) (in tabblad 'Bestellingen'). Nadien mogen de gekopieerde gegevens uit bereik B5:B11 gewist worden.
 
graag volgende keer een voorbeeldbestandje erbij doen ipv van heel die tekst.

Code:
Sub overzetten()

    With Sheets(1)
    sq = Application.Transpose(.Range("B5:b11"))
    .Range("B5:b11").ClearContents
    End With
    
    With Sheets(2)
    .Cells(Rows.Count, "A").End(xlUp).Offset(1).Resize(1, 7) = sq
    End With

End Sub

Niels
 
Aangepast met bestandje

Alvast bedankt Niels28.

O.w.v. lay-out is de vraag ietsje gewijzigd. Zelfde vraag maar nu zonder de rijen in het bereik die leeg zijn, niet mee transponeren en kopiëren.

Nu met bestandje ;-)
 

Bijlagen

Code:
Sub overzetten()

    With Sheets(1)
    sq = Array(.[C5].Value, .[C7].Value, .[C9].Value, .[C11].Value, .[C13].Value, .[C15].Value, .[C17].Value)
    .Range("C5:C17").ClearContents
    End With
    
    With Sheets(2)
    .Cells(Rows.Count, "A").End(xlUp).Offset(1).Resize(1, 7) = sq
    End With

End Sub

Niels
 
Je hebt nu geen aaneengesloten cellen dus dat gaat niet werken.
en zonder transpose komt overal de eerste waarde te staan.

Niels
 
Niels

Ik bedoel iets anders.

Bereik A18:G34 uit tabblad "Formulier bestelling" moet gekopieerd worden naar tabblad "Bestellingen" maar onderaan de lijst (dus vanaf de eerstvolgende lege rij). Het bereik A18:G34 uit tabblad "Formulier bestelling" mag bovendien leeggemaakt worden.
 
Dat doet de macro toch maar dan met het bereik uit je voorbeeld?

Niels
 
Niels

Ik zal mijn vraag herformuleren.

Tabblad 'Formulier bestelling'

Als ik op de knop 'Bestel' druk wil ik dat er het volgende gebeurt:
- F4 wordt (éénmalig) gekopieerd naar F14
- F5 wordt (éénmalig) gekopieerd naar F15
- F6 wordt gekopieerd naar de eerstvolgende lege cel vanaf E18
- F8 wordt gekopieerd naar de eerstvolgende lege cel vanaf G18

Als ik op de knop 'Bestelling finaliseren' druk wil ik dat er het volgende gebeurt:
- A18:H(?) (hangt af van hoe lang de artikellijst is) kopiëren naar het tabblad 'Bestellingen' op de eerstvolgende lege rij
- let op: geen rekening houden met lege kolommen (zoals kolom D)
- de cellen F5, F6, F8, het bereik in kolom E (vanaf E18) en het bereik in kolom G (vanaf G18) mag leeggemaakt worden
 

Bijlagen

Dit lijkt niet meer op je eerste vraag,
Op tabblad bestelling kolom D toevoegen en dan werken deze macro's

Code:
Sub bestel()

    With Sheets(1)
        .[f14].Value = .[f4].Value
        .[f15].Value = .[f5].Value
        lrow = .[e34].End(xlUp).Offset(1).Row
        .Range("E" & lrow).Value = .[f6].Value
        .Range("G" & lrow).Value = .[f8].Value
    End With

End Sub

Sub finaliseren()
With Sheets(1)
        lrow = .[e34].End(xlUp).Offset(1).Row
 sq = .Range("A18:H" & lrow)
 End With
 
 With Sheets(2)
 .Cells(Rows.Count, 1).End(xlUp).Offset(1).Resize(UBound(sq), UBound(sq, 2)) = sq
 End With
        
End Sub

het wissen lukt je denk ik zelf wel
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan