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