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

Werkbladen informatie overlaten nemen

Status
Niet open voor verdere reacties.

Comp1

Gebruiker
Lid geworden
11 feb 2007
Berichten
27
Beste Forumleden,

Graag even een opfriscursus Excel, na diverse pogingen richt ik mij tot de Excel goeroes van dit forum.

Om beter overzicht in een klantenbestand te krijgen wil ik informatie koppelen aan werkbladen 2 t/m 4.

Mijn excel bestand heeft 4 werkbladen; 1. database, 2. debiteuren, 3 prospects, 4. suspects

Doel: Als ik in de database (werkblad 1) een aanpassing maak, moeten deze wijzigingen overgenomen worden in werkblad 2 t/m 4.

De formule die ik wil maken is: Werkblad 2 debiteuren: kopieert alle debiteuren en horizontale informatie uit werkblad 1.

Welke type formule moet ik hiervoor gebruiken?


Vriendelijke groet,

Comp1
 

Bijlagen

Laatst bewerkt:
Beste,

Heb je ervaring met VBA en is de subroutine workbook_selectionchange je bekend?
 
Dank je wel voor je reactie.

Nee deze functies zijn bij mij niet bekend.

is dit zoiets als een draaitabel maken ?
 
Beste,

De subroutine start wanneer je in één cel iets wijzigt op een werkblad. Daarin programmeer je wat er moet gebeuren.
Veronderstel dat de subroutine start bij een wijziging in de kolom type en je hebt de andere kolommen nog niet ingevuld, wordt de ganse rij gekopieerd naar een bepaald tabblad.
Wat moet er zeker ingevuld zijn?
 
Bij dit voorbeeld volstaat een dubbelklik op bestaande rij in blad database
om deze rij bij te zetten op juiste blad.

heb wel de bladnamen gewijzigd zodat die overeenkomen met namen in kolom B

mvg

Leo
 

Bijlagen

Laatst bewerkt:
@ Leo,

Een betere dan de mijne met workbook_change. Best dat ik ze niet heb uitgewerkt want ik zou "gepakt zijn" in snelheid.
 
Het bijhouden van dezelfde data op verschillende tabjes is nogal onzinnig. Nu heb je alles netjes in een database staan en kan je dmv van filters toch de data bekijken oid. Met het dubbelclick event van Leotaxi wordt de regel netjes toegevoegd uit het juiste tabje. Maar zal geen wijzigingen doorvoeren.

In jouw database staat geen uniek element (hooguit de naam) dus wijzigingen bijhouden wordt dan al helemaal onmogelijk.

In de bijlage een voorbeeldje die de actuele data uit de database ophaalt, op het moment dat je op een van de tabjes klikt.
 

Bijlagen

@Leotaxi,

Je had zelf wat "rommel" in Module1 achtergelaten. Dus eigenlijk jouw idee maar dan een beetje uitgewerkt.:d
 
Zet de code in Thisworkbook, en je hebt niet voor elk blad de code nodig.
Code:
Private Sub Workbook_SheetActivate(ByVal Sh As Object)
 
@HSV,

Had ik ook geprobeerd maar kreeg een foutmelding. Dus maar even de code onder de drie tabjes geplakt. Werkt nu wel dus waarschijnlijk een typo oid.

De code heb ik een beetje aangepast maar vind het eigenlijk een beetje een gedrocht. Zonder dit topic te kapen, suggesties ter verbetering zijn welkom.

Code:
Private Sub Workbook_SheetActivate(ByVal Sh As Object)
If Sh.Name <> "Database" Then
    Application.ScreenUpdating = False
    Sh.Cells.ClearContents
    With Sheets("Database")
        If .AutoFilterMode = True Then .AutoFilterMode = False
        .Range("$A:$AM").AutoFilter Field:=2, Criteria1:=Sh.Name
        .Cells(1).CurrentRegion.Copy Destination:=Sh.Range("A1")
        .Range("$A:$AM").AutoFilter Field:=2
    End With
    Sh.Range("$A:$AM").AutoFilter
    Application.ScreenUpdating = True
End If
End Sub
 
Iets korter misschien?
De 'screenupdating' gaat vanzelf weer op true.

Code:
Private Sub Workbook_SheetActivate(ByVal Sh As Object)
If Sh.Name <> "Database" Then
    Application.ScreenUpdating = False
    Sh.Cells.ClearContents
    With Sheets("Database").Cells(1).CurrentRegion
          .AutoFilter 2, Sh.Name
          .Copy Sh.Range("A1")
          .AutoFilter 2
    End With
End If
End Sub
 
Is in ieder geval beter leesbaar.:thumb:

Nog wel voor het filteren eerst het filter "leeg gemaakt"

Code:
Private Sub Workbook_SheetActivate(ByVal Sh As Object)
If Sh.Name <> "Database" Then
    Application.ScreenUpdating = False
    Sh.Cells.ClearContents
    With Sheets("Database")
        If .AutoFilterMode Then .AutoFilterMode = False
            With .Cells(1).CurrentRegion
                .AutoFilter 2, Sh.Name
                .Copy Sh.Range("A1")
                .AutoFilter 2
            End With
    End With
End If
End Sub

En nu maar wachten wat de TS er van vindt.
 
Daarvoor kun je 'parent' gebruiken.
Code:
Private Sub Workbook_SheetActivate(ByVal Sh As Object)
Application.ScreenUpdating = False
 If Sh.Name <> "Database" Then
    Sh.UsedRange.ClearContents
    With Sheets("Database").Cells(1).CurrentRegion
       If .Parent.AutoFilterMode Then .Parent.AutoFilterMode = False
          .AutoFilter 2, Sh.Name
          .Copy Sh.Range("A1")
          .AutoFilter 2
    End With
 End If
End Sub
 
Jullie opmerkingen over de filter functie zijn terecht, de uitkomsten per tabblad gebruik ik om bezoekroutes te plannen. Elke tabblad zal apart worden geüpload naar Google maps om zo d.m.v. verschillende kleur markeringen prioriteiten aan te geven. Dit is Excel op een heel nieuw niveau voor mij, mijn dank is groot! Kon jullie formule niet vinden, zie dat ze als een marco code in het tabblad zijn geschreven.

Is er geen formule voorhanden om hetzelfde resultaat te krijgen? Of is de toepassing van een macro de beste manier om het te doen?

Natuurlijk zou ik hier graag nog een aanpassing op willen maken door toevoeging van de tabbladen low, medium, high prospects. Toevoeging van de tabbladen is een eenvoudige klik, toevoeging van een extra macro element lijkt mij lastiger. Als test kan ik in het eerste macro tabblad Basis L-.xlsm module 1 (Code) de aanpassing maken 'Range("B1").Select" maar verdwijnen mijn andere gegevens. Dus dan krijg ik zoiets als:

Sub Macro1()
'
' Macro1 Macro
'

'
'Range("B1").Select
With ActiveSheet

.Range("$A:$AM").AutoFilter Field:=2, Criteria1:="debiteur"
End With
'
' Macro2 Macro
'

'
'Range("A1").Select
With ActiveSheet

.Range("$A:$AM").AutoFilter Field:=2, Criteria1:="debiteur"
End With


End Sub

Aangezien ik geen codes schrijf, zie in in de andere macro codes niet de mogelijkheid om de variabele te veranderen zoals Autofilter field = 1,2, 3 e.d.

Haal uit de overige tabblad codes ook niet naar voren hoe deze zijn geprogrammeerd op suspect of prospect.

Krijg nu ook standaard een veiligheidsmelding op mijn computer bij het openen van excel door de macro's, zitten er risico's verbonden aan het gebruik van macro's?
 
Je hoeft geen extra code te schrijven als de gegeven code in ThisWorkbook staat, zolang de toevoegingen maar hetzelfde heten als je tabbladnamen.
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan