Bonjour , je sollicite votre aide pour transmettre une variable de type recordset (nommée Rst dans mon code) vers mon TCD .En fait je veux que mon recordset soit la source de donnée de mon TCD .Je pense que c’est possible …
Autre formulation de mon problème : il s'agit de récupérer l'adresse ( avec end(xldown.)adress peut-être?) d'une feuille nommée «*Liste*» d'un classeur fermé puis d'envoyer cette adresse de type string vers mon TCD ...
Dans le bug ci-dessous la variable Rst n’est probablement pas du bon type , il faut la transformer en string .
Je fourni 2 fichiers dont celui nommé «*Test*» qui devra rester fermé (c’est la base de donnée que je doit interroger) .La macro à lancer en premier s’apelle «*RequeteClasseurFerme*»
Et se trouve dans le fichier Tentative TCD 4.xls
De même je voudrais savoir dans la ligne de code
indicateur (Rst)
Si j’aie transmis la variable par référence ou par valeur (by ref ou by val)*? (je ne suis pas sur de bien comprendre le jargon des programmeurs mais il semble que transmettre des valeurs by ref ou by val evite la déclaration de variables publiques*;(J’avoue j’aime bien utiliser public mavariable)
Autre formulation de mon problème : il s'agit de récupérer l'adresse ( avec end(xldown.)adress peut-être?) d'une feuille nommée «*Liste*» d'un classeur fermé puis d'envoyer cette adresse de type string vers mon TCD ...
Dans le bug ci-dessous la variable Rst n’est probablement pas du bon type , il faut la transformer en string .
Je fourni 2 fichiers dont celui nommé «*Test*» qui devra rester fermé (c’est la base de donnée que je doit interroger) .La macro à lancer en premier s’apelle «*RequeteClasseurFerme*»
Et se trouve dans le fichier Tentative TCD 4.xls
De même je voudrais savoir dans la ligne de code
indicateur (Rst)
Si j’aie transmis la variable par référence ou par valeur (by ref ou by val)*? (je ne suis pas sur de bien comprendre le jargon des programmeurs mais il semble que transmettre des valeurs by ref ou by val evite la déclaration de variables publiques*;(J’avoue j’aime bien utiliser public mavariable)
Code:
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