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

Koppelen import aan stamgegevens

Status
Niet open voor verdere reacties.

gelens

Terugkerende gebruiker
Lid geworden
4 dec 2009
Berichten
1.116
Forumleden,

Ik heb een bestand met stamgegevens, zie bijlage.
Dit bestaat uit 3 kolommen : Code , Omschrijving , Subcode

Aan een subcode zijn meerdere code's gekoppeld. De subcode gebruik ik om een rapport samen te stellen.
De gegevens voor dit rapport krijg ik via een exportbestand. Dit bevat o.a. de Code en de omschrijving.

Het komt regelmatig voor dat er een nieuwe Code toegevoegd is. Deze is dus nog onbekend in mijn stamgegevens.

Ik ben nu op zoek naar een mogelijkheid om, na het importeren, een controle uit te voeren op evt. nieuwe Code's.
Daarbij denk ik aan een bericht : Er zijn XXX nieuwe code's aangetroffen.
Waarna er de mogelijkheid is om per nieuwe code een subcode ( pulldown lijst ivm validatie ) toe te voegen en weg te schrijven naar de stamgegevens.
Voor de eindgebruiker moet het zo eenvoudig mogelijk gemaakt worden, dit om de kans op fouten te verkleinen.
Wie heeft een idee ?

PS Heb deze vraag ook op het VBA forum geplaatst, is daar ( denk ik ) meer op zijn plaats.
 

Bijlagen

Laatst bewerkt:
Beste Jack,

Blijkbaar ben ik niet helemaal duidelijk geweest. :o
Het is de bedoeling om te kijken of er in het import bestand ( tabblad import in mijn bestand ) code's voorkomen die niet in mijn stamgegevens voorkomen.In mijn importvoorbeeld komen de code's G01001 en K01050 voor. Deze staan echter niet in de stamgegevens.
Het is de bedoeling om daarop te controleren en deze code toe te voegen aan de stamgegevens. Het liefst via een tussenstap waarbij men verplicht wordt om een subcode toe te wijzen.

groet

gerard
 
Beste gelens,

Hier heb ik alvast een gedeelte opgemaakt.
Want nu ik je laatste bericht voor de 2e keer las, ben ik het stukje van de subcode vergeten te maken. Maar allee, dat komt morgen wel (of het Warme Bakkertje springt nog wel bij).

Met vr gr
Jack
 

Bijlagen

Jack,

Het is bijna wat ik bedacht had maar zelf niet kon maken. In de Inputbox heb ik in de tekst de code toegevoegd. Is het mogelijk om daar ook de omschrijving van de code te krijgen ? Maakt de keuze van de Subcode iets eenvoudiger.

Code:
SC = InputBox((" Vul hier de Subcode voor  [B]" & cl & "[/B] in!"), ("Invoeren Subcode"))

Het zou helemaal mooi zijn als bij het toevoegen van de Subcode een Validatie ( het lijstje in kolom L ) plaats vindt. Ik weet niet of dit mogelijk is.

Maar tot nu toe ben ik super tevreden.
 
Hallo Gerard,

Kijk eens of het zo goed is.
Code:
Sub test()
Dim SC As String
  For Each cl In Sheets("Import").[A1:A50]
    Set c = Sheets("Stamgegevens").Columns(1).Find(cl, , xlValues, xlWhole)
     If c Is Nothing Then
        MsgBox ("Er is een nieuwe code gevonden! " & vbLf & "U dient een subcode toe te voegen!"), , ("Nieuwe Code   ***" & cl & "***")
        SC = InputBox((" Vul hier de Subcode voor " [COLOR="Red"]& cl.Offset(, 1) & [/COLOR]" in!"), ("Invoeren Subcode"))
        If SC = "" Then Exit Sub
        Sheets("Stamgegevens").Cells(Rows.Count, "A").End(xlUp).Offset(1).Resize(, 3) = Split(cl.Value & "|" & cl.Offset(, 1).Value & "|" & SC, "|")
     End If
  Next
    [COLOR="red"]Sheets("Stamgegevens").Columns(3).AdvancedFilter xlFilterCopy, , [l1], True[/COLOR]
End Sub
Met vr gr
Jack
 
:thumb:Jack,

Het is bijna wat ik bedoel. Met de validatie bedoel ik eigenlijk dat er gecontroleerd wordt of de subcode welke wordt toegevoegd aan de code in de lijst van kolom L staat.
Nu kan een willekeurige subcode toegevoegd worden en dan wordt deze ook aan de lijst in kolom L toegevoegd. Dit is nu net niet de bedoeling.

Kolom L is de keuzelijst waaruit gekozen mag worden. De subcode is de basis voor mijn rapportage en als er een wordt toegevoegd moet ik mijn rapportage aanpassen.

Alvast bedankt voor de antwoorden tot op heden.:thumb::thumb:
 
Hallo Gerard,

Wat vind je hiervan?
Code:
Sub test()
Dim SC As String
  For Each cl In Sheets("Import").[A1:A50]
    Set c = Sheets("Stamgegevens").Columns(1).Find(cl, , xlValues, xlWhole)
     If c Is Nothing Then
        MsgBox ("Er is een nieuwe code gevonden! " & vbLf & "U dient een subcode toe te voegen!"), , ("Nieuwe Code   ***" & cl & "***")
        SC = InputBox((" Vul hier de Subcode voor " & cl.Offset(, 1) & " in!"), ("Invoeren Subcode"))
          If SC = "" Then Exit Sub
            Set i = Sheets("Stamgegevens").Columns(12).Find(SC, , xlValues, xlWhole)
              If i Is Nothing Then
                Sheets("Stamgegevens").Cells(Rows.Count, "A").End(xlUp).Offset(1).Resize(, 3) = Split(cl.Value & "|" & cl.Offset(, 1).Value & "|" & SC, "|")
              Else
                MsgBox ("Deze code is al in gebruik!"), vbCritical, Warning
                Exit Sub
              End If
          End If
  Next

End Sub
Met vr gr
Jack
 
Jack,

Het is bijna perfect. Ik heb zelf al iets in jouw code gewijzigd. Nog even en ik kan het zelf. :)Het was namelijk de bedoeling om te controleren of de subcode bestaat, als deze niet bestaat moet er een waarschuwing komen. Dat is mij nu gelukt maar als het kan moet er terug gegaan worden naar het invulvak. Dus een terugkeer naar de inputbox om alsnog een correcte subcode in te voeren.

Code:
Sub test()
Dim SC As String
  For Each cl In Sheets("Import").[A1:A50]
    Set c = Sheets("Stamgegevens").Columns(1).Find(cl, , xlValues, xlWhole)
     If c Is Nothing Then
        MsgBox ("Er is een nieuwe code gevonden! " & vbLf & "U dient een subcode toe te voegen!"), , ("Nieuwe Code   ***" & cl & "***")
        SC = InputBox((" Vul hier de Subcode voor " & cl.Offset(, 1) & " in!"), ("Invoeren Subcode"))
          If SC = "" Then Exit Sub
            Set i = Sheets("Stamgegevens").Columns(12).Find(SC, , xlValues, xlWhole)
              If i Is Nothing Then
                [COLOR="Red"]MsgBox ("Deze code is onbekend!"), vbCritical, Warning[/COLOR]
              Else
                Sheets("Stamgegevens").Cells(Rows.Count, "A").End(xlUp).Offset(1).Resize(, 3) = Split(cl.Value & "|" & cl.Offset(, 1).Value & "|" & SC, "|")
                Exit Sub
              End If
          End If
  Next

End Sub
 
Hallo Gerard,

Ik heb gezien dat je de code veanderd hebt, en ik denk ... dat je beter dan de toepassing Not kunt toepassen, anders loopt je code niet helemaal goed. Ik moet nog wel even wat verzinnen om terug te gaan naar de Inputbox.(kan wel even duren maar ik ben ermee bezig) Het is ook maar een beetje hobby van me, en ik hoop dat er over mijn schouders wordt meegekeken of ik ook geen fouten maak. :D
Code:
Sub test()
Dim SC As String
  For Each cl In Sheets("Import").[A1:A50]
    Set c = Sheets("Stamgegevens").Columns(1).Find(cl, , xlValues, xlWhole)
     If c Is Nothing Then
        MsgBox ("Er is een nieuwe code gevonden! " & vbLf & "U dient een subcode toe te voegen!"), , ("Nieuwe Code   ***" & cl & "***")
        SC = InputBox((" Vul hier de Subcode voor " & cl.Offset(, 1) & " in!"), ("Invoeren Subcode"))
          If SC = "" Then Exit Sub
            Set i = Sheets("Stamgegevens").Columns(12).Find(SC, , xlValues, xlWhole)
              If [COLOR="Red"]Not[/COLOR] i Is Nothing Then
                Sheets("Stamgegevens").Cells(Rows.Count, "A").End(xlUp).Offset(1).Resize(, 3) = Split(cl.Value & "|" & cl.Offset(, 1).Value & "|" & SC, "|")
              Else
                MsgBox ("Deze code is onbekend!"), vbCritical, Warning
                Exit Sub
              End If
          End If
  Next

End Sub
Met vr gr
Jack
 
Laatst bewerkt:
Hallo Gerard,

Ik heb wat anders gemaakt want ik kwam er niet helemaal aan uit. :o

Met vr gr
Jack
 

Bijlagen

Jack,

Dit lijkt zelfs nog meer op wat ik in gedachte had. :thumb:
VBA is voor mij al een lastig verhaal om te begrijpen maar hier moet ik eens goed naar kijken.
Alvast ontzettend bedankt voor alle inzet.
 
En nog een kleine aanpassing. Textbox is aangepast naar keuzelijst en lijst subcode is een aan te vullen gedefinieerd bereik.

gr wim
 

Bijlagen

Beste Wim,

Dit is een misschien een kleine aanpassing maar ik ben hier erg gelukkig mee. :thumb::thumb:

Allemaal bedankt voor het meedenken.
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan