Ceci est une page optimisée pour les mobiles. Cliquez sur ce texte pour afficher la vraie page.

VBA - Accéder au premier onglet sans le nommer ???

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 !

La braise

XLDnaute Occasionnel
Bonjour à tous,

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.

Bonnes fêtes de fin d'année...
 
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).

Espérant avoir répondu.

Cordialement.

Bonjour porcinet82,

Damned, tu m'as grillé.

Sans rancune.
 
Re : VBA - Accéder au premier onglet sans le nommer ???

Bonjour Labraise, Papou net, Re Romain

tu peux également utiliser la ligne de code ci dessous afin d'actualiser tous tes TCD d'un classeur :

code à placer dans le classeur concerné.
Code:
ThisWorkbook.RefreshAll

bonne journée.
@+
 
Re : VBA - Accéder au premier onglet sans le nommer ???

Merci à tous pour toutes ces pistes.

Je teste tout ça aujourd'hui et je vous tiens au courant sur la solution qui dans mon cas est la plus efficace (càd rapide! 🙂🙂🙂)
 
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.. 🙂

D'avance merci à tous.
 
Re : VBA - Accéder au premier onglet sans le nommer ???

re,

Et bien apres ton 'Actualiser les rapports, tu peux utiliser :
Code:
Sheets(1).Select
ThisWorkbook.RefreshAll

Non ?

La commande Sheets(1).Select va toujours te selectionner la feuille qui se trouve en première position dans ton classeur.

@+
 
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
A+
kjin
 
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...

Code:
Workbooks("nomduclasseur.xls").RefreshAll

ce classeur doit être ouvert.

bon après midi.
@+
 
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?

Option Explicit
Sub Macro1()

Dim pt As PivotTable

Dim ws As Worksheet

For Each ws In ThisWorkbook.Worksheets

ActiveSheet.Name = Range("g6").Value


Next ws

End Sub
 
Re : VBA - Accéder au premier onglet sans le nommer ???

Bonjour,
essaye peut être ceci :
Code:
Dim ws As Worksheet

For Each ws In ThisWorkbook.Worksheets

ws.Name = ws.Range("g6").Value


Next ws

bonne journée
@+
 
- 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

Discussions similaires

C
Réponses
23
Affichages
4 K
Charles78
C
M
Réponses
2
Affichages
2 K
G
Réponses
0
Affichages
925
george
G
Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…