Bonjour à toutes et à tous,
dans un fichier contenant des tableaux croisés dynamiques, je cherche à verrouiller l’actualisation d’une feuille sur deux.
Or, quand je lance la routine suivante, je me rends compte que ça applique l’instruction à toutes les feuilles.
Pourtant, je m’assure bien que ma boucle balaie une feuille sur deux et que .PivotCache.EnableRefresh = false ne s’applique donc que pour une feuille sur deux, mais au final, tout le fichier voit l’actualisation verrouillée.
Même phénomène quand je passe de false à true : ce n’est pas une sur deux mais toutes les feuilles qui se trouvent déverrouillées et autorisent l’actualisation.
Je précise que quand je démarre, toutes les feuilles peuvent être actualisées (i.e. PivotCache.EnableRefresh est sur true)
Qu’est-ce qui déraille dans mon code ?
Merci d’avance pour votre perspicacité
__________________________________________________________________________________________
Sub z_Autoriser_actualisation_une_feuille_sur_deux()
Dim sh As Long
Dim PT As PivotTable
'Application.ScreenUpdating = False ' suspendu pour voir si ça marche
For sh = 1 To Sheets.Count Step 2 ' step 2 pour traiter une feuille sur deux
Sheets(sh).Activate ' on se positionne sur la feuille
If ActiveSheet.PivotTables.Count > 0 Then ' pour éviter le plantage si pas de tcd
MsgBox "Je traîte la feuille n° " & sh ' pour s'assurer qu'on balaie bien seulement 1 feuille sur 2
With ActiveSheet.PivotTables(1)
.PivotCache.EnableRefresh = False ' on interdit la mise à jour pour la feuille en cours
End With
End If ' fin du test si on a tcd
Next ' on saute à la feuille suivante
'Application.ScreenUpdating = True ' suspendu
End Sub
dans un fichier contenant des tableaux croisés dynamiques, je cherche à verrouiller l’actualisation d’une feuille sur deux.
Or, quand je lance la routine suivante, je me rends compte que ça applique l’instruction à toutes les feuilles.
Pourtant, je m’assure bien que ma boucle balaie une feuille sur deux et que .PivotCache.EnableRefresh = false ne s’applique donc que pour une feuille sur deux, mais au final, tout le fichier voit l’actualisation verrouillée.
Même phénomène quand je passe de false à true : ce n’est pas une sur deux mais toutes les feuilles qui se trouvent déverrouillées et autorisent l’actualisation.
Je précise que quand je démarre, toutes les feuilles peuvent être actualisées (i.e. PivotCache.EnableRefresh est sur true)
Qu’est-ce qui déraille dans mon code ?
Merci d’avance pour votre perspicacité
__________________________________________________________________________________________
Sub z_Autoriser_actualisation_une_feuille_sur_deux()
Dim sh As Long
Dim PT As PivotTable
'Application.ScreenUpdating = False ' suspendu pour voir si ça marche
For sh = 1 To Sheets.Count Step 2 ' step 2 pour traiter une feuille sur deux
Sheets(sh).Activate ' on se positionne sur la feuille
If ActiveSheet.PivotTables.Count > 0 Then ' pour éviter le plantage si pas de tcd
MsgBox "Je traîte la feuille n° " & sh ' pour s'assurer qu'on balaie bien seulement 1 feuille sur 2
With ActiveSheet.PivotTables(1)
.PivotCache.EnableRefresh = False ' on interdit la mise à jour pour la feuille en cours
End With
End If ' fin du test si on a tcd
Next ' on saute à la feuille suivante
'Application.ScreenUpdating = True ' suspendu
End Sub