Help!

PC-Problemen?
De vrijwilligers van Oplossing.be zoeken gratis met u mee!

Hulp bij posten

Recente topics

Auteur Topic: Functies voor het weglaten van beginnende lidwoorden (in meeste talen)  (gelezen 5814 keer)

0 leden en 1 gast bekijken dit topic.

Offline knopperke

  • Lid
  • *
  • Berichten: 69
  • Oplossing.be
Functies voor het weglaten van beginnende lidwoorden (in meeste talen)
« Gepost op: 17 september 2008, 16:42:25 »
Hoi, kent er iemand iets of veel van VBA en Excel ?
Ik heb een werkblad met gegevens die ik zelf kan bijwerken vanuit een webpagina.
Ik zou een kolom erbij willen zetten waarbij de titel nog eens voorkomt, maar dan wel zonder beginlidwoord.
(Der, die, das, Le, La, Les, L',  Het, De, Een

Wie kan mij zo snel mogelijk helpen? ???
Gelieve uw systeemgegevens in te vullen. Klik HIER voor meer informatie.

Offline RedHead

  • Excel-Expert
  • Ambassadeur
  • *****
  • Berichten: 2.284
  • Geslacht: Man
  • Met Excel lukt 't wel.... (toch???)
Re: Functies voor het weglaten van beginnende lidwoorden (in meeste talen)
« Reactie #1 Gepost op: 17 september 2008, 17:42:57 »
Knopperke, plaats ff een voorbeeldbestandje en daarin precies aantonen wat je wilt bereiken (graag inclusief ALLE te verwijderen lidwoorden). Dan is een VBA-functie zo geschreven.

Groet, Leo
______________________________

Groet, Leo

Offline RedHead

  • Excel-Expert
  • Ambassadeur
  • *****
  • Berichten: 2.284
  • Geslacht: Man
  • Met Excel lukt 't wel.... (toch???)
Re: Functies voor het weglaten van beginnende lidwoorden (in meeste talen)
« Reactie #2 Gepost op: 17 september 2008, 18:03:09 »
ff snel.... Zoiets?
Function Titel(r As Range) As String
Dim iSpatie As Integer

    iSpatie = InStr(1, r.Value, " ")
   
    Select Case UCase(Left(r.Value, iSpatie - 1))
        Case "HET", "DE", "EEN", "DER", "DIE", "DAS", "LE", "LA", "LES", "L'"
            Titel = Mid(r.Value, iSpatie + 1)
        Case Else
            Titel = r.Value
    End Select

End Function

Groet, Leo
______________________________

Groet, Leo

Offline RedHead

  • Excel-Expert
  • Ambassadeur
  • *****
  • Berichten: 2.284
  • Geslacht: Man
  • Met Excel lukt 't wel.... (toch???)
Re: Functies voor het weglaten van beginnende lidwoorden (in meeste talen)
« Reactie #3 Gepost op: 17 september 2008, 21:44:12 »
...Nog één... (Begint de titel met een hoofdletter)
Function Titel(r As Range) As String
Dim vArr As Variant
Dim i as Integer

    vArr = Split(r.Value, " ")
   
    Select Case UCase(vArr(0))
        Case "HET", "DE", "EEN", "DER", "DIE", "DAS", "LE", "LA", "LES", "L'"
            For i = 1 To UBound(vArr)
                Titel = Titel & IIf(i = 1, WorksheetFunction.Proper(vArr(i)), vArr(i)) & " "
            Next i
        Case Else
            Titel = r.Value
    End Select

    Titel = RTrim(Titel)
   
    Erase vArr

End Function

Groet, Leo
______________________________

Groet, Leo

Offline knopperke

  • Lid
  • *
  • Berichten: 69
  • Oplossing.be
Re: Functies voor het weglaten van beginnende lidwoorden (in meeste talen)
« Reactie #4 Gepost op: 20 september 2008, 15:13:33 »
Ik heb hier alvast een voorbeeldbestandje gemaakt, met extra uitleg over wat mijn doel is hiermee. Het is nog gemaakt in Excel 2003, maar het mag ook zonodig in Excel 2007 zijn.

Ik had ook al die functies, via Visual Basic Editor erin geplakt.
Er werden enkele fouten gemeld, ik wou ze veranderen, maar het lukte momenteel niet.
Gelieve uw systeemgegevens in te vullen. Klik HIER voor meer informatie.

Offline RedHead

  • Excel-Expert
  • Ambassadeur
  • *****
  • Berichten: 2.284
  • Geslacht: Man
  • Met Excel lukt 't wel.... (toch???)
Re: Functies voor het weglaten van beginnende lidwoorden (in meeste talen)
« Reactie #5 Gepost op: 20 september 2008, 17:19:01 »
knopperke, Als je de code aanpast, moet je dat wel volgens de geldende regels doen.... ;)
Zo staat VBA het toe om een coderegel halverwege af te breken om zo de leesbaarheid te vergroten. Dit kan je dan niet straffeloos alleen maar met 'enter' doen, maar doe je dmv een 'underscore' (= laag liggend streepje) en een spatie. Ook functies moet je bij elkaar houden. Dus 'Select' en de volgende regel 'Case' geeft een error.
In het workbook heb ik de boel weer voor je aangepast. Het viel me trouwens wel op dat de L' direct aan het volgende woord wordt geschreven. Helaas ben ik heel slecht in frans, dus weet niet of dat standaard zo hoort. Indien ja... heb je daar een probleem!

Laat ff weten of je er zo mee verder kunt.

Groet, Leo
______________________________

Groet, Leo

Offline GiMe

  • Lid
  • *
  • Berichten: 46
  • Alles is relatief....en zelfs dat
Re: Functies voor het weglaten van beginnende lidwoorden (in meeste talen)
« Reactie #6 Gepost op: 20 september 2008, 20:44:53 »
L' direct aan het volgende woord wordt geschreven.

Is ook zo !

Offline RedHead

  • Excel-Expert
  • Ambassadeur
  • *****
  • Berichten: 2.284
  • Geslacht: Man
  • Met Excel lukt 't wel.... (toch???)
Re: Functies voor het weglaten van beginnende lidwoorden (in meeste talen)
« Reactie #7 Gepost op: 20 september 2008, 21:48:38 »
Is ook zo !
Dank!

hierbij opgelost...
Function Titel(r As Range) As String
Dim iSpatie As Integer

    iSpatie = InStr(1, r.Value, " ")
   
    If InStr(1, UCase(r.Value), "L'") Then
        Titel = Mid(r.Value, 3)
    Else
        Select Case UCase(Left(r.Value, iSpatie - 1))
            Case "HET", "DE", "EEN", "DER", _
                    "DIE", "DAS", "LE", "LA", _
                    "LES", "L'", "THE", "LOS"
                Titel = Mid(r.Value, iSpatie + 1)
            Case Else
                Titel = r.Value
        End Select
    End If
   
End Function

Groet, Leo
______________________________

Groet, Leo

Offline knopperke

  • Lid
  • *
  • Berichten: 69
  • Oplossing.be
Re: Functies voor het weglaten van beginnende lidwoorden (in meeste talen)
« Reactie #8 Gepost op: 22 september 2008, 13:31:20 »
Het lukt wel niet met die L', eigenaardig. Mocht iemand er ooit op komen hoe men, via een apart Case-regeltje voor "L'", de L' weg kan toveren, dan zou ik blij zijn.

De lijst die ik via Internet, in mijn Excel importeer, heeft eigenlijk allemaal titels van wetenschappelijke tijdschriften, met of zonder lidwoord. En soms begint de titel met L', direct gevolgd door titel zelf (zonder spatie).
L' is een echt zorgenkind dus.
Gelieve uw systeemgegevens in te vullen. Klik HIER voor meer informatie.

Offline RedHead

  • Excel-Expert
  • Ambassadeur
  • *****
  • Berichten: 2.284
  • Geslacht: Man
  • Met Excel lukt 't wel.... (toch???)
Re: Functies voor het weglaten van beginnende lidwoorden (in meeste talen)
« Reactie #9 Gepost op: 22 september 2008, 16:17:43 »
Mocht iemand er ooit op komen hoe men, via een apart Case-regeltje voor "L'", de L' weg kan toveren, dan zou ik blij zijn.
Ehhhhh.... Wat is er dan mis met mijn laatst geplaatste code???

Groet, Leo
______________________________

Groet, Leo

Offline knopperke

  • Lid
  • *
  • Berichten: 69
  • Oplossing.be
Re: Functies voor het weglaten van beginnende lidwoorden (in meeste talen)
« Reactie #10 Gepost op: 24 september 2008, 19:59:57 »
 ;) Beste, uw programma was goed hoor, maar ik denk dat we te maken hebben met een lastig lidwoord. Misschien kan dat opgelost worden door nog een case bij te zetten Case "L'", en dan een formule bijzetten die gewoon de eerste twee tekens L' verwijdert, zodat de titel in dat geval begint vanaf het derde teken. Wat denkt u ervan. Zou dat moeten gebeuren met Trim en/of Mid  ..... ? Maar dan in VBA-stijl zoals u het al gedaan had. Dan zou het probleem opgelost kunnen zijn, denk ik. Ik dacht daar deze namiddag plots aan.
Gelieve uw systeemgegevens in te vullen. Klik HIER voor meer informatie.

Offline RedHead

  • Excel-Expert
  • Ambassadeur
  • *****
  • Berichten: 2.284
  • Geslacht: Man
  • Met Excel lukt 't wel.... (toch???)
Re: Functies voor het weglaten van beginnende lidwoorden (in meeste talen)
« Reactie #11 Gepost op: 24 september 2008, 22:56:39 »
Knopperke, Ik ben nu echt 't spoor bijster.... In deze post staat de code waarin óók de L' wordt verwijderd. Daar zorgt dit stukje voor!
    If InStr(1, UCase(r.Value), "L'") Then
        Titel = Mid(r.Value, 3)
Heb je die nou al uitgeprobeerd?  ???

Groet, Leo
______________________________

Groet, Leo

Offline knopperke

  • Lid
  • *
  • Berichten: 69
  • Oplossing.be
Re: Functies voor het weglaten van beginnende lidwoorden (in meeste talen)
« Reactie #12 Gepost op: 25 september 2008, 12:06:41 »
Dag Leo,
Bedankt, dat is al gelukt. Maar blijkbaar, in mijn echt bestand (met allemaal titels van wetenschappelijke tijdschriften), krijg ik soms de foutmelding #WAARDE!

Als je in het excel-bestandje kijkt zult je zien dat het soms afhangt van wat er achter de titel staat. In de lijst die ik importeer uit een webpagina op onze catalogus staan er soms korte titels, soms lange. Soms zijn de titels gevolgd door een : of een . of een /.  Ik heb zulke titels op het lijstje gezet, en erbij gezet of ze rechtstreeks van de webpagina geïmporteerd zijn, of ik ze wat bewerkt  heb. Heel vreemd, en de functie ziet er nochtans prima uit. Die titels worden gemaakt door een centrale PC. Dus, zou er best nog een stukje code erbij kunnen, maar wat ...?
Nog eens, alvast bedankt.
Gelieve uw systeemgegevens in te vullen. Klik HIER voor meer informatie.

Offline RedHead

  • Excel-Expert
  • Ambassadeur
  • *****
  • Berichten: 2.284
  • Geslacht: Man
  • Met Excel lukt 't wel.... (toch???)
Re: Functies voor het weglaten van beginnende lidwoorden (in meeste talen)
« Reactie #13 Gepost op: 25 september 2008, 21:19:55 »
Knopperke, Dankzij je bijlage zag ik wat 't probleem was. Ik heb nooit getest met een titel met een enkel woord. Hierdoor heb je dus ook geen spatie en klapt de functie. Met een kleine toevoeging is ook dit probleempje verdwenen.
Function Titel(r As Range) As String
Dim iSpatie As Integer

    iSpatie = InStr(1, r.Value, " ")
   
    If InStr(1, UCase(r.Value), "L'") Then
        Titel = Mid(r.Value, 3)
    ElseIf iSpatie = 0 Then
        Titel = r.Value
    Else
        Select Case UCase(Left(r.Value, iSpatie - 1))
            Case "HET", "DE", "EEN", "DER", _
                    "DIE", "DAS", "LE", "LA", _
                    "LES", "L'", "THE", "LOS"
                Titel = Mid(r.Value, iSpatie + 1)
            Case Else
                Titel = r.Value
        End Select
    End If

End Function

Groet, Leo
______________________________

Groet, Leo

Offline knopperke

  • Lid
  • *
  • Berichten: 69
  • Oplossing.be
Re: Functies voor het weglaten van beginnende lidwoorden (in meeste talen)
« Reactie #14 Gepost op: 26 september 2008, 14:48:25 »
Da's fantastisch. Nu ben ik geholpen.
Alvast heel hartelijk bedankt. :) ;)
Gelieve uw systeemgegevens in te vullen. Klik HIER voor meer informatie.

 


www.combell.com