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

Hulp nodig om VBA code aan te passen

Status
Niet open voor verdere reacties.

DavidSz

Gebruiker
Lid geworden
26 dec 2019
Berichten
30
Hallo,

In een eerder topic op dit forum vroeg ik hulp om een oplossing te vinden om tekst te genereren.
Topic: https://www.helpmij.nl/forum/showthread.php/957197-Automatisch-text-genereren-op-basis-van-cellen

In dat topic vond ik ook een oplossing, ik ontving volgende codes:

PHP:
Function VenA(r1, r2)
  ar = r1
  For j = 1 To UBound(ar)
    If Left(ar(j, 1), 4) = "Cert" Then c00 = c00 & ", " & Replace(Split(ar(j, 1), "- P")(0), "Certificatiekosten", "")
  Next j
  VenA = Trim(Mid(c00, 3)) & " audit uitgevoerd door " & r2(1, 1) & " op " & IIf(IsDate(r2(2, 1)), Format(r2(2, 1), "d-m-yyyy"), r2(2, 1)) & " volgens offerte " & r2(3, 1)
End Function
PHP:
Function VenAFR(r1, r2)
  ar = r1
  For j = 1 To UBound(ar)
    If Left(ar(j, 1), 5) = "Frais" Then c00 = c00 & ", " & Replace(Split(ar(j, 1), "- P")(0), "Frais de certification", "")
  Next j
  VenAFR = Trim(Mid(c00, 3)) & " audit effectués par " & r2(1, 1) & " le " & IIf(IsDate(r2(2, 1)), Format(r2(2, 1), "d-m-yyyy"), r2(2, 1)) & " suivant l'offre signée " & r2(3, 1)
End Function
PHP:
Function VenAEN(r1, r2)
  ar = r1
  For j = 1 To UBound(ar)
    If Left(ar(j, 1), 4) = "Cert" Then c00 = c00 & ", " & Replace(Split(ar(j, 1), "- P")(0), "Certification fee", "")
  Next j
  VenAEN = Trim(Mid(c00, 3)) & " audit performed by " & r2(1, 1) & " on " & IIf(IsDate(r2(2, 1)), Format(r2(2, 1), "d-m-yyyy"), r2(2, 1)) & " according to quotation  " & r2(3, 1)
End Function

Bovenstaande code genereert het volgende:
PHP:
VenA:
Norm 1 audit uitgevoerd door Frank boos op 20-1-2021 volgens offerte 5854585
PHP:
VenAFR:
Norm 1 audit effectués par Frank boos le 20-1-2021 suivant l'offre signée 5854585
PHP:
VenAEN:
Norm 1 audit performed by Frank boos on 20-1-2021 according to quotation  5854585

Maar nu zou ik deze code lichtjes willen wijzigen, ik kan dit spijtig genoeg niet zelf.
  • Klanten naam toevoegen (bij de 3 talen, klantennaam uit cel A2 halen)
  • Bij de Franse versie de volgorde van de tekst veranderen
  • Als er meerdere normen zijn dan zet hij een comma + twee spaties dit moet 1 spatie worden

Hieronder visuele uitleg:

VenA:
Norm 1 audit uitgevoerd door Frank boos bij klant op 20-1-2021 volgens offerte 5854585

VenAFR:
Audit Norm 1 effectués par Frank boos chez klant le 20-1-2021 suivant l'offre signée 5854585

VenAEN:
Norm 1 audit performed by Frank boos at klant on 20-1-2021 according to quotation 5854585


Hieronder visuele uitleg met meerdere normen:

VenA:
Norm 1 , Norm 1 audit uitgevoerd door Frank boos bij klant op 20-1-2021 volgens offerte 5854585

VenAFR:
Audit Norm 1 , Norm 1 effectués par Frank boos chez klant le 20-1-2021 suivant l'offre signée 5854585

VenAEN:
Norm 1 , Norm 1 audit performed by Frank boos at klant on 20-1-2021 according to quotation 5854585

Kan iemand mij hier mee helpen? Note ik hoef geen nieuwe code, deze code werkt zeer fijn!

Alvast bedankt, in bijlage een voorbeeld bestand.

Mvg,
David
 

Bijlagen

Laatst bewerkt:
Moraal van het verhaal. gebruik nooit code waar je geen letter van begrijpt.

Dit vindt ik geen oprechte commentaar, jouw moraal is dus, als je het niet begrijpt heb je pech moet je maar handmatig werk blijven leveren?
Koop geen auto als je zelf niet weet wat het probleem is als er een geluid signaal afgaat?...

De code is om mij het leven gemakkelijker te maken.
 
Hulp nodig is uiteraard altijd mogelijk, maar je kunt de code toch wel zelf bestuderen, en zien wat er gebeurt?
Maar nu zou ik deze code lichtjes willen wijzigen, ik kan dit spijtig genoeg niet zelf.
  • Bij de Engelse versie is er na "quotation" twee spaties, dit moet 1 spatie worden
Als je naar de code kijkt, zie je overduidelijk dat er inderdaad twee spaties worden geplaatst in & " according to quotation " & r2(3, 1). Hoe moeilijk is het om daar zelf dit: & " according to quotation " & r2(3, 1) van te maken?
 
