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

Uit een weekplanning namen halen

Status
Niet open voor verdere reacties.

popipipo

Meubilair
Lid geworden
21 nov 2006
Berichten
8.419
Onderstaande vraag kwam van onze weekplanner of dit mogelijk is (ik denk via VBA).
Onze week planning bestaat uit 2 poules
Elke poule heeft zijn eigen taken.

Voordat aan deze taken begonnen kan worden moet er eerst een voorbereidende taak gedaan worden.
Dit zijn personen uit beide poulen. Voor hun namen staat dan V-Taak.

Nu moeten we een week overzicht hebben wie zo’n voorbereidende taak moet doen.
De namen mogen daar maar 1 keer in voorkomen met daarachter bij de dag een lege cel.
In de lege cel wordt de dag ervoor bekend gemaakt op welke locatie de voorbereidende taak moet worden uitgevoerd.

De gevraagde oplossing kan dus op 2 manieren
Eerst alle namen ophalen waar " V-taak" voor staat.
Daarna standaard gevulde cellen gebruiken en dan de cel leegmaken als er een V-Taak moet worden uitgevoerd.
Of na het ophalen van de namen de dagen waarop V-Taak moet worden gedaan leeg laten en de overige dagen vullen met bv " -------"
 

Bijlagen

  • Weekplanning forum 2018_01.xlsm
    36,1 KB · Weergaven: 52
ik veronderstel dat je wel met onderstaande code verder kan stoeien.
Vermoedelijk tik je de namen in de door jouw gewenste volgorde in in V-taak, de 1e 8 zijn blijkbaar speciale.
Verder kan je nog meldingen maken als er anomalieën optreden
Code:
Sub namen_ophalen()

    Dim Vtaak, Poule, Namen, r As Integer, k As Integer, r2 As Integer, k2 As Integer, Naam As String, n, c As Range, Vrij As Integer, i As Integer

    Vrij = 9                                                         'vanaf 9e rij zijn vrije cellen (daarvoor zijn het blijkbaar vaste taken)

    Set c = Sheets("V-taak").Range("A3:F33")                         'uitlezen huidige V-taak
    Vtaak = c

    For r = Vrij To UBound(Vtaak)
        For k = 2 To UBound(Vtaak, 2)
            Vtaak(r, k) = "------"                                   'alle vrije taken met dit vullen
        Next
    Next
    Namen = Application.Transpose(Application.Index(Vtaak, 0, 1))    '1-dimensionele matrix met de namen uit VTaak

    For i = 1 To 2
        Select Case i
            Case 1: Poule = Sheets("week indeling poule 1").Range("A3:K52")    'uitlezen huidige poule
            Case 2: Poule = Sheets("week indeling poule 2").Range("A3:K52")    'uitlezen huidige poule
        End Select

        For k2 = 1 To 5
            For r2 = 3 To UBound(Poule)
                If Poule(r2, 2 * k2) = "V-Taak" Then                 'zoek in de poule alle V-taken in de even kolommen
                    Naam = Poule(r2, 2 * k2 + 1)                     'naam die hoort bij die V-taak
                    n = Application.Match(Naam, Namen, 0)            'opzoeken van die naam in 1e kolom
                    If IsNumeric(n) And Len(Naam) Then               'naam komt voor
                        If n >= Vrij Then Vtaak(n, k2 + 1) = ""      'indien na die vaste taken komt, dan die streepjes schrappen
                    End If
                End If
            Next
        Next
    Next

    c.Offset(, 11).Value = Vtaak                                     'straks mag die offset weg, maar voorlopig 11 kolommen naast die V-taak zetten, ter controle

End Sub
Verder zal je die bereiken vermoedeliijk ook dynamisch maken
 
Laatst bewerkt:
Ziet er na een korte test goed uit als uitgangspunt.
Ik ga er dit jaar nog even mee stoeien.
En voor iedereen
PRETTIGE FEESTDAGEN
 
Nu wil ik nog via een Togglebutton alle namen zien of alleen die een V-Taak hebben.

Ben er mee aan het stoeien gegaan maar kom er niet uit.
 

Bijlagen

  • Weekplanning forum 2018_01 c.xlsm
    45,3 KB · Weergaven: 30
Probeer het zo eens

Code:
Private Sub ToggleButton1_Click()
  Dim cl As Range
  With ToggleButton1
    .Caption = IIf(.Caption = "Hide", "Show all", "Hide")
  End With
  Rows("4:60").Hidden = False
  If Not ToggleButton1 Then
    For Each cl In Range("B4:B60")
      cl.EntireRow.Hidden = Application.CountIf(cl.Resize(, 5), "------------") = 5
    Next
  End If
End Sub
 
Laatst bewerkt:
met een kleine formule in de G-kolom, die checkt of in alle de 5 voorgaande kolommen er die "---" staat.
Dan kan je op die kolom gaan filteren, ik zie dat je dat al een beetje aan het voorbereiden was, maar dan voor de H-kolom
 

Bijlagen

  • Weekplanning forum 2018_01 c.xlsm
    40,9 KB · Weergaven: 36
Met een extra kolom had ik het inderdaad voor elkaar.

Maar ik wilde het graag zonder extra kolom en met toggle buton omdat ik er zelf niet mee ga werken maar een aantal mensen die weinig tot geen verstand van excel hebben.
Met zo'n extra kolom is de kans groot dat het op een gegeven moment niet meer werkt omdat ze vaak aan kopiëren en plakken gaan.

@VenA
De eerste testen werken OK Ik ga er verder mee aan de slag.

Allen hartelijk dank.
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan