Bonjour , j'aie besoin d'une technique pour transmettre une base de donnée excel vers un autre fichier excel .Cependant cette transmission de données se fait vers un TCD .

En fait je m'interesse à la propriété .sourcedate d'un TCD mais en tant que "external data source" .
J'aie donc besoin d'un peu de langage SQL dans mon vba ainsi que de la technique de connection ADODB ...

Je pense que ce lien parle de cette technique particulière
http://msdn.microsoft.com/fr-ca/libr...ffice.10).aspx


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
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
Public X As String
Public plg As Range
Public valeur As Double
Public i As Integer
 
Sub RequeteClasseurFerme()
    Dim Cn As ADODB.Connection
    Dim Fichier As String
    Dim NomFeuille As String, texte_SQL As String
    Dim Rst As ADODB.Recordset
 
    'Définit le classeur fermé servant de base de données
    Fichier = "C:\Test.xls"
    'Nom de la feuille dans le classeur fermé
    NomFeuille = "Liste"
 
    Set Cn = New ADODB.Connection
 
    '--- Connection ---
    With Cn
        .Provider = "Microsoft.Jet.OLEDB.4.0"
        .ConnectionString = "Data Source=" & Fichier & _
            ";Extended Properties=Excel 8.0;"
        .Open
    End With
    '-----------------
 
    'Définit la requête.
    '/!\ Attention à ne pas oublier le symbole $ après le nom de la feuille.
    texte_SQL = "SELECT * FROM [" & NomFeuille & "$]"
 
    Set Rst = New ADODB.Recordset
    Set Rst = Cn.Execute(texte_SQL)
 
    'Ecrit le résultat de la requête dans la cellule A2
    'Range("A2").CopyFromRecordset Rst
 
    indicateur (Rst)
 
    '--- Fermeture connexion ---
    Cn.Close
    Set Cn = Nothing
 
End Sub
 
 
Sub indicateur(Rst)
 
'
' CETTE MACRO SERT A CREER MON TCD
'  ça plante sur la ligne ci-dessous a cause de la variable Rst qui n’est pas du type string
 
    ActiveWorkbook.PivotCaches.Add(SourceType:=xlDatabase, SourceData:= _
        Rst).CreatePivotTable TableDestination:="", TableName:= _
        "PivotTable3", DefaultVersion:=xlPivotTableVersion10
 
 
  ActiveSheet.PivotTableWizard TableDestination:=ActiveSheet.Cells(3, 1)
    ActiveSheet.Cells(3, 1).Select
    With ActiveSheet.PivotTables("PivotTable3").PivotFields("Date")
        .Orientation = xlRowField
        .Position = 1
    End With
    With ActiveSheet.PivotTables("PivotTable3").PivotFields("Agc")
        .Orientation = xlColumnField
        .Position = 1
    End With
    ActiveSheet.PivotTables("PivotTable3").AddDataField ActiveSheet.PivotTables( _
        "PivotTable3").PivotFields("Surfaces"), "Count of Surfaces", xlCount
    Range("A3").Select
    ActiveSheet.PivotTables("PivotTable3").PivotSelect "", xlDataAndLabel, True
    Range("A3").Select
    ActiveSheet.PivotTables("PivotTable3").PivotFields("Count of Surfaces"). _
        Function = xlSum
 
      frequence
 
End Sub