IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Macros et VBA Excel Discussion :

VBA : Macro pour modifier source externe de plusieurs TCD


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Nouveau candidat au Club
    Homme Profil pro
    Inscrit en
    Novembre 2013
    Messages
    1
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Novembre 2013
    Messages : 1
    Par défaut VBA : Macro pour modifier source externe de plusieurs TCD
    Bonjour,

    Dans le cadre de mon travail, j'ai besoin de réaliser des macros sous Excel 2003, n'ayant plus touché à ça depuis quelques années durant mes études (vive la théorie ...), je suis un peu perdu.


    Le contexte :
    J'ai réalisé deux fichiers Excel :
    -Un est un grosse base de données très complètes, réalisé à partir d'une extraction.
    - Le second est une synthèse du premier fichier, à destination de responsables, et composé d'onglet avec chacun un TCD ayant pour source une plage de données du premier fichier.

    Mon problème est d'essayer de réaliser une macro pour m'éviter à changer manuellement la source sur chaque TCD. car le premier fichier change de nom périodiquement (ex : Fichier1 Sept 13, Fichier 1 Oct 13 ...).


    Pour l'instant, comme j'ai quelques restes, j'ai réalisé la macro suivante :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    Private Sub CommandButton1_Click()
    Dim DataSource As Range, Sh As Worksheet
    Dim PvT As PivotTable
    Dim clasource As String, nomfeuil As String
    clasource = Range("E47"): nomfeuil = Range("E48")
    With Workbooks(clasource).Sheets(nomfeuil)
    Set DataSource = Range("E49")
    Application.EnableEvents = False
    For Each Sh In Worksheets
    For Each PvT In Sh.PivotTables
    PvT.ChangePivotCache ThisWorkbook.PivotCaches.Create(SourceType:=xlDatabase, SourceData:="clasource" & "nomfeuil" & "!" & DataSource.Address, Version:=xlPivotTableVersion14)
    PvT.RefreshTable
    Next PvT
    Next Sh
    Application.EnableEvents = True
    End With
    End Sub
    Le but est à partir d'une source copier coller de l'adresse du fichier1 dans des cellules du second fichier, en l’occurrence E47 à E49,
    J'obtiens une erreur 6, sur la ligne With Workbooks(clasource).Sheets(nomfeuil) et j'imagine qu'il y a d'autres pépins.

    En vous remerciant par avance

  2. #2
    Expert confirmé
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mai 2013
    Messages
    3 609
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Alimentation

    Informations forums :
    Inscription : Mai 2013
    Messages : 3 609
    Par défaut
    Bonjour,

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    clasource = Range("E47"): nomfeuil = Range("E48")
    With Workbooks(clasource).Sheets(nomfeuil)
    Est-ce que le classeur clasource est ouvert quand tu roules cette macro ?
    Et qu'est-ce qui est écrit en E47, E48 et E49 ?

  3. #3
    Expert confirmé
    Avatar de Oliv-
    Homme Profil pro
    solution provider
    Inscrit en
    Mars 2006
    Messages
    4 093
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : solution provider

    Informations forums :
    Inscription : Mars 2006
    Messages : 4 093
    Billets dans le blog
    20
    Par défaut
    SAlut,

    a priori la source de ton TCD ne doit pas etre une "source de donnée externe" (odbc, sql ,etc)

    voici un exemple pour la changer si c'est un autre classeur

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    Sub CHANGE_SOURCE_TCD(wk As Workbook)
        Dim pt As PivotTable
        Dim masource  as string
    'classeur actif
    masource = "'GLOBAL TOUTES ANNEES'!C1:C47"
    'autre classeur
    masource = "'C:\DOSSIER\[MaSource.xls]MAFEUILLE'!$A$1:$AU$65536"
     
        For Each pt In wk.Worksheets("Synthèse").PivotTables
            pt.SourceData = masource
            pt.Update
        Next
    End Sub
    Have a nice day. Oliv'
    Votre réponse est peut être dans mon blog !
    https://www.developpez.net/forums/blogs/191381-oliv-/

Discussions similaires

  1. [XL-2003] VBA macro pour importer en automatique plusieurs fichiers dans un autre fichier
    Par pat.852 dans le forum Macros et VBA Excel
    Réponses: 1
    Dernier message: 08/02/2013, 15h39
  2. [XL-2007] Macro pour modifier source de données d'un TCD
    Par Jay29 dans le forum Macros et VBA Excel
    Réponses: 12
    Dernier message: 05/10/2009, 15h21
  3. [HTML] Macro pour modifier plusieur fichier html
    Par naouah dans le forum Balisage (X)HTML et validation W3C
    Réponses: 1
    Dernier message: 16/01/2009, 09h40
  4. [VBA]Macro pour lancer une recherche dans un tableau
    Par manhes dans le forum Macros et VBA Excel
    Réponses: 4
    Dernier message: 27/04/2007, 18h08
  5. [VBA]Macro pour insérer la date
    Par vautour29 dans le forum Général VBA
    Réponses: 2
    Dernier message: 23/04/2007, 15h28

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo