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

Reminder sturen per regel die bepaalde tekst bevat

Status
Niet open voor verdere reacties.

Steefpeef

Gebruiker
Lid geworden
15 dec 2017
Berichten
37
Hallo,

Ik ben bezig met een macro die kijkt per regel naar kolom K die de tekst bevat "Stuur Reminder". Deze tekst wordt bepaald door een formule.
Zodra op de knop "Stuur Reminders" (bij kolom W) wordt gedrukt, gaat de macro per regel zoeken naar de tekst, bij gevonden, moet hij bepaalde informatie van die regel naar het mailadres in kolom L sturen. (bij voorkeur getransponeerd indien mogelijk, zie tabblad 'info voor mail')
Het geval kan zijn dat reminders van verschillende regels naar hetzelfde mailadres moet worden verzonden, dit moeten dan ook aparte mails worden.

Helaas krijg ik de macro niet aan de praat.

Een tweede punt moet zorgen dat de macro, zodra de mail(s) is/zijn verstuurd, de tekst veranderd in "verstuurd" met eventueel de datum van verzending.
Geen idee hoe ik dit kan implementeren in de code.

Denk dat dit geen eenvoudige macro zal zijn, dus alle hulp is welkom!

Bekijk bijlage klachtenregistratie reminder macro helpmij.xlsm
 
Laatst bewerkt:
Na wat spelen heb ik de macro nu aan de praat. Zie voorbeeld.
Het probleem is alleen dat meerdere regels gelinkt aan het mailadres worden mee gekopieerd in de mail.

De bedoeling is dus dat alleen de regel met "stuur reminder" wordt gekopieerd in de betreffende mail.

Iemand een idee welke regel code dit doet voorkomen?

Alvast bedankt.

Bekijk bijlage klachtenregistratie reminder macro helpmij.xlsm
 
Laatst bewerkt:
For Each cell In Ash.Columns("K").Cells.SpecialCells(xlCellTypeConstants)
If cell.Value Like "?*@?*.?*" _
And LCase(cell.Offset(0, -4).Value) = "stuur reminder" Then
'Change the filter range and filter Field if needed
'It will filter on Column B now (mail addresses) (AutoFilter Field stond hierbij op 2)
Ash.Range("A1:M100").AutoFilter Field:=11, Criteria1:=cell.Value
Ash.Range("A1:M100").AutoFilter Field:=7, Criteria1:="stuur reminder"
With Ash.AutoFilter.Range
On Error Resume Next
Set rng = .SpecialCells(xlCellTypeVisible)
On Error GoTo 0
End With

Je zoekt wel naar 'stuur reminder' maar je filtert er niet op. Zie rode regel.
 
ah netjes, deze doet inderdaad wat ik wil. Bedankt!

Rest mij nog een klein vraagje:
De mailadressen die ik gebruik in mijn bestand, zijn gegenereerd door formules, hierdoor pakt de macro deze mailadressen niet over, of herkend hij ze niet.

Aangezien steeds nieuwe regels worden toegevoegd en dus ook mailadressen kan ik niet de hele kolom kopiëren en plakken als waarde.
Een idee wat ik kan doen?
 
Ik weet niet precies wat je bedoelt. Als ik de macro draai krijg ik keurig netjes de mailadressen ingevuld in Outlook. Ook in de tabel in de mail zelf staan ze gewoon goed.

Heb je een screenshot of iets dergelijks van wat niet goed gaat?
 
Geeft de macro dan een foutmelding? Of zie je iets raars in Outlook?

Ik kan wat jij beschrijft niet reproduceren...
 
Nee, geen foutmelding, hij maakt alleen geen mails aan om de reminders te sturen naar de opgegeven mailadressen.

kort gezegd, hij doet niks.

Dit komt (volgens mij) dat de mailadressen worden ingevuld op basis van de vert.zoeken formule. Zodra ik de mailadressen kopieer en plak als waarde, doet de macro het wel.
Helaas is dit geen oplossing, omdat de registratie wordt aangevuld met nieuwe regels, waarbij de formule noodzakelijk blijft om de mailadressen te selecteren.
 
Nee, geen foutmelding, hij maakt alleen geen mails aan om de reminders te sturen naar de opgegeven mailadressen.

kort gezegd, hij doet niks.

Dat is wazig. Bij mij werkt het gewoon, en ik heb alleen die ene regel toegevoegd. Even kijken of ik een screenshot kan toevoegen...

Naamloos.png
 
In dit screenschot wordt het mailadres bepaald door de formule. zodra ik op de macro knop druk, doet hij niks.
geen resultaat.PNG

In het volgend screenshot heb ik het mailadres gekopieerd en geplakt als waarde. Zodra ik op de macro knop druk, krijg ik wel resultaat.
wel resultaat.PNG
 
Aaaaaah nu snap ik het. Je zoekt in een kolom op alle cellen met constanten. En dat is alleen in de titel. De fix is simpel:

For Each cell In Ash.Columns("J").Cells.SpecialCells(xlCellTypeFormulas)
 
Code:
For Each it In Ash.Columns(10).SpecialCells(-4123)
 
Hoppa! dat is hem! Dank u! en het ziet er zo simpel uit..:thumb:

Jij bent zo goed bezig.. ik wil nog een verzoek op jou VBA kennis doen met 2 kleine probleempjes.

1. reminders die vaker voorkomen met hetzelfde mailadres maakt hij dubbele mails van. zie screenshot.
dubbel mailen.PNG
Het is goed dat de macro de betreffende regels onder elkaar zet in de mail, maar niet goed dat deze dan ook 4 keer worden verstuurd.

2. is het mogelijk om vaste kolommen te selecteren die per regel verstuurd worden. bijvoorbeeld kolom A:C en kolom E:G.

Alvast bedankt!
 
Om maar met je tweede vraag te beginnen: met de volgende code stuur je volgens mij kolommen A t/m C. Beetje manipuleren kun je vast ook zelf.

Code:
 Ash.Range("A1:M100").AutoFilter Field:=10, Criteria1:=cell.Value
 Ash.Range("A1:M100").AutoFilter Field:=7, Criteria1:="stuur reminder"
            With Ash.AutoFilter.Range
                On Error Resume Next
                Set rng = Ash.Range("A1:C100").SpecialCells(xlCellTypeVisible)
                On Error GoTo 0
            End With

Die eerste vraag is vervelender. De makkelijkste manier die ik uit mijn mouw zou schudden zou vereisen dat de tabel anders gesorteerd wordt en je daarna als voorwaarde meegeeft dat de initiaal niet gelijk mag zijn aan de vorige die is gevonden. Is dat een issue?

Ik wil dat desgewenst best uitwerken, maar dat wordt op een later moment. ;-)
 
Ik snap de insteek, alleen gaat dit helaas niet werken voor mijn bestand.
Er worden steeds regels bijgevoegd waardoor een volgorde van klachtnummers wel nodig is, ook om klachten makkelijk op te zoeken.

Is er een manier om dat sorteren op de achtergrond uit te voeren of iets dergelijks?

Lastig probleempje.
 
En als ik aan het eind van de macro weer gewoon sorteer op klachtnummer?

Kwestie van de volgende regel toevoegen ná de For-loop...

Code:
Ash.Range("A1:M100").Sort key1:=Range("A1"), order1:=xlAscending, Header:=xlYes
 
Met een beetje VBA (Array & Dictionary) is dat een fluitje van een cent.
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan