draaitabel gegevens in userform

Status
Niet open voor verdere reacties.

jan excel

Gebruiker
Lid geworden
4 mrt 2007
Berichten
437
Hallo experts vba,

Krijg het niet voor elkaar om via het userform artikelnr. te selecteren in combobox1, waarbij het filter van de draaitabel ook deze activeert.
Vervolgens dienen de totalen van test1,test2,test3 en test 4 behorende bij dat artikelnummer getoond te worden op het userform in textbox1,textbox2,textbox3 en textbox4.


Zie toegevoegde bijlage, dan is e.e.a. wel duidelijk.


Alvast bedankt.
Jan E

Bekijk bijlage voorbeeldhlpmij2.xlsm
 
Jan,

Combobox vullen.
Code:
Private Sub UserForm_Initialize()
Dim i As Long, sn As String
With Blad1.PivotTables(1).pivotfields("artikel")
For i = 1 To .DataRange.Rows.Count
    sn = sn & vbLf & .PivotItems(i)
  Next i
 End With
ComboBox1.List = Application.Transpose(Split(Mid(sn, 2), vbLf))
End Sub


Textboxen vullen.
Code:
Private Sub ComboBox1_Change()
Dim i As Long
 For i = 1 To 4
  Me("textbox" & i) = Blad1.PivotTables(1).PivotFields("artikel").PivotItems(ComboBox1.ListIndex + 1).DataRange.Item(i).Value
 Next i
End Sub
 
Laatst bewerkt:
Zo zal het beter gaan Jan.
 

Bijlagen

Laatst bewerkt:
Harry,

Super het werkt, nu kan ik weer verder met het project.
1000 x dank.

groet.
jan
 
Beste Harry,

De layout van de draaitabel is in het project toch iets anders geworden.
Het eerste voorbeeld stond boven test1 tekst waardes deze verwijderd en keuze van een maand via combobox2 toegevoegd.
Wil je mij helpen om de juiste VBA code in Userform1 te zetten met hierbij de maand keuze mogelijkheid.
De bedoeling is dus als een maand is geselecteerd in combobox2 dat dan alleen de artikels laat zien van desbetreffende maand in Combobox1.
De keuze mogelijkheid (Alle) dient ook mogelijk te blijven.

PS door dat de layout anders is geworden is het nu zo als ik een order selecteer dat in de textboxen 1 /tm 4 de waardes komen te staan van een regel er onder.
Dit inmiddels opgelost door de rij met waarden weergeven via opties.

Zal je zeer dankbaar zijn als je mij hier mee wil helpen.


Zie bijlage.

Bekijk bijlage voorbeeldhlpmij2 (1).xlsm


groet,
Jan E
 
Laatst bewerkt:
Ik hoop dat het zo naar je zin is Jan.
Code:
Private Sub ComboBox1_Change()
Dim i As Long
 For i = 1 To 4
  Me("textbox" & i) = Blad1.PivotTables(1).PivotFields("artikel").PivotItems(ComboBox1.Value).DataRange.Item(i).Value
 Next i
End Sub
Code:
Private Sub ComboBox2_Change()
Dim pvtItem
 With Blad1.PivotTables(1)
 .PivotFields("maand").CurrentPage = ComboBox2.Value
For Each pvtItem In .PivotFields("artikel").DataRange
  sn = sn & vbLf & pvtItem
Next pvtItem
  End With
 ComboBox1.List = Split(Mid(sn, 2), vbLf)
End Sub
Code:
Private Sub UserForm_Initialize()
Dim i As Long, sn As String
With Blad1.PivotTables(1).PivotFields("artikel")
 For Each Pi In .PivotItems
       sn = sn & vbLf & Pi.Value
    Next Pi
 End With
  ComboBox1.List = Split(Mid(sn, 2), vbLf)
  ComboBox2.List = Array("januari", "februari", "maart", "april", "mei", "juni", "juli", "augustus", "september", "oktober", "november", "december")
End Sub
 

Bijlagen

Laatst bewerkt:
Beste Harry,

Bedankt je bent geweldig !
Zo te zien is dit precies wat ik bedoel.


Groet,
Jan E
 
Hoi Harry,

Tijdens het testen kwam ik er achter dat als er een maand nog niet in de gegevensbron staat deze wel te selecteren is en dan nog orders toont.
Februari en augustus in dit geval, dit mag eigenlijk niet kunnen.
Is het mogelijk als er een bepaalde maand niet in de gegevensbron staat dat deze dan ook niet wordt getoond of er een melding komt dat er in deze maand geen gegevens zijn.


groet,
Jan E
 
Dag Jan,

Verander de initialize code.
Code:
Private Sub UserForm_Initialize()
Dim i As Long, sn As String, sn0 As String
With Blad1.PivotTables(1)
For Each Pi In .PivotFields("artikel").PivotItems
 sn = sn & vbLf & Pi.Value
   Next Pi
For Each Pi In .PivotFields("maand").PivotItems
 sn0 = sn0 & vbLf & Pi.Value
   Next Pi
End With
  ComboBox1.List = Split(Mid(sn, 2), vbLf)
  ComboBox2.List = Split(Mid(sn0, 2), vbLf)
End Sub
 
Beste Harry,

Als ik met een schone lei begin, dan werkt jou code, echter als er al eens een maand is geselecteerd en niet meer in de lijst staat dan kan ik deze in combobox2
nog steeds selecteren, er komt dan wel een foutmelding.
Deze fout melding negeer ik met On Error Resume Next.

Eigenlijk zou ik in plaats van deze foutmelding graag zien dat er een melding komt zoals "in deze maand staan geen gegevens, selecteer een andere maand".
Het Lijkt mij als VBA een error signaleert dat het dan ook op basis daarvan een MsgBox moet kunnen laten tonen met de tekst "Deze maand bevat geen gegevens, selecteer een andere maand")
En zodra er dan op OK button wordt geklikt dat een andere maand kan worden geselecteerd.

De MsgBox heb ik nu achter de code On Error Resume Next gezet, dus deze melding komt nu altijd, ook als er wel een maand is geselecteerd met gegevens.
Dit is logisch omdat de On Error Resume Next code ervoor staat.

Weet jij hoe ik dit wel voor elkaar kan krijgen.

Zie bijlage, hierin zul je ook zien dat de maand februari kan worden geselecteerd.


Bekijk bijlage voorbeeldhlpmij2 (1) (4).xlsm

Groet,
Jan E
 
Refresh jij de draaitabel dan niet Jan?
 
Hoi Harry,

Draaitabel refresh helpt niet, probeer het zelf maar eens met het voorbeeld bestand.



Groet
Jan E
 
Hoi Jan,

Je moet in de opties van de draaitabel (rechtermuisklik op draaitabel) naar tab → gegevens → en dan "Automatisch" veranderen in "Geen".
Ik heb even alle gegevens van januari verwijderd.
Daarna refreshen.
Nu is januari uit de combobox bij het initialiseren van het form.
 
Laatst bewerkt:
Beste Harry,

Geweldig, dat is het.
Hier ben ik blij mee, nogmaals mijn dank voor je hulp en geduld.


groet,
Jan E
 
vervolg vraag: textboxen 2 decimalen en aanpassing selectie combobox2

Hoi Allen,

Harry (HSV) heeft mij de VBA codes voor dit onderwerp geleverd en was ook op status opgelost gezet.

Echter bij nader inzien heb ik toch nog graag twee aanvullingen/wijzigingen hierop.


1. Graag zou ik de uitkomsten in textboxen 1 t/m 4 altijd in twee decimalen willen zien. (nu zie je bijvoorbeeld in de maand november bij artikelnr. 26039103 in textbox1 14,83333333333 staan)

2. mogelijkheid om bij de selectie keuze combobox2 permanent ook keuze (Alle) geselecteerd kan worden.
Hierbij moet na refresh wel alleen de maanden die in de brongegevens staan getoond worden in combobox2, zoals het nu dus ook is.

De optie (alle) is nodig als gebruiker alle gegevens wil uitprinten, dus van alle maanden.


zie bijlage: Bekijk bijlage voorbeeldhlpmij3.xlsm



alvast bij voorbaat dank,
Jan E
 
Bij deze Jan.

Nog een extra toegevoegd:
Wanneer keuze wordt gemaakt met combobox2, worden de combobox1 en de textboxen op "vbnullstring" gezet.
 

Bijlagen

Beste Harry,

ongelooflijk snel en bedankt maar weer !!
Dit is precies wat ik bedoelde.

groet,
Jan E
 
Jan,

Graag gedaan maar weer.
Voeg de rode regelcode nog even toe in de "Initialize" van het Form.
Code:
With Blad1.PivotTables(1)
[COLOR="#FF0000"].RefreshTable[/COLOR]
For Each Pi In .PivotFields("artikel").PivotItems

Ook staat er in cel F17 "Novemer" zonder "b", maar het zal een typefoutje zijn.
Als je die hebt veranderd wordt je draaitabel automatisch vernieuwd en is je Form actueel.
 
hoi Harry,

Bedankt voor aanvulling, deze geïmplementeerd in mijn project.
Tot een volgende keer dan maar, en bedankt !!


groet,
Jan E
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan