• 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 met bepaalde kleur kopiëren naar ander bestand op dezelfde plaats

Status
Niet open voor verdere reacties.

bernie6

Gebruiker
Lid geworden
30 okt 2007
Berichten
61
Zit met een vraagje; ik heb een invoerbestand waarvan ik enkel de
cellen met een bepaalde kleurcode wil kopiëren naar een ander bestand;
die cellen moeten dan op dezelfde plaats gekopieerd worden naar dit 2e
bestand; de andere cellen van het 2e bestand mogen niet veranderen;
dus mijn vraag: is het mogelijk om via VBA op zoek te gaan naar
bepaalde cellen in bestand 1 (dus die gekleurde cellen) op zoek te
gaan en enkel die vervolgens te kopiëren naar het 2e bestand; er zijn
wel meer dan 40 werkbladen waarvoor dit zou moeten gebeuren; is zo'n
VBA code schrijven mogelijjk of niet?
Met dank
bernard
 
kopieeren, rechtermuisknop, plakken special, plakken met opmaak

Hoop dat het zo lukt
 
ja, maar het probleem is dat het gaat over een bestand met heel wat tabbladen en diverse cellen met en zonder kleur; graag had ik dit proces geautomatiseerd gezien zodat excel zelf op zoek gaat naar die cellen en die kopieert naar het andere bestand; ik meen dat er hiervoor een VBA module zou moeten geschreven worden, maar ik weet niet goed hoe ik dit moet doen
 
Een vraagje voor de start, is de kleurcode handmatig of met Voorw. Opmaak geplaatst ?
Als het met VW gedaan is wordt het zeer moeilijk om dit te realiseren omdat dan het hele VW-proces via VBA moet uitgevlooid worden om de kleurcode v/e cel te bepalen en dan verdere actie te ondernemen.
 
de kleur is een vaste kleur (niet met voorwaardelijke opmaak); dus er zou gewerkt kunnen worden met het nummer van dat kleur
 
Dus als ik alles goedbegrijp moet er op elk tabblad gezocht worden naar cellen van bepaalde kleur, het celadres moet 'genoteerd' worden en dan moet deze waarde op hetzelfde adres op een tabblad met dezelfde naam gekopieërd worden in bestand2 ?
 
U heeft dat goed begrepen;
het 1ste bestand is enkel een invulbestand; het 2e is identiek aan het 1ste maar hier staan ook nog formules en bewerkingen; het is de bedoeling dat de invoerder van het 1ste bestand niet kan zien wat er gebeurt met die invoer
 
het is de bedoeling dat de invoerder van het 1ste bestand niet kan zien wat er gebeurt met die invoer
Dat is een beetje contradictorisch aangezien het 2de bestand geopend zal moeten worden om de resultaten weg te zetten (weliswaar kan dit op de achtergrond gebeuren, maar als het ergens fout loopt bijft het 2de bestand open staan)
Ben je er dan ook 200% zeker van dat alle bladnamen (je spreekt al direct over een 40-tal) in beide bestanden echt identiek zijn (zelfs een spatie meer of minder is al voldoende), of moet er hiervoor dan ook een extra controle ingebouwd worden ingeval van ?
Het is doenbaar, maar het is niet zomaar even eenvoudig gesteld het een naar het ander wegschrijven
 
de invoerder zal enkel het bestand lokaal opslaan; iemand met de gepaste rechten zal dan dit bestand op de plaats zetten waar het 2e bestand met formules staat om de overdracht van invulvelden te laten gebeuren; er moet geen controle gebeuren op de naam van de tabbladen, die zullen zonder fout identiek dezelfde zijn; het is allemaal een kwestie van beveiliging (ik heb niet zoveel vertrouwen in wachtwoorden die gekraakt kunnen worden)
 
Hier kunnen we al eens mee starten. Het 2de bestand moet al wel geopend zijn alvorens de macro te draaien.
Macro plaatsen in standaardmodule in invoerbestand.
Code:
Sub overbrengen()
    Application.ScreenUpdating = False
    Set wsTo = Workbooks("Test2.xls") 'naam 2de bestand
    For Each sh In Sheets
    'kies een zo klein mogelijke range die toch van toepassing is op alle werkbladen
    'zodat het zoekgebied zo klein mogelijk gehouden blijft.
        For Each cl In sh.Range("A1:C10")
            If cl.Interior.ColorIndex = 3 Then 'rood
                dSheet = sh.Name: dCell = cl.Address
                cl.Copy
                wsTo.Sheets(dSheet).Range(dCell).PasteSpecial xlPasteValues
            End If
        Next
    Next
    With Application
        .CutCopyMode = False
        .ScreenUpdating = True
    End With
End Sub
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan