Bonjour à tous
je sollicite votre aide pour un problème que je n'arrive pas à résoudre.
Dans mon fichier, je sélectionne, via le menu déroulant en L3, les sites que je veux interroger. Après sélection, je récupère des données (colonne B) et j'actualise mon TCD avec le code (actualisation du TCD après détection de changement de valeur en L3) :
Dans la feuille :
Private Sub Worksheet_Change(ByVal Target As Range)
If Not Intersect(Target, Range("L3")) Is Nothing Then
Call Refresh
End If
End Sub
Dans le module :
Sub Refresh()
Application.EnableEvents = False
ActiveSheet.PivotTables("Tableau croisé dynamique1").RefreshTable
Application.EnableEvents = True
End Sub
Cela fonctionne bien cependant, le fichier contenant à la base pas mal de graphiques etc avec le TCD, je suis obligé de le zommer à 70%. Ce qui fait que la liste déroulante est toute petite. J'ai voulu contourner ce problème en créant une liste déroulant Contrôle ActiveX qui vient changer le nom en L3. J'y arrive mais le problème est que lorsque je passe par le ControleActiveX, la macro d'actualisation du TCD ne semble pas détecter que le nom a changé en L3 et il ne se passe rien, je suis obligé d'actualiser le TCD manuellement.
Pourriez vous m'aider à résoudre ce problème?
Bien qu'ayant réduit au max les données présentes dans mon fichier, il reste encore trop volumineux pour pouvoir être joint à ce message. Je mets donc un lien pour pouvoir le récupérer :
Dans la même veine, j'ai une autre question :
J'ai un autre fichier sur le même principe (choix d'un site par menu déroulant) mais beaucoup plus complet et très lourd. Je suis obligé de le mettre en calcul manuel. Lorsque je sélectionne un site, je clique sur calculer maintenant. Le fichier va alors récupérer les données liées au site et il y a ensuite toute une série de calculs. Lorsque les calculs sont finis, je clique sur un bouton pour actualiser tous les TCD et autres calculs restant avec la commande :
Sub Bouton2_Cliquer()
ActiveWorkbook.RefreshAll
Sheets("Graph Hebdo").Select
ActiveSheet.Calculate
Sheets("Nuage - Annuel").Select
ActiveSheet.Calculate
Sheets("Nuage - Hebdo").Select
ActiveSheet.Calculate
Sheets("Nuage - Quotidien").Select
ActiveSheet.Calculate
Sheets("Nuage - Dérivées (MA)").Select
ActiveSheet.Calculate
Sheets("Puissances").Select
ActiveSheet.Calculate
Sheets("Graph Consos").Select
End Sub
Pour ce fichier je ne veux pas lancer l'actualisation après détection d'un changement de site dans la liste déroulante, mais une fois que tous les calculs que j'ai lancés sont finis. Est possible? Par exemple lier le lancement de la macro quand le fichier passe en statut "Prêt"?
Et est-ce possible d'obliger le fichier à être en calcul manuel lorsqu'on l'ouvre?
Merci d'avance pour votre aide.
je sollicite votre aide pour un problème que je n'arrive pas à résoudre.
Dans mon fichier, je sélectionne, via le menu déroulant en L3, les sites que je veux interroger. Après sélection, je récupère des données (colonne B) et j'actualise mon TCD avec le code (actualisation du TCD après détection de changement de valeur en L3) :
Dans la feuille :
Private Sub Worksheet_Change(ByVal Target As Range)
If Not Intersect(Target, Range("L3")) Is Nothing Then
Call Refresh
End If
End Sub
Dans le module :
Sub Refresh()
Application.EnableEvents = False
ActiveSheet.PivotTables("Tableau croisé dynamique1").RefreshTable
Application.EnableEvents = True
End Sub
Cela fonctionne bien cependant, le fichier contenant à la base pas mal de graphiques etc avec le TCD, je suis obligé de le zommer à 70%. Ce qui fait que la liste déroulante est toute petite. J'ai voulu contourner ce problème en créant une liste déroulant Contrôle ActiveX qui vient changer le nom en L3. J'y arrive mais le problème est que lorsque je passe par le ControleActiveX, la macro d'actualisation du TCD ne semble pas détecter que le nom a changé en L3 et il ne se passe rien, je suis obligé d'actualiser le TCD manuellement.
Pourriez vous m'aider à résoudre ce problème?
Bien qu'ayant réduit au max les données présentes dans mon fichier, il reste encore trop volumineux pour pouvoir être joint à ce message. Je mets donc un lien pour pouvoir le récupérer :
Dans la même veine, j'ai une autre question :
J'ai un autre fichier sur le même principe (choix d'un site par menu déroulant) mais beaucoup plus complet et très lourd. Je suis obligé de le mettre en calcul manuel. Lorsque je sélectionne un site, je clique sur calculer maintenant. Le fichier va alors récupérer les données liées au site et il y a ensuite toute une série de calculs. Lorsque les calculs sont finis, je clique sur un bouton pour actualiser tous les TCD et autres calculs restant avec la commande :
Sub Bouton2_Cliquer()
ActiveWorkbook.RefreshAll
Sheets("Graph Hebdo").Select
ActiveSheet.Calculate
Sheets("Nuage - Annuel").Select
ActiveSheet.Calculate
Sheets("Nuage - Hebdo").Select
ActiveSheet.Calculate
Sheets("Nuage - Quotidien").Select
ActiveSheet.Calculate
Sheets("Nuage - Dérivées (MA)").Select
ActiveSheet.Calculate
Sheets("Puissances").Select
ActiveSheet.Calculate
Sheets("Graph Consos").Select
End Sub
Pour ce fichier je ne veux pas lancer l'actualisation après détection d'un changement de site dans la liste déroulante, mais une fois que tous les calculs que j'ai lancés sont finis. Est possible? Par exemple lier le lancement de la macro quand le fichier passe en statut "Prêt"?
Et est-ce possible d'obliger le fichier à être en calcul manuel lorsqu'on l'ouvre?
Merci d'avance pour votre aide.