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

Kolommen verbergen op basis van gefilterde waarde (2)

Status
Niet open voor verdere reacties.

Severijns

Gebruiker
Lid geworden
6 jul 2018
Berichten
139
L.S.

Vorige week heb ik een vraag gesteld m.b.t. dit onderwerp en heb daar snel een goede oplossing voor gekregen.
Bij deze nogmaals mijn dank aan VenA.

Ik heb echter wel een aanvullende vraag.

Is het ook mogelijk om cellen met een kleur zichtbaar te houden, zelfs als er niets in de cel staat.
In het oorspronkelijke document wordt de kleuring veroorzaakt door "Voorwaardelijke Opmaak"
Ik denk dat het iets moet worden met filteren op kleur.
In de bijlage zit al de code die ik van VenA heb gekregen echter verbergt deze ook de lege cellen met een kleuring.
Ik hoop dat het duidelijk en niet te ingewikkeld is.

Bij voorbaat dank,

Rob
 
Als ik je goed begrijp wordt het dan handmatig gekleurd, want op een lege cel krijg je die kleur uit de Vw-opmaak niet.

Code:
For j = 3 To .Columns.Count
    On Error Resume Next
      If Application.Subtotal(3, .Columns(j)) < 2 And .Columns(j).SpecialCells(4).Interior.ColorIndex <> -4105 Or .Columns(j).SpecialCells(4).Interior.ColorIndex <> -4142 Then
        If r Is Nothing Then Set r = .Columns(j) Else Set r = Union(r, .Columns(j))
 
Beste Harry,

Bedankt voor je reactie.
Helaas heeft het niet het gewenste resultaat.
Overigens vindt de kleuring van de cellen wel plaats via Vw Opmaak.
In het originele document wordt er gekeken naar de overeenkomstige cell op een ander tabblad en op basis van die waarde vindt de kleuring middels Vw Opmaak plaats.
Middels de volgende formules in Vw Opmaak wordt de kleuring (opmaak, opvuleffecten) bepaald.

=INDEX('Opl. Matrix'!H$2:$CZ$112;VERGELIJKEN($F13;'Opl. Matrix'!$F$2:$F$112;0);VERGELIJKEN(H$2;'Opl. Matrix'!H$2:H$112;0))="F" (Cell kleurt half geel)

en

=INDEX('Opl. Matrix'!H$2:$CZ$112;VERGELIJKEN($F13;'Opl. Matrix'!$F$2:$F$112;0);VERGELIJKEN(H$2;'Opl. Matrix'!H$2:H$112;0))="X" (Cell kleurt half groen)

Voor beiden geldt het van toepassing zijnde bereik: =$H$13:$CZ$1013

Na toevoeging van de door jou aangepaste code worden er meer kolommen verborgen als de bedoeling is.
Alle cellen in kolom waarin data staat blijven zichtbaar maar de kolommen met gekleurde cellen en zonder data worden verborgen (dus eigenlijk geen verandering ten opzicht van de situatie hiervoor)
Als ik het goed begrijp wordt er nu gekeken naar de specifieke kleuring maar eigenlijk zou de kleur niet uit moeten maken.
Dus als de kleur van de cel niet gelijk is aan "geen kleur" moet de kolom zichtbaar blijven.
Daarnaast duurt de vrij lang voordat de verwerking heeft plaatsgevonden.
Ik weet niet waar dat aan ligt maar kan het zijn dat dezelfde code niet op 2 worksheets in hetzelfde workbook kan worden uitgevoerd?
Misschien vraag ik wel teveel?

De code die ik nu heb staan is als volgt:

Private Sub Worksheet_Calculate()

Dim r As Range
With Cells(12, 5).CurrentRegion
.Columns.Hidden = False
For j = 3 To .Columns.Count
On Error Resume Next
If Application.Subtotal(3, .Columns(j)) < 2 And .Columns(j).SpecialCells(4).Interior.ColorIndex <> -4105 Or .Columns(j).SpecialCells(4).Interior.ColorIndex <> -4142 Then
If r Is Nothing Then Set r = .Columns(j) Else Set r = Union(r, .Columns(j))
End If
Next j
End With
If Not r Is Nothing Then r.Columns.Hidden = True

End Sub

Hoop dat e.e.a. duidelijk is al kan ik mij goed voorstellen dat het aardig cryptisch begint te worden.
Mocht het nodig zijn het originele bestand te sturen laat dat dan even weten.

Met vriendelijke groet,

Rob
 
L.S.

Een oplossing zou misschien kunnen zijn om alle cellen in het bereik E5:AD24 die zijn voorzien van een kleur en tevens leeg zijn automatisch te laten vullen met een . (punt) in de kleur wit.
Daarmee vallen ze niet op maar het zorgt er wel voor dat de filtering juist werkt.

Is dat mogelijk via VBA of zal het telkens handmatig moeten worden gedaan?

Met vriendelijke groet,

Rob
 
Laatst bewerkt:
Het plaatsen van een bestand dat niet tot de verbeelding spreekt van het origineel geeft altijd een foutief antwoord.

Helaas kan ik je niet verder helpen daar mijn Excel versie (2007) niet kan omgaan met formules in de Vw-opmaak uit een ander werkblad.
 
Harry,

Alsnog bedankt voor de genomen moeite.

Ik heb toch even het bestand toegevoegd waar het om gaat.
Het is uiteraard volledig geanonimiseerd.
Is het ook niet mogelijk om, via VBA, een gekleurde cel die leeg is te laten vullen met een . (punt)?

Met vriendelijk groet,

Rob Severijns
 

Bijlagen

  • Scholingstabel - Kopie.xlsm
    642,2 KB · Weergaven: 32
Code graag tussen codetags plaatsen. Het beveiligen, als je het al doet, doe je pas als het project klaar is.

Probeer het zo eens
Code:
Private Sub Worksheet_Calculate()
  Dim r As Range
  With Cells(12, 2).CurrentRegion
    For j = 4 To .Columns.Count
      If Application.Subtotal(3, .Columns(j + 3)) < 2 And Application.Subtotal(3, Sheets("Opl. Matrix").Cells(12, 5).CurrentRegion.Columns(j)) < 2 Then
        If r Is Nothing Then Set r = .Columns(j + 3) Else Set r = Union(r, .Columns(j + 3))
      End If
    Next j
  End With
  Columns.Hidden = False
  If Not r Is Nothing Then r.EntireColumn.Hidden = True
End Sub
 
VenA en Sylvester,

Bedankt voor jullie effort maar helaas hebben jullie oplossingen niet geresulteerd in het gewenste resultaat.
Kennelijk is het een hardnekkiger probleem als dat ik zelf had kunnen denken maar hopelijk voor jullie als "goeroe" een leuke uitdaging.

Op het tabblad "Opl. Matrix" gaat alles goed wanneer ik een filter toepas op "Functiegroep" en/of op "Functie / Rol".
Een "F" resulteert in een half gele cel kleur en "X" resulteert in een half groene cel kleur in de overeenkomstige cel op het tabblad "Opl. Status"
Wanneer ik echter het filter toepas op "Functiegroep" en/of op "Functie / Rol" op het tabblad "Opl. Status" krijg ik niet de overeenkomstige kolommen te zien zoals deze zichtbaar worden wanneer ik hetzelfde filter toepas op het tabblad "Opl. Matrix".

Eigenlijk gelden voor het filteren op het tabblad "Opl. Status" de volgende criteria:

1. Laat alle kolommen zien die horen bij de overeenkomstige "Functiegroep" en/of "Functie / Rol" (gelijk aan het filter op tabblad "Opl. Matrix")
2. Laat deze kolommen zien ongeacht of ze gevuld zijn met data.
3. Laat binnen de gekozen "Functiegroep" en/of "Functie / Rol" ook die kolommen zien die niet vallen onder het criterium "F" of "X" maar waar wel data in staat.

Het kunnen filteren op basis van de "Functiegroep" is het belangrijkste en eigenlijk altijd de eerste stap.

Nogmaals bedankt voor jullie effort.

Rob
 
Beide code's doen wat wat jouw vraag is. Geef anders aan welke kolommen verborgen moeten worden en plaats een voorbeeld zonder al die ellendige beveilig met alleen de relevante code. Je hebt al verschillende suggesties gehad dus zelf wat proberen mag natuurlijk ook.
 
Beste VenA,

Ik heb het bestand toegevoegd met daarin alleen de relevante code.
Waar ik wel achter kwam is dat de filtering en het verbergen van de kolommen op het tabblad "Opl. Status" goed gaat zolang ik maar zorg dat op het tabblad "Opl. Matrix" dezelfde filtering actief is.
Dus als ik op het tabblad "Opl. Matrix" het filter instel op "Fysio" en aansluitend op het tabblad "Opl. Status" filter op "Fysio" alles goed gaat.
Edoch als ik op het tabblad "Opl. Status" een andere filter optie kies gaat het mis.
Kennelijk werkt de code alleen als de filter keuze op zowel het tabblad "Opl. Matrix" als op "Opl. Status" hetzelfde zijn.
Voor mij een compleet raadsel hoe dat komt.

Overigens spijt het mij als de indruk bestaat dat ik onvoldoende doe om zelf ook een oplossing te vinden en dingen uit te proberen.
Ik kan je verzekeren dat dat niet zo is. Mijn kennis is echter beperkt maar de afgelopen week ben ik zelf al ieder vrij moment bezig geweest om van alles uit te proberen en oplossingen te zoeken.
Tot nu toe met hele kleine stapjes verder gekomen maar nog geen eindoplossing.

Ik zal kijken of ik het voor elkaar krijg om het filter op het tabblad "Opl. Matrix" mee te laten veranderen naar de keuze die ik maak op het tabblad "Opl. Status"
Geen idee of mij dat lukt maar het zou een oplossing kunnen zijn.

Weet in ieder geval dat jullie effort zeer gewaardeerd wordt.

Met vriendelijke groet,

Rob


P.S. Hoe zet ik de Code in een blok?
 

Bijlagen

  • Scholingstabel - Kopie.xlsm
    640,5 KB · Weergaven: 32
Rob, bedoel je misschien dat de weggefilterde cellen niet mee mogen tellen om de kolommen te verbergen?
 
Hallo Sylvester,

Ik weet niet precies wat je bedoelt maar uiteindelijk zou ik graag willen dat het filteren en verbergen van kolommen op het tabblad "Opl. Status" geheel losstaat van de filtering die op het tabblad "Opl. Matrix" is gekozen.
Nu is dat kennelijk niet zo want het filteren en verbergen op het tabblad "Opl. Status" gaat alleen maar goed als op beide tabbladen dezelfde filtering is gekozen.
Als dat zou betekenen dat daarvoor het filter op het tabblad "Opl. Matrix" mee moet veranderen naar de waarde die gekozen is op het tabblad "Opl. Status" dan is dat op zich een prima oplossing.
Hoe dat precies moet en of dat mogelijk is weet ik zo niet maar dat ga ik proberen uit te zoeken.
Of weet jij hoe dat werkt?
De oplossingen die jij en VenA me hebben geboden lossen mijn probleem dan niet volledig op maar geven uiteindelijk wel nieuwe mogelijkheden en inzichten waarmee ik verder kan experimenteren.
Nogmaals dank daarvoor.

Met vriendelijk groet,

Rob
 
kun je aangeven wat er fout gaat?

wil je in beide bladen de zelfde kolommen zien?
 
Laatst bewerkt:
Sylvester,

Wat er fout gaat is dat de filtering en het verbergen van de kolommen op het tabblad "Opl. Status" fout gaat op het moment dat op het tabblad "Opl. Matrix" een andere filtering is geselecteerd.
Dus als ik op het tabblad "Opl. Matrix" kies voor "Fysio" dan zijn de kolommen N, R, S, T, AC, AD, AO, AP, AQ, AV en BB zichtbaar.
Kies ik op het tabblad "Opl. Status" voor "Fysio" terwijl op het tabblad "Opl. Matrix" ook voor "Fysio" is gekozen dan zie ik de kolommen N, R, S, T, AC, AD, AO, AP, AQ, AV en BB.
Precies goed dus.
Als ik echter op het tabblad "Opl. Status" kies voor "Fysio" terwijl op het tabblad "Opl. Matrix" de keuze staat op "Artsen" dan gaat het mis en krijg ik op het Tabblad "Opl. Status de kolommen te zien die bij de keuze op het tabblad "Opl. Matrix zijn gekozen". Dus niet de kolommen die bij "Fysio" horen maar in dit geval die van de "Artsen".
Kennelijk wordt de keuze voor de kolommen op het tabblad "Opl. Status" bepaald door de keuze op het tabblad "Opl. Matrix" en niet door de filterkeuze op het tabblad "Opl. Status".
Vandaar dat het goed gaat als beide gekozen filters gelijk zijn.
Daarom dacht ik dat wanneer ik kan zorgen dat bij een filterkeuze op het Tabblad "Opl. Status" in de achtergrond het filter op het tabblad "Opl. Matrix" op dezelfde waarde wordt ingesteld als de filterkeuze op het tabblad "Opl. Status" mijn probleem opgelost zou zijn.

Volgorde zou dan zijn:
1. Maak een Filterkeuze op tabblad "Opl. Status"
2. Pas de Filterkeuze op tabblad "Opl. Matrix" aan en maak deze gelijk aan die van het tabblad "Opl. Status" (In de achtergrond uitvoeren)
3. Filter en verbergen/zichtbaar maken van kolommen op het tabblad "Opl. Status" uitvoeren.

Klinkt allemaal simpel maar dat is het kennelijk niet.

Rob
 

Bijlagen

  • Scholingstabel - Kopie.xlsm
    640,5 KB · Weergaven: 32
Laatst bewerkt:
Allen,

Helaas is het mij niet gelukt een oplossing te vinden voor mijn "probleem". :(

Toch bedankt aan iedereen die een poging gedaan heeft mij te helpen.


Met vriendelijke groet,

Rob
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan