Protection et mise a jour

S

stéphane

Guest
bonjour,

je suis devant un dileme. Savez vous comment je pourrais protéger un ensemble de feuilles regroupant des tableaux dynamiques tout en pouvant actualiser ces feuilles.

Pour être plus clair, afin d'éviter une faute via des utilisateurs, j'aimerais pouvoir protéger les cellules et les tableaux dynamiques tout en ayant une interface utilisateur. Cet interface permettrai l'actualisation des données dans les tableaux dynamiques.

Le message d'erreur que j'ai actuellement est qu'il est impossible d'actualiser les données d'un tableau dynamique sur une feuille protégée.

Si je ne suis point explicite sur ma formulation de ma requête, je pourrais la re définir.

J'espere que vous pourrez me répondre a cela. Je vous remercie d'avance

Steph
 

Creepy

XLDnaute Accro
Bonjour le Forum, Stéphane,

Je ne sais pas quelle version d'Excel tu as mais à partir de la 2002 (2003 sûr !) tu peux proteger ta feuille et deproteger certaines parties pour permettre une modification partielle par un utilisateur donné.

Peut être une piste à explorer. Proteger la feuille, sauf les slicers du TCD.

Je n'ai pas essayé au boulot je n'ai que 2000 qui ne propose pas cette option.

@+

Creepy
 

Dan

XLDnaute Barbatruc
Bonjour,

Les TCD ne sont modifiables que par changement dans une base de données et ce, via une actualisation des données.
Comme tu l'as constaté ils ne peuvent être actualisés quand la feuille est protégée.
Les utilisateurs ne sauraient intervenir dans le TCD que via l'assistant ou l'ajout de champs calculés. Ecrire dans un TCD est impossible.

D'où mes questions ci-après :

1. Est-ce que tu peux autoriser l'actualisation des données ou non ? Cela me paraitrait normal de l'autoriser pour avoir toujours un TCD à jour. Dans ce cas, il suffirait de mettre à jour dès que tu accèdes à l'onglet où se trouve le ou les TCD

2. Est-ce que ce n'est pas plutôt le changement du TCD que tu souhaites ne pas autoriser ? Dasn ce cas on peut faire en sorte que l'assistant soit indisponible

A te lire

;) :)
 
S

stéphane

Guest
Merci à toi,

j'en ai oublié l'essentiel c'est vrai. J'ai Excel 2003, et pour répondre à ta question je ne vois pas d'options afin de protéger la feuille sans enlever l'option d'actualisation des données.

:eek:

Est il possible dans un second temps de créer un script d'ouverture. Je ne suis pas encore tres alaise avec cela. Mais une idée d'organigramme serait:

quand ouverture feuille
deprotéger feuille
mise a jour tableau
protéger feuille
fin

bon je ne connais pas les fonctions, si quelqu'un sait, n'hesitez pas ^^

merci encore et bonne journée
 
S

stéphane

Guest
re,

pour être plus explicite, mon projet est de la sorte:
Une base sous excel référant un certain nombre de champ que l'utilisateur Lambda utilisera.

Plusieurs feuilles relatant de cette base sous liées par des liens dynamiques et certain calcul y sont associé.

Pour éviter que l'utilisateur Lambda détériore les feuilles associées a la base, je pensais mettre des protections sur les feuilles. Mais d'apres ce que j'ai pu constaté une protection sur une feuille et une actualisation des données sur TCD sont interdites ou du moins je n'en connais pas l'astuce.

Mon but étant bien sur que l'utilisateur Lambda puisse introduire des données via la base pour ensuite actualiser les TCD uniquement sans pôuvoir supprimer un TCD ou une feuille voir meme les calculs associés sur la meme feuille.

En ce qui concerne vos réponses, je ne vois pas ou je puis cocher l'autorisation d'actualiser les données dans la protection de feuille. ce qui me parait étrange tout de meme.

Si vous savez comment je puis contourner le problème, cela me serait tres tres utile
merci d'avance
 

Dan

XLDnaute Barbatruc
Re,

1.créer un script d'ouverture : cela pourrait être une solution notamment pour actualiser le TCD. Les onglets pourraient rester visibles et le fait de cliquer sur un onglet contenant le TCD, pourrait exécuter l'actualisation automatiquement.

2. Pour éviter que l'utilisateur Lambda détériore les feuilles
Mettre une protection est une solution mais il faut savoir que cela te condamne à retenir les mots de passe et que l'on peut les faire sauter avec des programmes spécifiques.

3.cocher l'autorisation d'actualiser les données : Ne cherche pas de ce coté car il n'y a pas d'options permettant cela. Les seules possibilités sont par le clique droite dans le TCD, en affichant la barre d'outils du TCD ou via macro.

Il me semble que la meilleure solution serait de créer un TCD par macro qui serait construit à ta demande. A chaque fois que tu déciderais de voir tes résultats il te suffirait d'exécuter la macro pour afficher le résultat du TCD. Dans l'absolu on pourrait également recréer une nouvelle feuille pour placer le TCD.
Ce ci n'est qu'un proposition à analyser en fonction de ton appli et du nombre de TCD à afficher.

Vois à ce sujet l'appli que j'avais réalisée en cliquant sur ce lien : Lien supprimé

A te lire

;)
 

stéphane3879

XLDnaute Nouveau
re bonjour et encore merci a toi Dan,

j'ai regardé tes réponses et j'en ai conclue cela :
il serait surement tres judicieux d'élaborer des macros mais en soit il n'est point sur que dans un avenir proche, on ne me demande pas un autre style de tableau ou du moins d'autres résulats.

Par contre, je serais plus sur l'élaboration d'un script d'ouverture.
Pour cela, si cela ne te derange pas, pourrais tu me donner un semblant de script de ce genre ou tout simplement des sites internet ou je puis trouver les différentes fonctions ou logique de programmation de VBA.

Pour le moment je n'ai jamais utilisé ce logiciel mais d'autres similaires. Il me manque simplement un peu une aide répertoriant tout cela. et surtout les fonctions.

Je remercie d'avance pour tout cela et vous souhaites une bonne journée

Stéphane
 

Dan

XLDnaute Barbatruc
Bonsoir,

Voici une proposition.

1. Vas dans VBA par ALT + F11
2. CTRL + R pour accéder à VBA Project
3. Là double clique sur la feuille où se trouve le TCD
4. Place ces macros
Code:
Private Sub Worksheet_Activate()
'Macro par DAN pour stefane3879 - [B]Lien supprimé[/B]
Application.ScreenUpdating = False
With activesheet
.unprotect
.PivotTables('TCD').EnableWizard = False
End With
Call ActualiseTCD
Activesheet.protect
Application.ScreenUpdating = True
End Sub
Code:
Private Sub Worksheet_Deactivate()
'Macro par DAN pour stefane3879 - [B]Lien supprimé[/B]
Application.ScreenUpdating = False
Activesheet.PivotTables('TCD').EnableWizard = True
Application.ScreenUpdating = True
End Sub
5. Toujours en VBA, vas dans menu / insertion et ajoute un 'Module'
6. Le module créé te montre une fenetre vierge à droite
7. Place cette macro
Code:
Sub ActualiseTCD()
'Macro par DAN pour stefane3879 - [B]Lien supprimé[/B]
Dim PvtTable As PivotTable
With Application
.ScreenUpdating = False
.CommandBars('PivotTable').Visible = False
End With
Set PvtTable = Worksheets('Tata').Range('X').PivotTable
PvtTable.RefreshTable
Application.ScreenUpdating = True
End Sub

Avec :
TATA = le nom du TCD. A obtenir par clique droite dans le TCD, puis cliquer sur Option – le nom est placé en haut à gauche
X : la première cellule du TCD en haut à gauche

8. enregistre le tout.

Si pb n'hésite pas

;)
 

stéphane3879

XLDnaute Nouveau
héhé salut a toi psycopat d'excel, a 23h!!!!! :woohoo:

en tout cas je te remercie.

Je matte un peu la syntaxe et le deroulement du script, mais lors de la compilation une erreur est signalé sur : Sub ActualiseTCD()

je sais que je vais t'en demander un peu beaucoup mais pourrais tu me donner en francais chaque ligne de commande que tu m'as envoyé, pour comprendre ensuite le problème.

Car je ne suis pas encore familiarisé avec.
Je te remercie d'avance et si je puis t'aider plus tard, n'hesite pas

Stéphane
 

Dan

XLDnaute Barbatruc
Bonjour,

Pourrais-tu me dire où tu as une erreur ?

Vérifie :
- ton tableau croisé doit être nommé 'TCD'.
- le nom de ta worksheet où se trouve le TCD -> veille bien à ne pas mettre d'espace (au besoin mets -> '_' entre les noms)
- à Range.... remplace bien le X comme je te l'ai indiqué soit RANGE('A1') par exemple.

Pour les explications, il me faut un peu de temps pour t'écrire tout cela.

;)
 

Discussions similaires

Statistiques des forums

Discussions
312 248
Messages
2 086 594
Membres
103 250
dernier inscrit
keks974