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

cellen vullen met gegevens uit een ander bestand

Status
Niet open voor verdere reacties.

gershi

Gebruiker
Lid geworden
12 feb 2012
Berichten
53
Hallo,

Wie wil mij helpen met het creeren van een VBA code?

Er zijn 2 bestanden met gevens genaamd: "klanten" en "status"

De bedoeling is dat de velden in kolom C van "klanten" gevuld worden met de inhoud van de velden van "status" kolom "B"
als de inhoud van "klanten" kolom/cel "B" gelijk is aan "status" kolom/cel "A"

Deze file's en kolommen moeten in een soort popup menu eerst benoemd moeten worden alsmede de kolommen.
Ook de opmaak (Kleur) moet hierin meegenomen worden.
Zie ook bijgaand bestand.
 

Bijlagen

Cellen vullen met gegevens uit een ander bestand.

Gershi,

Gegevens uit andere bestanden is geen probleem. Als je de gegevens uit het status bestand bij de klanten wil hebben kan je door vertikaal zoeken en verwijzen naar het andere bestand de gegevens ophalen.
Om de opmaak mee te krijgen kun je deze definieren in een voorwaardelijk opmaak. In het status bestand zou ik dan een lijst gebruiken met de mogelijke statussen anders loop je het risico dat de status niet herkend wordt. Gebruik hiervoor de voorwaardelijke opmaak en een lijst met statussen.

Een en ander heb ik in je file geplaatst. Ik begreep alleen niet wat je wil met
een pop up menu. Wil je op basis hiervan rapporteren of zo?
Hoe geef je dan aan welke klant je wil laten zien?

Veel Succes.

Bekijk bijlage HelpmijVergelijken.xlsx
 
Hallo Elsendoorn,

Hartelijk dank voor je reactie.
Het probleem is dat het klantenbestand heel erg groot is en ik dus in elke regel een cel met de door jou gegeven formule moet ingeven/kopieeren.
Er zijn diversen klantenbestanden, en er zijn diverse status bestanden. Daarom zou ik graag de afwikkeling (via een VBA script) afgehandeld zien worden. Ik geef dus in een menu aan welke bestanden er vergeleken moeten worden en de kolommen welke vergeleken/gevuld moeten worden en met welke voorwaarde.

Heb je hier misschien ook een oplossing voor?

Met vriendelijke groet,

Gershi
 
Hallo Elsendoorn,

Heb in "status" 3 items toegevoegd (zonder pijltje naar benden button) (waar is dit voor?)
t.w. klasse*' klasse ** en klasse***.
In "klanten" staat klasse*** in de regel die vergeleken moet worden en in status wordt klasse* hiervoor gekozen.
M.a.w. er wordt niet naar het aantal asterixen gekenen.
Heb je hier een oplossing voor of moet ik jouw manier zoals je beschreven hebt:
"Gebruik hiervoor de voorwaardelijke opmaak en een lijst met statussen"
gebruiken. Zo ja hoe doe ik dat?

Met vriendelijke groet,

Gershi



"Gebruik hiervoor de voorwaardelijke opmaak en een lijst met statussen."
 
Hallo Elsendoorn,

Nu we toch bezig zijn, ik kom er nu pas achter dat de te vergelijken teksten in meerder kolommen kunnen voorkomen.
Kan dit ook werken?

Zie bijgaand bestand.

Met vriendelijke groet,

Gershi
 

Bijlagen

Hier is kop noch staart aan te krijgen. Waar is plots de te vergelijken waarde heen uit je vorige bestand nl de getallen die in beide bestanden voorkomen.
Waar moet er hier nog mee vergeleken worden ???
 
Hallo Rudi,

Je hebt helemaal gelijk, was gisteravond al laat kennerlijk.
Hierbij een nieuw bestand, let s.v.p. ook op mijn andere bericht waarin ik meldde dat woorden gevolgd door een asterix niet goed gevonden worden.
Er moeten nu woorden vergeleken worden uit klanten kolommen B t/m E met woorden in status kolom A en indien gevonden een getal geplaatst worden in klanten kolom F uit status kolom B. In mijn bestand kom ik geen dubbele woorden op regelniveau tegen.

Alvast bedankt,
met vriendelijke groet

Gershi
 

Bijlagen

Ik heb je andere bestand niet bekeken maar wat betreft een asterisk (en niet het stripfiguur asterix) het volgende.
Een asterisk is een wildcard wat zoeken betreft misschien kun je beter een # gebruiken in de naam.
 
Hallo Willem,

Bedankt voor je reactie, ik weet dat een asterix een wildcard is.
Het probleem is dat ik moet dealen met een bestand wat niet door mij is gecreerd.
Dus wijzigen in een ander teken is helaas geen optie voor me, maar ik blijf (nogwel) met een probleem zitten.


Met vriendelijke groet,

Gershi
 
245 komt 4* voor in status maar in vergelijking met klanten is er maar 1 "match". ( 245 - geleverd ***).

Ik heb 2 vragen:
- In welke kolom moeten de waardes van de C-kolom van status komen te staan?
- Wat als er meer dan 1 match is op 1 regel?
Bijvoorbeeld:

245 - geleverd***
245 - neen

Met vriendelijke groet,


Roncancio
 
Hallo Roncancio,

Ja 245 komt 4 x voor, maar de tekst "geleverd**" (in kolom C) is nu maatgevend vanwege inhoud cel (245) in kolom A.

De cellen moeten in klanten kolom F gevuld worden ALS ze in status aanwezig zijn, anders kolom F (Klanten) leeglaten.

Ik ben in het klantenbestand niet tegengekomen dat kolomen op rij niveau dezelfde tekst vertonen.
"Nee" is als voorbeeld meegegeven en zal in Staus niet voorkomen.

Ik hoop dat ik wat duidelijker geweest ben, anders hoor ik weer graag van je,

met vriendelijke groet,

Gerard
 
Niet helemaal de antwoord op mijn vraag.
Ik heb in je bestand wat gegevens verwijderd zodat in status de tekst 245 nog 2 keer voorkomt maar dat beide combinaties ook in klanten op dezelfde regel voorkomt.

Kan dit gebeuren en zoja wat moet de macro hiermee doen?

Met vriendelijke groet,


Roncancio
 

Bijlagen

Hallo Roncancio,

Het komt niet voor dat er twee 'items' op dezelfde regel in klanten voorkomen, doch mocht dat toch voorkomen: cel in kolom F met '?' vullen.

Dus de 4 cellen (kolommen B t/m E) in klanten 'zoeken' of hun inhoud voorkomt in status

a. komt deze nergens voor: cel in kolom F van klanten vullen met 0 (nul)
b. komt deze 1 x voor: cel in kolom F van klanten vullen met inhoud van status kolom C
c. komt deze meerdere keren voor: cel in kolom F van klanten vullen met ?

uiteraard ook kijken naar kolom A van klanten en die van kolom A in status.

met vriendelijke groeten,

Gerard
 
Zet onderstaande code in het bestand Status.

Code:
Sub Klanten()
Dim wBk As Workbook
Dim lRij As Long
    
    Set wBk = Workbooks("Klanten.xls")
    If wBook Is Nothing Then
        MsgBox "Het bestand Klanten is niet geopend!", vbExclamation, "Bestand niet geopend."
    Else
    
        lRij = 2
        With wBook.Worksheets(1)
            .Range("F2:F" & .Range("A" & Rows.Count).End(xlUp).Row).Value = 0
            While Range("A" & lRij).Value <> ""
                Set kl = .Range("A:A").Find(Range("A" & lRij).Value, , xlValues, xlWhole)
                If Not kl Is Nothing Then
                    Set SP = .Range("B" & kl.Row & ":E" & kl.Row).Find(Range("B" & lRij).Value)
                    If Not SP Is Nothing Then
                        .Range("F" & kl.Row).Value = IIf(.Range("F" & kl.Row).Value = 0, Range("C" & lRij).Value, "?")
                    End If
                End If
                lRij = lRij + 1
            Wend
            
        End With
    End If

End Sub

Met vriendelijke groet,


Roncancio
 
Hallo Roncancio,

Harteloijk dank voor je script.
Heb 2 bestanden, in status de script aangebracht, en klanten geopend.
Krijg bij het uitvoeren de foutmelding:
 
fout 9 tijdens uitvoering
Het subscript valt buiten bereik

wat doe ik niet goed?

met vriendelijke groet,

Gerard
 
Niets.
Ik heb een slordige fout gemaakt.

Code:
Sub Klanten()
Dim wBk As Workbook
Dim lRij As Long
    
    Set wBk = Workbooks("Klanten.xls")
    If wBk Is Nothing Then
        MsgBox "Het bestand Klanten is niet geopend!", vbExclamation, "Bestand niet geopend."
    Else
    
        lRij = 2
        With wBk.Worksheets(1)
            .Range("F2:F" & .Range("A" & Rows.Count).End(xlUp).Row).Value = 0
            While Range("A" & lRij).Value <> ""
                Set kl = .Range("A:A").Find(Range("A" & lRij).Value, , xlValues, xlWhole)
                If Not kl Is Nothing Then
                    Set SP = .Range("B" & kl.Row & ":E" & kl.Row).Find(Range("B" & lRij).Value)
                    If Not SP Is Nothing Then
                        .Range("F" & kl.Row).Value = IIf(.Range("F" & kl.Row).Value = 0, Range("C" & lRij).Value, "?")
                    End If
                End If
                lRij = lRij + 1
            Wend
            
        End With
    End If

End Sub

Dit zou beter moeten gaan.

Met vriendelijke groet,


Roncancio
 
Hallo Roncancio,

Helaas werkte het ook niet, ik heb in:

Set wBk = Workbooks("Klanten.xls")

de extentie .xls weggehaald en nu "loopt" het wel,

Maar:

de cellen in klanten worden niet correct ingevuld, zou je s.v.p. nog eens willen kijken? Zie voorbeeld.

Met vriendelijke groet

Gerard
 

Bijlagen

Zonder het bestandje geopend te hebben.
Kijk eens naar de extensies van de bestanden die verschillen nl.
In de macro is het xls en het bestandje zelf heeft xlsx
 
Ben geen pro, maar heb ergens begrepen dat de extensies aangeven hoe een bestand is opgeslagen.
Dus geloof ik meteen dat het bestand welke ik heb opgeslagen als een macrohoudende file een andere extentie heeft dan een bestand welke is opgeslagen zonder een macro. Doet verder niets af aan het feit dat doel (nog) niet bereikt wordt.

Met vriendelijke groet,

Gerard
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan