Récupérer l'adresse d'une feuille d'un classeur fermé

atlas

XLDnaute Occasionnel
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)

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
 

Pièces jointes

  • Test.zip
    127.7 KB · Affichages: 36
  • Test.zip
    127.7 KB · Affichages: 30
  • Test.zip
    127.7 KB · Affichages: 33

atlas

XLDnaute Occasionnel
Re : Récupérer l'adresse d'une feuille d'un classeur fermé

Un petit up ! (la question est difficile je pense)

Ici probablement une amorce de réponse

Ce lien n'existe plus

Le théme est explicite : "Creating a PivotTable Report from an External Data Source"

Il s'agit d'un drole de mélange entre requete SQL à transformer en PivotTable ...
 

Discussions similaires

Statistiques des forums

Discussions
312 770
Messages
2 091 946
Membres
105 119
dernier inscrit
Boutin