Hulp nodig is uiteraard altijd mogelijk, maar je kunt de code toch wel zelf bestuderen, en zien wat er gebeurt?

Daar heb je wel een punt, mijn excuses ik pas het zelf aan, maar voor de rest heb ik wel echt hulp nodig..
 
Ik wil er wel naar kijken, als jij belooft de komende 5 jaar niet meer (nodeloos) op de QUOTE knop te hengsten :). Er zijn echt veel betere opties om een antwoord te schrijven.
 
Ik was zeer geneigd nog eens te drukken, (ik snap eerlijk gezegd niet waarom dat zo irritant is? In mijn ogen maakt die knop het gesprek veel overzichtelijker) maar ik beloof het dat ik hem niet meer nodeloos zal gebruiken (of proberen toch :d)
 
Nee, dat maakt het gesprek niet overzichtelijker. Maakt de lijst alleen maar nodeloos langer. Het gebruikte lettertype in een quote is slecht leesbaar, zeker op kleinere schermen en vaak totaal overbodig, omdat je reageert op een bericht dat er pal boven staat. Iedereen met een IQ boven de 7 kan zien waar het oorspronkelijke bericht staat, en ook nog eens veel beter leesbaar. Het is niet voor niets dat de doorgewinterde forumgebruikers er een schurfthekel aan hebben :).
 
Ik zal het onthouden :), moest je tijd en zin hebben om de code na te kijken / aan te passen? zou fijn zijn.
 
Altijd leuk om mijn naam terug te zien in de naam van een UDF. Maar ik kan mij niet voorstellen dat ik geadviseerd heb om er drie van te maken. Zonder het bestand verder bekeken te hebben moet je #2 nogmaals lezen, en het bestandje wat iets later toegevoegd is, even bekijken.
 
Spijtig genoeg is #2 niet wat ik bedoelde. Ik wil niet dat er standaard "bij klant" staat ik wil dat er "bij" en dan naam uit cel A2 komt te staan. Als je A8 bekijkt zal je zien dat hij de naam, data, offerte uit de cellen pakt. Ik wil dat hij het zelfde doet voor de cel A2.

Ik merk echter dat ik dit niet had gespecificeerd.. ik heb dit nu toegevoegd..
 
Laatst bewerkt:
Ik zou jullie kunnen bedanken, maar ik heb het opgelost.. Enkel de franse tekst veranderen lukte (nog) niet.

Moest iemand ooit in de toekomst dit topic lezen hieronder hoe ik het heb opgelost:

PHP:
Function VenA(r1, r2)
  ar = r1
  For j = 1 To UBound(ar)
    If Left(ar(j, 1), 4) = "Cert" Then c00 = c00 & ", " & Replace(Split(ar(j, 1), "- P")(0), "Certificatiekosten", "")
  Next j
  VenA = Trim(Mid(c00, 3)) & " audit uitgevoerd door " & r2(1, 1) & " bij " & r2(4, 1) & " op " & IIf(IsDate(r2(2, 1)), Format(r2(2, 1), "d-m-yyyy"), r2(2, 1)) & " volgens offerte " & r2(3, 1)
End Function
PHP:
Function VenAFR(r1, r2)
  ar = r1
  For j = 1 To UBound(ar)
    If Left(ar(j, 1), 5) = "Frais" Then c00 = c00 & ", " & Replace(Split(ar(j, 1), "- P")(0), "Frais de certification", "")
  Next j
  VenAFR = Trim(Mid(c00, 3)) & " audit effectués par " & r2(1, 1) & " chez " & r2(4, 1) & " le " & IIf(IsDate(r2(2, 1)), Format(r2(2, 1), "d-m-yyyy"), r2(2, 1)) & " suivant l'offre signée " & r2(3, 1)
End Function
PHP:
Function VenAEN(r1, r2)
  ar = r1
  For j = 1 To UBound(ar)
    If Left(ar(j, 1), 4) = "Cert" Then c00 = c00 & ", " & Replace(Split(ar(j, 1), "- P")(0), "Certification fee", "")
  Next j
  VenAEN = Trim(Mid(c00, 3)) & " audit performed by " & r2(1, 1) & " at " & r2(4, 1) & " on " & IIf(IsDate(r2(2, 1)), Format(r2(2, 1), "d-m-yyyy"), r2(2, 1)) & " according to quotation " & r2(3, 1)
End Function

Na trial en error heb ik ontdekt dat hij gewoon van boven naar beneden leest, ik heb dus een copy gemaakt in een andere cell en alles onder elkaar gezet zo kan hij het wel juist lezen.
Zie file in bijlage
 

Bijlagen

Laatst bewerkt:
Zou je niet beter die functie's van VenA niet gebruiken als je ze toch niet verstaat en oneigenlijk gebruikt?
Hier een voorbeeld met in R4 en in R18 een formule die hetzelfde doet en in R1 een voorbeeld hoe je de tekst (rood gedeelte) kan aanpassen naar om het even welke taal.

trouwens begrijp ik, en waarschijnlijk u ook niet, wat de formules in S8 en S12 moeten zoeken.
 

Bijlagen

Je code is inderdaad simpeler, maar doet niet alles wat VenA zijn code doet, bv de "Norm 1" is een voorbeeld tekst, deze veranderd altijd en kan ook verlengd worden met meerdere normen.

index.png
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan