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

Excel cellen exporteren naar positie in andere excel file

Status
Niet open voor verdere reacties.

daruda

Gebruiker
Lid geworden
1 nov 2005
Berichten
25
Goedemiddag,

Ik had een redelijk ingewikkeld vraagje over Excel voor een facturatie systeem.
Op de ene plaats hebben we een tijdschema waar de verschillende planningen voor die dag staan. Hier staan dus meerdere klanten op.
Ik heb dit in het kort geschetst in een Excel file: voorbeeld1.xls

Ten tweede hebben we dan ons facturatie document. Zie voorbeeld2. Mijn vraag is nu of het mogelijk was de cellen voor een bepaalde klant in het planningsfile te selecteren en deze te exporteren naar de juiste plaats in het facturatiedocument met een paar simpele knoppen?

bijvoorbeeld: we selecteren in voorbeeld1.xls alles van klant1 (B1:B9) en we willen dat deze info op de juist plaats wordt ingevuld in voorbeeld2.xls. Dus naam moet op cel D1 komen, datum op cel D2 etc..

Dit zouden dan sjablonen worden zodat de facturatiegegevens altijd opdezelfde plaats moeten terecht komen. De gegevens van de klant kunnen wel ook van een andere positie komen bvb vanuit C1:C9 omdat we meerdere klanten per planning hebben staan.

Ik weet dat het een redelijk ingewikkelde vraag is, maar heeft iemand een idee hoe het mogelijk zou zijn?

Met vriendelijke groeten!
 
Laatst bewerkt:
Je zou met macro's kunnen gaan werken. Dan wordt het redelijk eenvoudig in de zin van: kopieer waarde cel B1 van sheet 1 en plak die in cel D1 van sheet 2.
Om te weten hoe zo'n macro ongeveer eruit moet komen te zien, kun je een macro opnemen en dan een kopieer & plak actie uitvoeren.

Of Googel eens op "VBA Excel Range Copy Paste Different Sheets"

Succes!
 
Hallo,

Qua ingewikkeldheid valt het reuze mee maar is het een optie om het werkblad met de gegevens en de sjabloon in 1 bestand te zetten?
Je kan dan met een formule de bijbehorende gegevens van een willekeurige klant bij elkaar zoeken.

Met vriendelijke groet,


Roncancio
 
Hallo,

Qua ingewikkeldheid valt het reuze mee maar is het een optie om het werkblad met de gegevens en de sjabloon in 1 bestand te zetten?
Je kan dan met een formule de bijbehorende gegevens van een willekeurige klant bij elkaar zoeken.

Met vriendelijke groet,


Roncancio


Ik begrijp wat je bedoelt, het factuur zelf als extra tabblad in het excel file opnemen. Maar het probleem is dat er meerdere klanten instaan, dan ge je je formule toch hele tijd moeten aanpassen.

Dat van die macro's zal ik zeker eens gaan bekijken!

groeten
 
Ik begrijp wat je bedoelt, het factuur zelf als extra tabblad in het excel file opnemen. Maar het probleem is dat er meerdere klanten instaan, dan ge je je formule toch hele tijd moeten aanpassen.

Nee, als je namelijk een dropdownlijst maakt met klanten dan kan je laten zoeken naar de verdere gegevens van de klant zonder dat je steeds de formule aan hoeft te passen.
Een macro is overigens ook een optie, maar het hoeft dus niet.

Met vriendelijke groet,


Roncancio
 
mmmm

Dus dat men een lijst oproept waar men uit de verschillende klanten kan kiezen.

Probleem is wel dat men in 1 excel sheet 31 dagen heeft staan en dan nogmaals 12 klanten per dag. Is het mogelijk om dan eerst voor de datum te gaan kiezen en daarna voor de bepaalde klanten die dag? :)

Dit zal waarschijnlijker wel simpeler te maken zijn dan de macro's.

Zo een drop down box hoe steekt dat ineen?

Met vriendelijke groeten
 
mmmm

Dus dat men een lijst oproept waar men uit de verschillende klanten kan kiezen.

Probleem is wel dat men in 1 excel sheet 31 dagen heeft staan en dan nogmaals 12 klanten per dag. Is het mogelijk om dan eerst voor de datum te gaan kiezen en daarna voor de bepaalde klanten die dag? :)

Dit zal waarschijnlijker wel simpeler te maken zijn dan de macro's.

Zo een drop down box hoe steekt dat ineen?

Met vriendelijke groeten

Excel heeft maar 256 kolommen en je in het voorbeeldbestand staan de klanten naast elkaar. Dat betekent dat niet alle klanten in 1 rij staan. (31 * 12 = 372)
Een macro is niet zo veel moeilijker dan een formule maar met een macro zijn er meer mogelijkheden en als het met een formule kan, waarom niet.
Ik heb (denk ik) later vandaag tijd om het eea uit te werken.

Met vriendelijke groet,


Roncancio
 
Hey,

Op andere forum heeft iemand het al goed uitgewerkt met macro's, dat kan ik als voorbeeld gaan gebruiken :) Denk dat het simpeler gaat zijn als je 31 dagen hebt en meerdere klanten per dag :)

http://www.worksheet.nl/forumexcel/showthread.php?t=55479
Daar staat het.

Had verder nog een vraagje.
Als je drop down box gebruikt, maar bijvoorbeeld 3 ondereen en telkens uit zelfde lijst, maar ik zou willen voorkomen dat men de 2de maal nietmeer voor de waarde kan kiezen die men de eerste maal heeft gekozen. En zelfde voor die 3de drop down box, dat de eerste en tweede waarde wegvallen.

Is dit mogelijk? Dus dat men een gekoze waarde uit de lijst gaat uitsluiten?

Met vriendelijke groeten
 
Laatst bewerkt:
Ja sorry daarvoor maar ik ken niet alle fora hier en weet niet waar men helpt en waar wel :)
Had in google Hulp excel ingegeven :)

Bedankt voor die link, is enorm veel op terug te vinden!

groeten
 
Ik had nog een vraagje over die macro's, weet niet of het hier nog thuishoort.

Maar wat ik verder wou weten is, hoe kan je in zo een werkblad een knop krijgen om de macro uit te voeren? En hoe kan je instellen dat de macro op elk werkblad uit je excel file van toepassing moet zijn met uitzondering van één speciaal.

Iemand hier enig idee voor? Of een goede site waar daar alles over wordt uitgelegd?

Nog een vraag is, bij mijn macro wordt er in een nieuwe excel file bepaalde cellen ingevuld, maar deze code blijkt blijkbaar enkel te werken als ik eerst manueel deze nieuwe file open, is het mogelijk om in te stellen dat hij in het begin bij het uitvoeren van de code automatisch deze nieuwe file gaat openen?


Alvast bedankt!
 
Laatst bewerkt:
Voor het toevoegen van een knop voor je macro, kun je deze code gebruiken:
Code:
Private Const tlbNAME = "Mijn eerste knoppenbalk"


Public Sub AddMyToolbar()
    Dim aToolbar As CommandBar
    Dim myToolbar As CommandBar
    Dim myButton As CommandBarButton
    
    On Error GoTo AddWizardToolbarError
        
    'Verwijder een eventuele oudere versie van de knoppenbalk
    For Each aToolbar In Application.CommandBars
        If (aToolbar.name = tlbNAME) Then
            aToolbar.Delete
            Exit For
        End If
    Next aToolbar

    'Voeg de knoppenbalk toe
    Set myToolbar = CommandBars.Add(tlbNAME, Position:=msoBarTop, temporary:=True)
    If (Not myToolbar Is Nothing) Then
        
        'Voeg de knop(pen) toe
        Set myButton = myToolbar.Controls.Add(Type:=msoControlButton, temporary:=True)
        With myButton
            'Geef hier de macro naam op (moet public zijn!)
            .OnAction = "ImportDatabase"
            'Toon de macro als een knop met icon
            .Style = msoButtonIcon
            'Geef de begeleidende tooltip tekst op
            .TooltipText = "Importeer database"
            .Tag = "ImportDB"
            .FaceId = 2 ' zie ... voor meer faceid's
            .Enabled = True
        End With
    
    End If
    'Toon de knoppenbalk
    myToolbar.visible = True
    
    'Verlaat de sub
    Exit Sub
    
AddWizardToolbarError:
    'Hmmm er is iets fout gegaan: toon de foutmelding
    MsgBox Err.Description, vbExclamation + vbOKOnly, "Let op:"
    
End Sub

Public Sub EnableToolbarButton(value As Boolean)
    Dim myToolbar As CommandBar
    Dim myButton As CommandBarButton
    
    Set myToolbar = CommandBars(tlbNAME)
    If (Not myToolbar Is Nothing) Then
        myToolbar.Controls(1).Enabled = value
    End If

End Sub

Voeg vervolgens in ThisWorkbook (in de VBA omgeving) deze code toe:
Code:
Private Sub Workbook_Open()
    'Voeg de Aleid Export toolbar toe
    AddMyToolbar
End Sub

In elke sheet geef je voor het enable-en of disable-en van de knop de volgende code op:
Code:
Private Sub Worksheet_Activate()
    EnableToolbarButton True 'of False 
End Sub


Tip: Voor een ander plaatje voor je knop, moet je een andere 'faceid' opgeven. Standaard zijn er honderden al beschikbaar. Voor een mooi overzicht, zie deze site:
http://www.outlookexchange.com/articles/toddwalker/BuiltInOLKIcons.asp
(klik op de plaatjes!)

Succes! :thumb:
 
Hey,

Die eerste blok code die je geeft, moet ik dit als een nieuwe macro toevoegen? Want dan werkt het wel niet, krijg geen knop getoond.

Of waar moet ik die heen zetten.

Dan met die code kun je wel een knop aanzetten of afzetten. Maar mijn excel geeft de hele tijd een beveiligingswaarschuwing dat de andere macro functie (maak_factuur) niet uitvoerbaar is voor mijn eerste werkblad, ik wil dus ook voor dat werkblad die macro functie disablen, maar hoe doe je dat? Voor de andere werkbladen moet hij actief blijven!

groeten en bedankt
 
Je moet de eerste code in een module zetten (die dus eerst toevoegen). De code moet namelijk toegankelijk zijn voor alle werkbladen (sheets) en het werkboek.

Je kan de code testen door in de subroutine AddMyToolbar te gaan staan en dan op de F5 toets (= start code) te drukken. Of je krijgt een error, of het gaat goed ;)
Als je Office2007 hebt, dan moet je op in de ribbon eerst op 'Developer' klikken, want daar wordt het icoontje geplaatst... :(

Een macrofunctie kun je bij mijn weten niet uitzetten voor maar 1 werkblad (sheet). Maar misschien heb je een voorbeeldbestand? Dat praat (en helpt) wat makkelijker. Mag evt. ook via privé mail als je dat liever hebt...

Groeten Eelco
 
Ik heb een mailtje gestuurd :)
 
Laatst bewerkt door een moderator:
Een knop op een formulier (i.p.v. de knoppenbalk) is heel makkelijk. Kies uit 'Form Controls' een 'button' (knop). Zodra je die op een werkblad zet dan krijg je automatisch de vraag naar welke macro hij moet verwijzen.

Maar dat moet je voor elk werkblad opnieuw een knop toevoegen. In de toolbar hoeft dat maar 1 keer...

Zie bijlage 'Book1.xls' voor voorbeeldcode voor het niet runnen van je macro. Kijk even in de code van sheet 'ThisWorkbook' en de code van module 'Module1'. Principe is: check welk werkblad actief wordt. Zodra sheet1 (in mijn geval) actief wordt zet ik een vlag dat de macro niet mag worden gerund (bRunMacro = True/False); in alle andere gevallen mag het wel.

Aan het begin van je macro check je even of je de macro mag runnen (If bRunMacro = True Then ...), zo niet dan verlaat je de macro/subroutine.

Succes ermee!
 

Bijlagen

Hey bedankt, de knop is gelukt :)

De code werkt ook, maar het doet de vreselijke error van excel niet weg. Ik ga het dan gewoon zolaten, de macro kan toch enkel uitgevoerd worden in werkbladen waar de button staat, zolang die er niet is op dat ene werkblad kan het niks misdoen :)

Nog één vraagje, ik zou graag via de macro een excel bestand openen, zodat de gebruiker dit niet manueel moet doen, hoe doe je dit?

Met vriendelijke groeten
 
Dat kan via een code als:
Code:
     Dim SourceBook As Workbook
    
     'Open het werkboek
     Set SourceBook = Workbooks.Open("C:\temp\book1.xls")
 
Probleempje, nu wil hij om de één of andere reden de velden niet meer invullen :s

hij opent Factuur.xls maar vult de velden niet in.

Hier is de code:

Code:
Public Sub Maak_Factuur()
'
' Maak_Factuur Macro
' Deze macro zal er voor zorgen dat de benodigde gegevens automatisch in het factuur worden ingevuld.
'

Dim iKolom As Integer
iKolom = ActiveCell.Column
If IsEmpty(Cells(28, iKolom)) Then Exit Sub

Dim SourceBook As Workbook
'Open het werkboek
Set SourceBook = Workbooks.Open("C:\Documents and Settings\Arne Vanhoof\Bureaublad\Hoekx\Nieuw\Factuur.xls")

Workbooks("Factuur.xls").Sheets("sheet1").[C9] = [B1] 'datum
Workbooks("Factuur.xls").Sheets("sheet1").[C7] = Cells(28, iKolom) 'Naam Klant
Workbooks("Factuur.xls").Sheets("sheet1").[B12] = Cells(29, iKolom) & " " & Cells(30, iKolom) 'laadplaats
Workbooks("Factuur.xls").Sheets("sheet1").[F12] = Cells(31, iKolom) & " " & Cells(32, iKolom) 'losplaats
Workbooks("Factuur.xls").Sheets("sheet1").[G9] = Cells(33, iKolom) 'Uur
Workbooks("Factuur.xls").Sheets("sheet1").[F15] = Cells(34, iKolom) 'tel nr
Workbooks("Factuur.xls").Sheets("sheet1").[A17] = Cells(35, iKolom) 'voertuig
Workbooks("Factuur.xls").Sheets("sheet1").[A18] = Cells(36, iKolom) 'Lift
Workbooks("Factuur.xls").Sheets("sheet1").[E16] = Cells(38, iKolom) 'Chauffeur
Workbooks("Factuur.xls").Sheets("sheet1").[D17] = Cells(40, iKolom) & ", " & Cells(41, iKolom) & ", " & Cells(42, iKolom) & ", " & Cells(43, iKolom) & ", " & Cells(44, iKolom) & ", " & Cells(45, iKolom) 'Personeel

End Sub
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan