Boostez vos compétences Excel avec notre communauté !
Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force.
Apprenez, échangez, progressez – et tout ça gratuitement !
👉 Inscrivez-vous maintenant !
J'ai le problème suivant :
J'ai une base de données (onglet d'un fichier) que je duplique sur plusieurs fichiers afin d'actualiser plusieurs Pivot tables sur d'autres onglets.
Je souhaite rafraîchir tous les pivot tables d'un coup.
J'utilise le code suivant qui fonctionne :
Code:
Dim pt As PivotTable
Dim ws As Worksheet
For Each ws In ActiveWorkbook.Worksheets
For Each pt In ws.PivotTables
pt.RefreshTable
Next pt
Next ws
End Sub
Le problème est que j'ai beaucoup d'onglets avec des pivot tables donc tout cela est très long... 🙁
Sur chacun de mes fichiers tous les pivot tables sont construits à partir du même pivot table (copié et modifié) ce qui me permet "à la main" d'actualiser uniquement celui du premier onglet pour les actualiser tous.
Ma question (on y vient...🙂) :
Est-il possible d'appeler le premier onglet d'un fichier sans tenir compte de son nom? (qui évidement est différent sur chacun des fichiers...)
ex. sheets(1) ??? first.sheet ???
L'idée serait de limiter ma macro à ce premier onglet, ce qui aurait pour effet de les actualiser tous (et de gagner un temps appréciable sur le temps de traitement...).
D'avance merci pour votre aide toujours aussi efficace.
Re : VBA - Accéder au premier onglet sans le nommer ???
Bonjour La braise,
Tu peux accéder à une feuille en la désignant par son index. Ex :
Code:
Sheets(1).Activate
Mais attention, il me semble me souvenir que si tu modifies l'ordre des onglets, ton index se modifiera également et ta macro sera faussée (à vérifier).
Re : VBA - Accéder au premier onglet sans le nommer ???
Re- le fil,
Alors... après quelques tests...
Code:
ThisWorkbook.RefreshAll
Tous les fichiers défilent bien mais les pivot tables ne sont pas actualisés.
C'est dommage car la solution semblait on ne peut plus séduisante...
Je suis actuellement sur une solution combinée... 🙂
Ce que je veux c'est actualiser le(s) pivot table(s) présent sur le premier onglet de chaque fichier, les pivot tables des autres onglets seront du coup actualisés également. 🙂
L'idée serait un truc du genre (on rigole pas! 😀)
Code:
Sheets(1).RefreshAll
qui bien sur ne fonctionne pas, l'erreur retournée est "Erreur d'éxécution 438."
Pour info mon code qui copie la bDD sur le fichier modèle et "tente d'actualiser les pivot tables :
Code:
'Copier les données Export DATAvsN-1
Sheets("DATA vs N-1").Select
Rows("1:1").Select
Range(Selection, Selection.End(xlDown)).Select
Selection.Copy
'Ouvrir le modèle Analyse Ytd et coller la selction sur 1ère cellule vide
Workbooks.Open Filename:= _
"D:\NCR Data\Stats CA\Matrice BW\modèles\Modèle RRV Analyse Ytd.xls"
Sheets("DATA vs N-1").Activate
Range("a1").Select
Selection.PasteSpecial Paste:=xlPasteValues
Application.CutCopyMode = False
'Actualiser les rapports
Sheets(1).RefreshAll
Si quelqu'un a une idée ou une piste, je suis on ne peut plus preneur.. 🙂
Re : VBA - Accéder au premier onglet sans le nommer ???
Bonjour,
Ne sachant pas quelles feuilles contiennent un TCD
dans le module de Thisworkbook
Code:
Private Sub Workbook_SheetActivate(ByVal Sh As Object)
If ActiveSheet.PivotTables.Count > 0 Then
For Each TCD In ActiveSheet.PivotTables
TCD.RefreshTable
Next
End If
End Sub
Re : VBA - Accéder au premier onglet sans le nommer ???
Re
comprends pas trop, la methode "RefreshAll" fonctionne chez moi (Excel 2003). Le code "ThisWorkbook.RefreshAll" actualise tous les TCD du classeur où se trouve la macro. A priori, cette methode s'applique à un classeur et non à une feuille. Pour un autre classeur, il faut préciser le nom...
Re : VBA - Accéder au premier onglet sans le nommer ???
re le fil,
Victoire... ça fonctionne... 🙂🙂🙂
La vérité était contenue dans le message de Pierrot93!
"Le code "ThisWorkbook.RefreshAll" actualise tous les TCD du classeur où se trouve la macro"
En effet, ma macro est enregistrée dans le fichier où se trouve la base de données. Et je lui demande d'actualiser les TCD du fichier modèle, une fois l'onglet de la base de données collé.
Mon code est donc :
Code:
'Actualiser les rapports
Sheets(1).Select
Workbooks("Modèle RRV Analyse Ytd.xls").RefreshAll
et là ça fonctionne nickel... à une vitesse foudroyante!!! 😀
Un grand merci à vous tous pour votre aide déterminante (une fois encore... 🙂)
Re : VBA - Accéder au premier onglet sans le nommer ???
bonjour, je debute totalement dans le vba mais j ai une petite question
j ai codé ceci , mais le probleme c'est que effectivement sur ma 1ere feuille le nom de la feuille correspond bien à ma cellule G6 mais impossible de passer sur une autre feuille, comment je peux faire?
- Navigue sans publicité - Accède à Cléa, notre assistante IA experte Excel... et pas que... - Profite de fonctionnalités exclusives Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel. Je deviens Supporter XLD