Non refresh d'un TCD via vba qui pourtant fonctionne en débug manuel...

billExcel

XLDnaute Nouveau
Bonjour,

J'ai développer la procédure ci dessous que j'appelle via un bouton sur ma feuille de calcul "TCD"
Cette feuille de calcul contient un TCD dénommé TCD_SuiviDuChiffreDAffaireDesAccords.
Celui ci est lié à une plage de données qui sont dans la feuille "ODS". Cette plage de données est alimentée par la connexion "ODSSAT_SuiviDuChiffreDAfaireDesAccords_Projection6mois"


Problème constaté :
Lors que le lance la macro, la premiere fois la plage de données est mise à jour mais pas le TCD
Si je relance la macro, le TCD est alors à jour.....
Si je lance la macro en mode pas à pas, elle fonctionne très bien...

Je ne vois aucune erreur. Si qq1 a une idée.

Ci dessous le code.

Merci de votre retour


' Procédure ODS_Btn_Actualiser
Sub ODS_Btn_Actualiser()
Dim odcFile
Dim objFSO

' Gestion d'erreurs
On Error Resume Next

' Activation de la feuille du TCD
Sheets("TCD").Select

' Affichage du lancement de l'actualisation
Application.ScreenUpdating = True
Range("A6").Value = "Actualisation en cours..."
Range("A6").Interior.Color = RGB(255, 0, 0)

' Vérification préalable de l'accès au fichier de connexion vers l'ODS
If (ActiveWorkbook.Connections.Count = 0) Or ActiveWorkbook.Connections("ODSSAT_SuiviDuChiffreDAfaireDesAccords_Projection6mois") Is Nothing Then
MsgBox "La connexion à l'ODS est inexistante." & vbCrLf & "Veuillez contacter l'administrateur ", vbOKOnly
Exit Sub
End If

' Lancement du refresh des données de l'ODS
Application.StatusBar = "Rechargement des données de l'ODS... "
ActiveWorkbook.Connections("ODSSAT_SuiviDuChiffreDAfaireDesAccords_Projection6mois").Refresh

Application.StatusBar = "Fin du chargement des données de l'ODS."

' Actualisation du tableau croisé dynamique
Application.StatusBar = "Actualisation du tableau croisé dynamique..."
Application.Sheets("TCD").Select
ActiveSheet.PivotTables("TCD_SuiviDuChiffreDAffaireDesAccords").PivotCache.Refresh

' Affichage de la fin de l'actualisation
Range("A6").Interior.Pattern = xlNone
Range("A6").Value = "Actualisé le " & Now()

' Fin
Application.StatusBar = False

End Sub
 

billExcel

XLDnaute Nouveau
Re : Non refresh d'un TCD via vba qui pourtant fonctionne en débug manuel...

Bonjour,

Je viens de mettre en oeuvre une pause de 20s dans le code de la macro
"Application.Wait (Now() + TimeValue("0:00:20"))" après la ligne 'Application.StatusBar = "Fin du chargement des données de l'ODS.' de mon code.

J'ai le meme comportement à savoir, le TCD n'est pas actualisé la premiere fois que je lance la macro. Il est actualisé si je lance la macro 1 seconde fois.

J'ai tenté aussi de doubler la ligne 'ActiveSheet.PivotTables("TCD_SuiviDuChiffreDAffaireDesAccords").PivotCache.Refresh' dans ma macro pour qu'elle soit lancée 2 fois.
=> Pas mieux

Autre idée ?
 

MARTINEZ

XLDnaute Nouveau
Bonjour,
Le post est un peu vieux mais au cas ou quelqu'un tombe dessus,
J'ai déjà eu ce problème avec une Query, les TCD sont mis à jour instantanément et non pas les connexions qui sont plus longues à charger d'où à mon avis votre problème.
BackgroundQuery =False me permettait d'empêcher le code de continuer sans avoir terminée la requête.
 

Discussions similaires

Statistiques des forums

Discussions
312 175
Messages
2 085 953
Membres
103 058
dernier inscrit
florentLP