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 nest 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
Partager