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

Opsomming items die voldoen aan voorwaarden

Status
Niet open voor verdere reacties.

themover

Gebruiker
Lid geworden
7 jan 2013
Berichten
52
Ik ben bezig met een bestandje wat het mogelijk moet maken te inventariseren met een laptop met aanraakscherm.
Nu wil ik op een overzichtsblad een opsomming kunnen zien van de items die aan bepaalde voorwaarden voldoen.

Hoe zou ik dit voor elkaar kunnen krijgen?

In de bijlage een beginsel, het uiteindelijke werkblad zal uit ongeveer 8 à 10 tabbladen met categorieën bestaan.
 

Bijlagen

Dank je emields

Hoewel ik dit overzichtelijker vind doordat de knoppen niet direct allemaal zichtbaar zijn, denk ik dat het voor die gasten minder makkelijk is.
Dit omdat ze een extra klik moeten doen door eerst het product te selecteren om de keuzeknop zichtbaar te maken.

Verder zie ik wel verandering ergens anders in het tabblad, maar niet in het totaal.
Is daar iets wat ik niet zie? :o

Tot slot wil ik het blad iets wil uitbreiden met een controleblad, waarop een opsomming zou moeten komen van producten en aantallen in voorraad, andere producten die niet op voorraad zijn weglatend.
Omdat dit tabblad zijn informatie uit meerdere tabbladen moet halen denk ik dat hiervoor draaitabellen de beste oplossing is, maar daarvoor moet ik nog flink wat topics doornemen om dit te begrijpen...
 
Dat maakt het inderdaad wat duidelijker en er gebeurde al wat ik vreesde.. je hebt voor elk artikel minsten 3 knoppen nodig, dus telkens als jij een artikel toevoegd moet je aan de slag met nieuwe knoppen en nieuwe macro's dat is ondoenlijk.. op den duur.

Wat je nodig hebt is
- Lijst met artikelen per categorie
- Telsheet
- Rapportage Tellingen met overzicht van alle getelde artikelen

Ik heb daarvan een eerste opzet gemaakt.

Op de tabbladen met artikelen heb ik de kolommen met knoppen verwijderd.
Ik twijfel over het nut van kolom open maar die heb ik laten staan..

Op de telsheet kan de medewerker door de categorieen (tabbladen) bladeren en door de artikelen
Daarna kan hij het gekozen artikel tellen en de telling opslaan
en naar het het volgende artikel

De tellingen worden opgeslagen in het orginele tabblad

en op de sheet Rapportage Tellingen kun je vervolgens een overzicht maken die alle items met een geteld aantal weergeeft.


zie bijlage
 

Bijlagen

Het is mij niet duidelijk wat de verwachte uitkomst is. Alle procedures kan je reduceren tot 1

Code:
Sub MeerMinder(j As Long)
  r = ActiveSheet.Shapes(Application.Caller).TopLeftCell.Address
  If Range(r).Column = 7 Then
    Range(r) = IIf(Range(r) = 1, "", 1)
   Else
    Range(r).Offset(, Abs(Range(r).Column = 2) + 1) = Range(r).Offset(, Abs(Range(r).Column = 2) + 1) + (-2 * Abs((Range(r).Column = 2)) + 1) * j
  End If
End Sub
Heb je wel getest of je met een aanraakscherm de knoppen kan bedienen. Volgens mij kan het nl niet maar weet ik niet zeker.
 

Bijlagen

De code kan je reduceren door aan de variabele r een objectverwijzing toe te wijzen.
 
De suggestie van @HSV even meegenomen al maakt het niet veel uit. De gegevens worden weggeschreven in een tabel. De draaitabel geeft denk ik het verwachte overzicht.
 

Bijlagen

Scheelt veel typwerk en geen omwandelingen om van een String een Range te maken.

Code:
Set r = ActiveSheet.Range(ActiveSheet.Shapes(Application.Caller).TopLeftCell.Address)

Of:
Code:
Set r = ActiveSheet.Shapes(Application.Caller).TopLeftCell
 
Laatst bewerkt:
Dank jullie wel allemaal.

Roel, ondanks dat het heel erg overzichtelijk is moet ik nagaan of dit werkbaar is, er moet dan immers altijd een vaste volgorde worden gelopen...
Het gaat mij er juist om dat het zo gemakkelijk mogelijk is voor diegene die inventariseert.

Het aanmaken van het bestand zal veel werk zijn, maar er zullen later niet veel producten meer bijkomen, de lijst is vrij constant. Dit betekent maar 1x de codes en die heb ik in een apart blad via formules snel voor elkaar (alleen het toewijzen duurt even...).
Het overzicht is wel nagenoeg helemaal hoe ik het wil hebben, alleen wil ik nog apart vermeld hebben welke producten allemaal open zijn (retour, verpakking open of bijv. een zakje ringen of veren van 100 dat open is).


