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

serie code matchen

Status
Niet open voor verdere reacties.

Excelebeginner

Gebruiker
Lid geworden
21 apr 2020
Berichten
15
hallo daar ben ik weer. gisteren heel veel hulp gehad vanuit de community, nogmaals dank daarvoor.

ik denk dat ik er bijna ben met mijn bestand maar er zijn nog enkele dingen waar ik niet helemaal uitkom.

ik gebruik deze sheets om afbeeldingen te matchen aan de serie waar ze in moeten worden geupload.
de uitkomst exporteer ik naar een .csv bestand.

de volgende dingen loop ik nog tegenaan:

het matchen gaat als volgt, de eerste kolom geeft aan in welke serie deze afbeelding moet komen te staan en de kolommen daarna zijn de afbeeldingen die daarbij horen.
HA1192524 /IMG/20200117 - HA1192524-2.jpg /IMG/20200117 - HA1192524-3.jpg /IMG/20200117 - HA1192524-4.jpg /IMG/20200117 - HA1192524-5.jpg /IMG/20200117 - HA1192524-2.jpg de laaste code moet echter zonder de -2 zijn (/IMG/20200117 - HA1192524.jpg) maar de formule die ik gebruik: =ALS(Blad2!B18="";"";ALS.FOUT(SPATIES.WISSEN(LINKS(Blad2!B18;VIND.SPEC("-";Blad2!B18;1)-1));SPATIES.WISSEN(Blad2!B18))) koppelt die aan de verkeerde. Ook zou deze code vooraan moeten staan en niet achteraan.

Het tweede waar ik tegenaan loop is dat sommige afbeeldingen bij meerdere series horen maar met deze formule krijg ik alleen maar hetzelfde resultaat.
vb.
code SW228060 komt 2 keer in deze serie voor
1. 20200117 - 0261520, SW228060.jpg
2. 20200117 - 0729240, SW228060.jpg

het resultaat zou moeten zijn: SW228060 /IMG/20200117 - 0261520, SW228060.jpg /IMG/20200117 - 0729240, SW228060.jpg
maar mijn resultaat is : SW228060 /IMG/20200117 - 0261520, SW228060.jpg /IMG/20200117 - 0261520, SW228060.jpg

het laatste is dat in de export in de eerste kolom sommige tekens links staan en sommige rechts, ik heb dit geprobeerd op te lossen door in de code iets toe te voegen maar ik denk dat dit verkeerd is (ben nogal een noob op het gebied van vba code, ik gebruik vooral formules in mijn macro's) en de kolommen zouden zich automatisch moeten aanpassen aan de de breedte vd tekens die erin staan, ook hier heb ik het geprobeert met code maar is me niet gelukt. dit laatste is vooral om het visueel wat mooier eruit te laten zien en niet essentieel om het te laten werken.

als iemand mij hierbij kan helpen zou heel fijn zijn.

ik heb het bestand bijgevoegd en de stukken waar het mi gaat geel gemaakt, misschien dat dit iets meer duidelijkheid schept.
 

Bijlagen

heel moeilijk verhaal, dus gok ik dat je dit bedoelt, in blad4
 

Bijlagen

ja dat is excact hoe het resultaat hoe het eruit moet komen te zien, alleen dan moet de tekst die in rij 1 staat op blad3 er nog boven:d

hoe heb je dit gedaan, met code of formules want ik zag niks vd code in het bestand staan?
 
ik had gewoon in de oude macro "kolom" wat aanpassingen gedaan.
Het is wat korter geworden omdat nu direct met de dictionary gewerkt wordt ipv een tussenstap.
Die A-kolom met de samenvoegingen kan er straks ook nog uit als je die B in een A verandert.
Alles gaat opnieuw naar blad3
Code:
        .TextToColumns Destination:=.Range("[COLOR="#FF0000"][SIZE=4]B[/SIZE][/COLOR]1"),
 

Bijlagen

Laatst bewerkt:
heel erg bedankt, dit werkt perfect.

met betreking tot het inladen vd bestandsnamen en het exporteren van het eindresultaat.

ik heb daar nu een fixed locatie in staan maar is het bijvoorbeeld ook mogelijk om deze te laten verwijzen naar de map waar het macro bestand in staat zodat ik die steeds in een nieuwe upload map kan zetten met de map:img (afbeeldingen) erin en het bestand eronder, dat hoef ik dit niet steeds aan te passen bij elke nieuwe upload.

nogmaals heel erg bedankt en heb je misschien een aanrader zoals een boek of website waar ik dit zelf kan leren, dan hoef ik jullie niet steeds lastig te vallen:d
 
de rode regel invoegen, die vervangt je oude "\IMG" door het huidige path
Code:
 With .Resize(dict.Count)                   'zo diep als er unieke sleutels in de dictionary zitten
         .Value = Application.Transpose(dict.items)   'de items van de dictionary wegschrijven
[COLOR="#FF0000"]         .Replace "\IMG\", ThisWorkbook.Path & "\", xlPart   ' vervang \IMG\ door path
         [/COLOR].TextToColumns Destination:=.Range("A1"), DataType:=xlDelimited, TextQualifier:=xlDoubleQuote, ConsecutiveDelimiter:=False, Tab:=False, Semicolon:=False, Comma:=False, Space:=False, Other:=True, OtherChar:="|", FieldInfo:=Array(Array(1, 2), Array(2, 2)), TrailingMinusNumbers:=True   'gepast weer naar kolommen
      End With

VBA for dummies als starter
 
Laatst bewerkt:
ik denk dat dat dat niet precies is wat ik bedoelde, de code die ik nu heb om alle bestands namen in te laden is:

With CreateObject("scripting.filesystemobject").GetFolder("C:\Users\thier\OneDrive\Documenten\macro yannick\IMG")
For Each fl In .Files
If Right(fl.Name, 4) = ".jpg" Then Cells(Rows.Count, 1).End(xlUp).Offset(1) = fl.Name
Next

dit werkt goed als de bestandsnaam op dezelfde plek staat maar de bedoeling is uiteindelijk dat ik 1 map stuur met in die map mijn bestand en nog een map genaamd IMG, die IMG map zal altijd dezelfde naam hebben.

hetzelfde geld voor voor het opslaan, hier heb ik :

ActiveWorkbook.SaveAs Filename:="C:\Users\thier\OneDrive\Documenten\macro yannick\" & _
SaveName & ".csv", _
FileFormat:=xlCSV, CreateBackup:=False, local:=True
ook hier zou die naar de map moeten verwijzen waar het macro bestand in staat ongeacht waar die map op staat geslagen.


bedankt voor de tip trouwens.
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan