Bonjour,

J'utilise un fichier EXCEL qui contient une vingtaine de connexions qui me permettent d'alimenter autant de tableaux croisés.
Je souhaite pouvoir faire évoluer le fichier source et mettre à jour automatiquement (le tout par macro) tous les tableaux croisés.

A l'exécution de .Refresh sur l'objet OLEDBConnection (ligne 47), la pop up de selection du tableau me demande de sélectionner le tableau contenant les données.
Nom : selection_tableau.JPG
Affichages : 109
Taille : 42,5 Ko
J'aimerais que cette selection soit faite directement dans la macro, mais je n'y arrive pas

Voici le code dans son état actuel

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
Sub ActualisationLiaison()
'

Dim NombreDeCaracteres As Integer
Dim NumeroCaractere As Integer
Dim CaractereDepart As Integer
Dim NomFichier As String
Dim Chemin As String
Dim ChaineConnexion As String

Dim Reponse As VbMsgBoxResult


'Sélection fichier

Question = MsgBox("Sélectionner le fichier à connecter", vbInformation, "Saisie du fichier")


SaisieFichier:
On Error GoTo Fin

ChaineConnexion = "OLEDB;Provider=Microsoft.ACE.OLEDB.12.0;User ID=Admin;Data Source=**Chemin**;Mode=Share Deny Write;Extended Properties=""HDR=YES;"";Jet OLEDB:System database="";Jet OLEDB:Registry Path="";Jet OLEDB:Engine Type=37;Jet OLEDB:Database Locking Mode=0;Jet OLEDB:Global Partial Bulk Ops=2;Jet OLEDB:Global Bulk Transactions=1;Jet OLEDB:New Database Password="";Jet OLEDB:Create System Database=False;Jet OLEDB:Encrypt Database=False;Jet OLEDB:Don't Copy Locale on Compact=False;Jet OLEDB:Compact Without Replica Repair=False;Jet OLEDB:SFP=False;Jet OLEDB:Support Complex Data=False;Jet OLEDB:Bypass UserInfo Validation=False"

Chemin = Application.GetOpenFilename
NombreDeCaracteres = Len(Chemin)
NumeroCaractere = InStrRev(Chemin, "\")
NomFichier = Right(Chemin, NombreDeCaracteres - NumeroCaractere)
Sheets("Global").Range("A1").Value = Chemin
Reponse = MsgBox("Vous allez connecter le fichier " & NomFichier & "", vbYesNo, "Résultat")

If Reponse = vbNo Then
    GoTo SaisieFichier
End If

ChaineConnexion = Replace(ChaineConnexion, "**Chemin**", Chemin)

    With ActiveWorkbook.Connections("ECROUS ST G").OLEDBConnection
        .RefreshOnFileOpen = False
        .BackgroundQuery = True
        .CommandText = Array("'ST G$'")
        .CommandType = xlCmdTable
        .Connection = ChaineConnexion
        .SourceConnectionFile = Chemin
        .AlwaysUseConnectionFile = True
        .EnableRefresh = True
        .CommandText = "'ST G$'"
        .Refresh
        ' au Refresh, ouverture de la pop up Sélectionner un tableau
        ' Ici j'ai testé plusieurs commandes sur objet OLEDBConnection (qui ne fonctionnent pas)
        '.Reconnect
        '.MakeConnection
        '.SourceDataFile = Chemin
        '.RefreshOnFileOpen = True
        '.SavePassword = False
        '.ServerCredentialsMethod = xlCredentialsMethodIntegrated
        '.ServerFillColor = False
        '.ServerFontStyle = False
        '.ServerNumberFormat = False
        '.ServerTextColor = False
    End With
    
Fin:
MsgBox ("Erreur")
 
End Sub