Wow VenA, die code is een stuk makkelijker en ook veel gemakkelijker om het bestand goed door te voeren, scheelt enorm veel toewijzen.
Ik heb het geprobeerd met een aanraakscherm en het werkt. Het is geloof ik een MS Surface die ze hebben, want op mijn iPad werkt het niet. :(
 
De optie voor open verpakkingen is nog wel toe te voegen, ik snapte vooral niet wat het was.
Hoe word nu dan de vaste volgorde bepaald?
Omdat er geen magazijnlocaties bij je artikelen staan ben ik er namelijk van uit gegaan dat de artikelen al in de logische telvolgorde in de sheet staan.
Of moeten medewerkers als ze voor de magazijnlocatie staan zelf in de lijst zoeken naar het betreffende artikel?
 
Ik had inderdaad misschien moeten wachten tot de volgorde bepaald was (zeker met de macro's), maar daar zijn we nog niet over uit...
Wanneer ik de macro's begrijp kan ik ze echter aanpassen wanneer er 3 kolommen voor komen te staan, zoals ik het nu voor me heb.

Ik ga ermee aan de slag en probeer de macro's van VenA toe te passen, maar denk dat ik nog terug kom op de oplossing van Roel wat betreft de opsomming op een apart tabblad, dat lijkt me de meest praktische.
Nogmaals dank allemaal!
 
Hoi VenA,

Stel dat ik nog een kolom wil toevoegen als kolom G, hoe zou ik de code uit kunnen breiden?
Ik heb een extra If geprobeerd toe te voegen maar dit conflicteert zoals ik dit heb gedaan...
 
Als je er niet bij vertelt wat je hebt gedaan dan kan ik er moeilijk iets zinnigs over zeggen. Op zich kan je een extra if opnemen maar je kan dan beter Select Case gebruiken en per kolom de code maken. Je krijgt dan zoiets:
Code:
Sub MeerMinder(j As Long)
  Set r = ActiveSheet.Range(ActiveSheet.Shapes(Application.Caller).TopLeftCell.Address)
    Select Case r.Column
      Case 2
        'de code voor als het object in kolom B staat
      Case 3
        'de code voor als het object in kolom C staat
      Case 7
        'de code voor als het object in kolom G staat
    End Select
End Sub
 
Nu ik er goed over nadenk denk ik dat ik die If na Then heb gezet, dan gaat hij sowieso niet werken.

Ik heb ook geprobeerd:
Code:
Sub MeerMinder00(j As Long)
  Set r = ActiveSheet.Range(ActiveSheet.Shapes(Application.Caller).TopLeftCell.Address)
    Select Case r.Column
      Case 2
      r.Offset(, Abs(r.Column = 2) + 1) = r.Offset(, Abs(r.Column = 2) + 1) + (-2 * Abs((r.Column = 2)) + 1) * j
      Case 3
      r.Offset(, Abs(r.Column = 2) + 1) = r.Offset(, Abs(r.Column = 2) + 1) + (-2 * Abs((r.Column = 2)) + 1) * j
      Case 7
      r.Value = IIf(r.Value = 1, "", 1)
      Case 8
      r.Value = IIf(r.Value = 1, "", 1)
    End Select
End Sub

En ook deze werkt niet:
Code:
Sub MeerMinder(j As Long)
  Set r = ActiveSheet.Range(ActiveSheet.Shapes(Application.Caller).TopLeftCell.Address)
  If r.Column = 7 Or r.Column = 8 Then
        r.Value = IIf(r.Value = 1, "", 1)
   Else
    r.Offset(, Abs(r.Column = 2) + 1) = r.Offset(, Abs(r.Column = 2) + 1) + (-2 * Abs((r.Column = 2)) + 1) * j
  End If
End Sub
Ondanks dat de Case wellicht een betere oplossing is begrijp ik niet waarom Or het niet doet?
 
Laatst bewerkt:
Denk hier eens goed over na wat er hier gebeurt.

Select case is de kolom waarin je klikt op een afbeelding.
Hier is het kolom C (3).
Code:
Case [COLOR=#ff0000]3[/COLOR]
      r.Offset(, Abs(r.Column = 2) + 1) = r.Offset(, Abs(r.Column = 2) + 1) + (-2 * Abs((r.Column = 2)) + 1) * j

Wat zal er moeten veranderen in de code?
 
Excel heeft een beetje rare eigenschap. Al je zo'n plaatje kopieert naar een nieuw cel dan blijft de naam hetzelfde. Zie in het blad 'sealings' G2 en H2 beiden heten 'Rechthoek 170' en dan pakt de de application.caller de eerste met het bijbehorende kolomnummer. Dus je moet ervoor zorgen dat elke naam uniek is en dan werkt de Or ook. Klik maar op I2
 

Bijlagen

Harry, dat had ik dacht ik ondervangen met de aanpassing naar Case 7 en Case 8, de kolommen waarbij ik wil dat de waarde of '1' of '0' is...
Vandaar dat ik niet begreep waarom de code niet werkte.

VenA, dank je voor de oplossing, ik wist wel dat dit dezelfde plaatjes waren maar had dit niet gekoppeld aan 'eerste plaatje in een rij'. :o
Ik kan denk ik het beste een nieuwe naam aan de vakken geven en er een algemene macro aan toewijzen, voor de rest van de kolom.
Op deze manier kan ik ook gemakkelijk het blad uitbreiden wanneer ik de lijst met alle producten heb gekregen.

Het probleem is denk ik dat ik niet voldoende basiskennis van Macro heb voor de wensen die ik voor dit bestand heb.

Nogmaals dank allen, ik ga weer verder prutsen en verwacht dat ik nog wel met vragen kom over het totaalblad.
 
Om unieke namen voor de plaatjes te genereren kan je zoiets gebruiken

Code:
Private Sub Worksheet_Activate()
  For j = 1 To ActiveSheet.Shapes.Count
    ActiveSheet.Shapes(j).Name = "Plaatje" & j
  Next j
End Sub
 
Ik kreeg zo veel verbeterpunten dat ik de eigenlijke vraag uit het oog ben verloren... :)

Hoe kan ik met formules een lijst van items genereren op een apart tabblad, die zijn gegevens uit alle tabbladen haalt?
Wat ik wil is een opsomming van de items die op de diverse tabbladen als 'open' zijn gemarkeerd.
 

Bijlagen

Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan