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

XL 2016 Problème après avoir protéger une feuille

loreak

XLDnaute Nouveau
Bonjour,

Ce message d'erreur s'affiche lorsque j'ouvre mon fichier Excel :
Je voudrais supprimer ce message lors de l'ouverture
Le problème vient d'une feuille ou il y a plusieurs TCD, lorsque que je verrouille la feuille je coche bien "Utiliser des tableaux croisés dynamiques et Pivochart" (Voir ci dessous)



Même les macros qui permet de verrouillé la feuille avec un Bouton utilise ce code " ActiveSheet.Protect Password:="****", Contents:=True, AllowUsingPivotTables:=True"
Mais le pb persiste.
Si quelqu'un à une idée je suis preneur

Merci d'avance
 

Phil69970

XLDnaute Barbatruc
@loreak

Le principe général :

VB:
'1er cas on gère toutes les feuilles en même temps
Sub Blocage() 'Protege toutes les feuilles en même temps
Dim ws As Worksheet
For Each ws In Worksheets
    ws.Protect "toto"   '(MdP à adapter)
Next ws
End Sub

Sub Deblocage() 'Déprotege toutes les feuilles en même temps
Dim ws As Worksheet
For Each ws In Worksheets
    ws.Unprotect "toto"   '(MdP à adapter)
Next ws
End Sub


'************
'2eme cas on gère feuille par feuille
Sub blabla()
'On déprotège LA feuille et seulement celle que l'on souhaite (nom de la feuille à adapter)
Worksheets("Feuil1").Unprotect Password:="toto"   '(MdP à adapter)

'On exécute le code....
'blablabla

'On reprotège LA feuille (nom de la feuille à adapter)

Worksheets("Feuil1").Protect Password:="toto", DrawingObjects:=False, Contents:=True, Scenarios:=True, AllowFiltering:=True '(MdP à adapter)
End Sub

Le plus fréquent est de faire avec la solution 2 car si tu as 20 feuilles il est inutile de traiter les 20 feuilles si tu dois intervenir que sur une feuille....

Pour info :
1)Avant de te lancer dans la protection/déprotection assure toi que ton code fonctionne correctement
2)Pense bien qu'excel offre une protection illusoire.

Merci de ton retour
 

loreak

XLDnaute Nouveau
Bonjour à tous,

@Phil69970
le problème n'est pas le code, il fonctionne bien (code-ci dessous)
Code permettant de déprotéger la feuille, trier les données de TCD et de reprotéger la feuille.

VB:
Sub TriTotalGénéral5()
    Dim PvT As PivotTable
    Dim c As Range
    Dim idx As Variant
        Dim PvT1 As PivotTable
    Dim c1 As Range
    Dim idx1 As Variant
    With ThisWorkbook.Sheets("Bilan Mois")
    
ActiveSheet.Unprotect "1234"
        Set PvT = .PivotTables("Tableau croisé dynamique4")
        
        ' Trouver l'index de colonne de Total général
        idx = Application.Match("Total général", PvT.ColumnRange.Rows(2), 0)
        
        ' Si trouvé
        If Not IsError(idx) Then
        
        ' Récupérer la cellule correspondante
        Set c = PvT.ColumnRange.Cells(idx)
        
        ' Puis trier avec comme clef la première cellule de valeur
        PvT.DataBodyRange.Sort Key1:=c.Offset(2), Order1:=xlDescending, Type:=xlSortValues
        
        End If
    End With

    
    With ThisWorkbook.Sheets("Bilan Mois")
    

        Set PvT1 = .PivotTables("Tableau croisé dynamique11")
        
        ' Trouver l'index de colonne de Total général
        idx1 = Application.Match("Total général", PvT1.ColumnRange.Rows(2), 0)
        
        ' Si trouvé
        If Not IsError(idx1) Then
        
        ' Récupérer la cellule correspondante
        Set c1 = PvT1.ColumnRange.Cells(idx1)
        
        ' Puis trier avec comme clef la première cellule de valeur
        PvT1.DataBodyRange.Sort Key1:=c1.Offset(2), Order1:=xlDescending, Type:=xlSortValues
        
        End If
    End With
    
ActiveSheet.Protect Password:="1234", DrawingObjects:=True, Contents:=True, Scenarios:=True, AllowUsingPivotTables:=True

End Sub

@eriiic
j'ai essayé ta proposition mais ca ne fonctionne pas
 

Discussions similaires

Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…