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

Wijzigingen aanbrengen in Excel database

Status
Niet open voor verdere reacties.

joscho56

Gebruiker
Lid geworden
17 dec 2010
Berichten
25
Hallo,

ik heb een database waar alle gegevens van cursisten staan vermeld (ieder gegeven in z'n eigen kolom). Via een ander tabblad (Wijz) kan ik de cursisten selecteren en hun geregistreerde gegevens tonen (kolom 'gereistreerde gegevens'). In een tweede kolom wil ik graag de te wijzigen gegevens opnemen en die dan vervolgens via een macro (die achter de knop 'opslaan wijziging') in de database bij de juiste persoon aan laten passen. Ik heb van alles al geprobeerd, maar kom er niet uit. Heeft iemend de oplossing voor mij? Een testverrsie van de excel is bijgevoegd.

al vast bedankt,
Johan
 

Bijlagen

Misschien dat je met deze macro je doel bereikt:

Code:
Sub wijzigen()
kol = 2
  For Each cl In Sheets("Wijz").Range("J9:J65")
       If cl.Offset(0, -4) <> cl And cl <> "" Then kol = kol + 1: Sheets("Database").Cells    (cl.Row - 8, kol) = cl
  Next
End Sub
 
Hallo Cobbe,

ik krijg een foutmelding bij deze oplossing: "Compileerfout Kan het project of bibliotheek niet vinden". Daarna het scherm Verwijzingen - VBAProject met diverse (voor mijn niet veel zeggende) verwijzingen.

Als ik de macro in de productiesheet opneem dan "Compileerfout Kan het project of bibliotheek niet vinden". Daarna in de editor is het deel "Kol =" dan blauw gearceerd.

Wat heb ik gedaan: onder de knop "Opslaan wijziging" heb ik de nieuwe macro 'Wijzigen" toegevoegd; waarbij ik de complete code uit jouw bericht heb gekopieerd en geplakt.

Hopleijk kun je wat licht in de duisternis geven. Al vast bedankt, Johan
 
Ik heb die meldingen ook bij het verwerken in uw bestand, heb de ontbrekende verwijzingen uitgevinkt en nu zou het moeten werken.
 

Bijlagen

ReRe: Wijzigingen aanbrengen in Excel database

Bedankt Cobbe tot zover.

Het werkt echter nog niet helemaal goed. Als je bijv. de voornaam, voorletters en de roepnaam bij dezelfde persoon wijzigt, komen de wijzigingen wel in de juiste kolom van de database terecht, maar maar niet alle gegevens bij de juiste persoon. Zo wordt:

- de voornaam (eerst voorkomend gegeven dat gewijzigd is) wel bij de juiste persoon vermeld in de database (prima dus)
- maar de voorletters bij een persoon die 2 regels lager staat in de database
- en de roepnaam bij een persoon die nog eens 2 regels lager staat in de database.

De verschillende gegevens in het wijzigingsscherm slaan steeds 1 regel over en het scherm is vertikaal opgezet qua gegevens. De database is qua gegevens horizontaal ingericht. Ik denk dat het daar een relatie mee heeft. Weet je de oplossing hiervoor?

Al vast enorm bedankt voor je hulp.

Groet,
Johan
 
je moet eerst uit zoeken in welke rij je de wijzigingen aan moet brengen

dan krijg je zo iets:
Code:
Sub wijzigen()
    rij = Range("Database!R:R").Find([N4], LookIn:=xlValues).Row
    For Each cl In Sheets("Wijz").Range("J9:J65")
        If cl.Offset(0, -4) <> cl And cl <> "" Then Sheets("Database").Cells(rij, cl.Row - 8) = cl
    Next
End Sub

groet sylvester
 
Sylvester,

bedankt tot zover. Gaat echter niet helemaal zoals bedoeld. Dit ligt absoluut aan mij. Ik zie dat gegevens wel worden gewijzigd, maar steeds in een hele verkeerde kolom in de database komen. Bijvoorbeeld wijziging:
- straatnaam komt in de kolom "tnv" (bij bankrekening)
- Voorletters bij Roepnaam
enz

Probeer uit te vinden wat de oorzaak is, maar kom er niet echt uit. Als iemand nog een helder idee heeft, dan hoor ik het graag

Al vast bedankt,
Johan
 
hallo joscho56

stuur maar eens op wat je gemaakt hebt

en graag opslaanals exel2003

groet sylvester
 
Hallo Sylvester,

Bijlage is bijgevoegd. Er zit een tabblad Database in en een tabblad Wijz. Mijn bedoeling is om het mogelijk te maken om wijzigingen aan te brengen in de Database. De linker kolom van het tabblad Wijz is de huidige registratie en de rechter kolom is bedoeld om de wijzigingen op te geven. Via een button Wijzigingen opslaan zouden dan de gemuteerde cellen in de database moeten worden opgeslagen bij de juiste persoon. Het debiteurennummer zou het sleutel gegeven moeten / kunnen zijn.

Al vast bedankt
Johan
 

Bijlagen

In bijgevoegd bestand zit een macro die gestart wordt via de knop Opslaan wijziging.
Een paar opmerkingen:

- Alleen ingevulde waardes worden aangepast. De lege waardes worden dus niet gewijzigd.
- Na de wijzigingen wordt de J-kolom leeggemaakt.
- De gegevensvalidatie is aangepast zodat er geen lege cellen in de lijst staan. Nieuwe namen worden wel automatisch meegenomen in de lijst.

Met vriendelijke groet,


Roncancio
 

Bijlagen

Beste Roncancio,

je hebt me echt enorm geholpen en daarvoor zeer bedankt. Ik heb al wat aanpassingen aangebracht omdat er nog wat aanvullende kolommen waren. Dat is allemaal prima gelukt. Ik heb nog wel een aanvullende vraag (als het mag). Bij het opslaan van de wijzigingen is het nu zo dat de gegevens mooi aansluitend in de kolommen staan van de database. In de praktijk is dat ook zo voor 90%. Maar voor de laatste 10% staan de gegevens vele kolommen verder (dus niet mooi aansluitend). Is het ook mogelijk om dan voor bepaalde cellen uit de sheet "Wijz" te zeggen dat het betreffende gegevens dan (bijv.) 20 kolommen verder komt te staan in de sheet database? Of is het handiger om die kolommen maar aansluitend met de andere kolommen te plaatsen?

Groet en nogmaals heel erg bedankt,

Johan
 
hallo

het wordt al een stuk eenvoudiger als je de namen van de kolommen in het een blad het zelfde maakt als de namen van de rijen in het andere blad.

dan maken de plaatsen niet meer uit je laat het programma gewoon naar de naam zoeken enz
dus Voorletter(s) blijft Voorletter(s) en niet Voorl

dan kan Roncancio of Cobbe of ik er best iets moois van maken.

groet sylvester
 
Laatst bewerkt:
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan