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

adressenlijst 2.0 laten scrollen naar eerstvolgend evenement

Status
Niet open voor verdere reacties.

KabouterkePlop

Gebruiker
Lid geworden
25 feb 2021
Berichten
10
hallo
mijn adressenlijst bestaat in hoofdzaak uit twee delen:
kolommen a t.e.m. f bieden een weergave van de gegevens van een persoon/bedrijf
kolommen n t.e.m. by zijn de gewone kolommen waar gegevens ingevuld worden
(naam, adressen, geb.-, overl.- trouwdatum, datum scheiding, tel. nrs.,...

vraag:
de kolommen r, t, w, y en ab bevatten de datums voor geboorte, overlijden, trouw, scheiding.
de eerstvolgende kolom bevat telkens een getal dat de datum weergeeft: bv. 19/4 wordt dan 0419 en daarna een cijfer
dat weergeeft dat het om geboorte, trouw, overlijden,... gaat
het sorteren lukt door het kopieren van het "getal" van geb., overl.,... naar de kolom bh "selectie"

ik zou bij het openen van de adressenlijst automatisch naar de eerstvolgende datum willen springen. hoe doe ik dat?
hopelijk lukt dit! alvast dank voor de hulp :) !
bedankt, peter
 
een beetje moeilijk verhaal, de eerstvolgende datum binnen de huidige rij of van alle rijen ?
Een (anoniem) voorbeeld doet meer dan 1.000 woorden.
 
kijk:
in de loop van de maand:
geboorte jan op 2/3 wordt 03021
overlijden piet op 5/3 wordt 03052
trouwdatum els en karel op 11/3 wordt 03113

die laatste datumgetallen staan in één kolom en het sorteren lukt... je krijgt dan de lopende maand
met in chron. volgorde verjaardagen, overlijdens, trouwdatums en dat. scheiding, ...
de items die niet in de gevraagde lijst staan worden verborgen.
de vraag gaat naar het automatisch springen naar de eerstvolgende datum met een geb., overl., trouw of scheiding...

thx :) !
peter
 
Beter geen screenshots maar een voorbeeldbestand. Je kunt toch een paar rijen als voorbeeld maken met fictieve gegevens.
 
voorbeeld bestand met gewijzigde achternamen

in bijlage een voorbeeld.
eerste kolommen zijn enkel een weergave van de gegevens, ingevuld in de kolommen buiten zicht (kolommen g tot einde)

je kan als het bestand geopend is de macro's gebruiken: F5 en dan optie 9 toont de lopende maand (vanaf het begin)
control p is een zoekopdracht...

bedankt om er eens naar te kijken :) !

peter
 

Bijlagen

  • testbestand chronologie.xlsm
    399,5 KB · Weergaven: 48
Laatst bewerkt:
het is een beetje spaghetti, dus ook een beetje gokwerk van deze kant.
Ik dacht dat je aflopend wenste te sorteren in BH en daarna kijken naar 3e en 4e cijfer van de cellen in die kolom.
Als die gelijk zijn aan het volgnummer van de huidige maand, dan ga je naar de 1e daarvan.
Vermoedelijk ben ik bij dit laatste de mist ingegaan, want eigenlijk weet ik niet precies naar welke dat je juist wilde springen, maar dat is hooguit even die formule van rij wijzigen
Code:
Sub Sorteren_BH()
   With ActiveWorkbook.Worksheets("gegevens").AutoFilter.Range   'bereik waarop je filter staat
      .Sort .Range("BH1"), xlDescending, Header:=True   'aflopend sorteren op kolom BH met koprij
      .Columns("BH").Name = "Kol_BH"             'maak een gedefinieerde naam van kolom BH
     [COLOR="#FF0000"] rij = Application.Min([transpose(if(mid(kol_BH,3,2)=text(now(),"mm"),row(kol_BH),999))])   'de 1e rij van de huidige maand (=3e en 4e cijfer) in kolom BH[/COLOR]
      If rij < 999 Then
         Application.Goto .Range("A1").Offset(rij - Range("kol_BH").Row)  'ga naar de A-cel van die rij
      Else
         MsgBox "foutje bedankt", vbCritical
      End If
   End With
End Sub
 
scrollen naar vandaag

hallo,

hartelijk dank voor de hulp zover al :)

informatief vraagje:
als je wil dat de eerst zichtbare rij de laatste rij is en de enige (toevallig) zet hij dan nog die ene rij bovenaan,
of toont hij de gefilterde lijst met als laatste zichtbare rij de rij van "vandaag" ?
(dat nl. nu het geval: wegens al 26/2/21 en maar één overblijvend evenement in februari...

opmerking: hij springt niet naar de eerstkomende rij met een evenement van of na vandaag...
ik zag dat je keek naar het derde en vierde cijfer in de kolom bh dat is correct... het soort evenement (laatste cijfer)
heeft geen belang...

in het opvragen van de evenementen van de maand naar keuze zit al een sorteeropdracht,
ik denk dat de derde lijn (sort .range (...) verwijderd mag worden?

we zijn er al bijna en zo snel waarvoor véél dank !!!
peter
 
aangezien ze al gesorteerd staan
Code:
Sub Zoek_Volgende_Datum_in_BH()
   With ActiveWorkbook.Worksheets("gegevens").AutoFilter.Range.Columns("BH")

      vandaag = Format(Date, "mmdd")             'startpunt is maand & dag
      For i = 2 To .Rows.Count                   'alle rijen aflopen
         With .Cells(i, 1)                       'die cel in de kolom BH
            If Mid(.Value, 3, 2) & Left(.Value, 2) >= vandaag Then rij = i   'onthou de laatste rij waarvan maand & dag (eerst omdraaien) >= vandaag
         End With
      Next

      If rij > 0 Then
         Application.Goto .Cells(rij, 1).Offset(, 1 - .Column), 1   'zo'n rij gevonden, zet de A-cel van de rij in de linkerbovenhoek
      Else
         MsgBox "foutje bedankt", vbCritical
      End If
   
   End With
   
End Sub
 
opgelost :) dankuwel :) !!!

hartelijk dank !!!
ik kan natuurlijk alleen maar vandaag checken maar dat doet hij perfect !!!
ik probeer het de volgende dagen nog wel :)

van harte merci !!!
peter
 
aangezien ze al gesorteerd staan
Code:
Sub Zoek_Volgende_Datum_in_BH()
   With ActiveWorkbook.Worksheets("gegevens").AutoFilter.Range.Columns("BH")

      vandaag = Format(Date, "mmdd")             'startpunt is maand & dag
      For i = 2 To .Rows.Count                   'alle rijen aflopen
         With .Cells(i, 1)                       'die cel in de kolom BH
            If Mid(.Value, 3, 2) & Left(.Value, 2) >= vandaag Then rij = i   'onthou de laatste rij waarvan maand & dag (eerst omdraaien) >= vandaag
         End With
      Next

      If rij > 0 Then
         Application.Goto .Cells(rij, 1).Offset(, 1 - .Column), 1   'zo'n rij gevonden, zet de A-cel van de rij in de linkerbovenhoek
      Else
         MsgBox "foutje bedankt", vbCritical
      End If
   
   End With
   
End Sub


hallo :)

ik heb vandaag twee fake gegevens toegevoegd, naast peke heb ik nu beke en meke met 27/2 als geboorte/trouw of overlijdensdatum.

echter toont hij alleen de laatste, niet de vorige of volgende...
is het mogelijk alle voorbije items (rijen) te verbergen, en items van "vandaag" en komende dagen bovenaan te plaatsen ?
bedankt voor de hulp :)

peter
 
je kolom BH staat aflopend gesorteerd en de macro zet je in de linkerbovenhoek van de laatste datum, die groter of gelijk is aan vandaag.
Er wordt door die macro niet gefilterd, dus dit begrijp ik niet.
echter toont hij alleen de laatste, niet de vorige of volgende...
. Als je omhoog of omlaag gaat, dan zou alles nog zichtbaar moeten zijn, wat voor de macro liep ook al zichtbaar was.
is het mogelijk alle voorbije items (rijen) te verbergen, en items van "vandaag" en komende dagen bovenaan te plaatsen ?
bedankt voor de hulp
Aangezien er niet gefilterd is, dan wilde je, in de meeste gevallen, die eerste regel ook niet zien. Nu is er 1 probleempje, je hebt met peke en meke en beke voor vandaag 3 regels die voldoen, **** happens, even nadenken.
 
hallo,

het gebeurt vaak dat er meerdere items zichtbaar zullen moeten zijn he: iemand geboren op 1/3; getrouwd op 2/3; overleden op 5/3 ,...
we zijn nu op het einde van de maand dus is het logisch dat er maar één of geen items zijn... begin van de maand zijn er dat natuurlijk veel meer... maar dat kan ik pas overmorgen zien...
 
Is dit een mogelijk bevredigende oplossing ?
Gaat dus linksboven in die regel staan waarvan de kleinste datum, die toch nog groter of gelijk is aan de huidige datum (zonder jaartal), staan.
Verder wordt er niet gefilterd.
OK ?
Code:
Sub Zoek_Volgende_Datum_in_BH()
   With ActiveWorkbook.Worksheets("gegevens").AutoFilter.Range.Columns("BH")

      vandaag = Format(Date, "mmdd")             'startpunt is maand & dag
      laatste = "1232"                           ' grootst mogelijke datum binnen een jaar, 32 december
      For i = 2 To .Rows.Count                   'alle rijen aflopen
         With .Cells(i, 1)                       'die cel in de kolom BH
            s = Mid(.Value, 3, 2) & Left(.Value, 2)   'maand & dag (omdraaien)
            If s >= vandaag And laatste <> s Then   'datum groter of gelijk aan vandaag en verschillend van vorige laatste datum
               rij = i                           'onthou de laatste rij waarvan ) >= vandaag
               laatste = s                       'laatste datum
            End If
         End With
      Next

      If rij > 0 Then
         Application.Goto .Cells(rij, 1).Offset(, 1 - .Column), 1   'zo'n rij gevonden, zet de A-cel van de rij in de linkerbovenhoek
      Else
         MsgBox "foutje bedankt", vbCritical
      End If

   End With

End Sub
 
Ik lees nu je #13, eigenlijk zou je kolom BH van het formaat "mmdd" moeten zijn vooraleer je gaat sorteren, nu is het "ddmm".

Oei, ik vergis me. Eerst middag eten.
 
Laatst bewerkt:
hallo,

ik ben maar een beginnend programmeurke (lol)...
het lijkt mij dat in de lijn
rij = i 'onthou de laatste rij waarvan ) >= vandaag

alleen de laatste rij die aan de voorwaarde voldoet onthouden wordt?
aangezien de rijen al gesorteerde zijn op chronologische volgorde is het voldoende de eerste rij
die voldoet te onthouden en dan die en alle volgende te tonen...?

succes :) !!!
thx !
peter
 
Laatst bewerkt:
Ik denk dat deze zou moeten voldoen.
Code:
Sub Zoek_Volgende_Datum_in_BH()
   With ActiveWorkbook.Worksheets("gegevens").AutoFilter.Range.Columns("BH")

      vandaag = Format(Date, "mmdd")             'startpunt is maand & dag
      laatste = "1232"                           ' grootst mogelijke datum binnen een jaar, 32 december
      For i = 2 To .Rows.Count                   'alle rijen aflopen
         With .Cells(i, 1)                       'die cel in de kolom BH
            s = Left(.Value, 4)                  'maand & dag (niet omdraaien)
            If s >= vandaag And laatste <> s Then   'datum groter of gelijk aan vandaag en verschillend van vorige laatste datum
               rij = i                           'onthou de laatste rij waarvan ) >= vandaag
               laatste = s                       'laatste datum
            End If
         End With
      Next

      If rij > 0 Then
         Application.Goto .Cells(rij, 1).Offset(, 1 - .Column), 1   'zo'n rij gevonden, zet de A-cel van de rij in de linkerbovenhoek
      Else
         MsgBox "foutje bedankt", vbCritical
      End If

   End With

End Sub
 
zoals ik het begrijp doet hij het werk wel juist, maar: hij plaatst de laatst gevonden rij (die voldoet) bovenaan...
ik denk dat je de zoektocht maar één keer moet doen: naar de eerste die hij vindt en die dan bovenaan plaatsen?
aangezien de rijen chron. gesorteerd zijn staan de datums van de nabije toekomst zowiezo onder de eerst gevonden rij denk ik...
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan