Excel - Interdire le déplacement d'une feuille [Résolu]

Signaler
Messages postés
8
Date d'inscription
samedi 13 mars 2004
Statut
Membre
Dernière intervention
6 mars 2009
-
Messages postés
8
Date d'inscription
samedi 13 mars 2004
Statut
Membre
Dernière intervention
6 mars 2009
-
Bonjour,
je souhaite interdire la changement d'index d'une feuille, donc pas de déplacement, tout en laissant la possibilité de créer d'autres feuilles qui pourraient venir derrière celles existantes.
Je ne peux pas protéger la structure du classeur puisque cela empeche de créer d'autres feuilles.
Je n'ai pas trop d'idées et je sais pas si c'est réalisables.
Merci de bien vouloir me renseigner.

7 réponses

Messages postés
443
Date d'inscription
mardi 27 mars 2007
Statut
Membre
Dernière intervention
1 mars 2011
2
Salut,
Il ne doit pas y avoir de place pour le "Mais ça devrait arriver assez rarement !"

Dans "Thisworkbook" au niveau de "Workbook_BeforeSave" stock dans une variable la feuille active puis sélectionne la feuille "A ne pas déplacer"
Cette sélection effectuera le code de "Worksheet_Activate"
Tu peux aussi faire au niveau de "Workbook_Open"
Mais pas au niveau des 2 ce qui serait superflux

Cliquer "Réponse Acceptée" Quand La Réponse Est OK
JML. Partageons notre savoir et nos acquis
Messages postés
443
Date d'inscription
mardi 27 mars 2007
Statut
Membre
Dernière intervention
1 mars 2011
2
Le code ci-dessous est à coller au niveau de la feuille ne devant pas être déplacée
Dans l'exemple le Nom de la feuille est "Ne pas déplacer" ile faut bien eevidemment le remplacer par le nom qui va bien
Merci de me tenir informé de ton état de liesse après tests

Option Explicit
Dim Controle_OK As Boolean



Private Sub Worksheet_Activate()
  If Controle_OK = False Then Sheets("Ne pas Déplacer").Move Before:=Sheets(1)
End Sub



Private Sub Worksheet_DeActivate()
Dim I, Keep_ActiveSheet
  If Controle_OK = True Then
    Controle_OK = False
    Exit Sub
  End If
  Keep_ActiveSheet = ActiveSheet.Name
  For I = 1 To Sheets.Count
    If Sheets(I).Name = "Ne pas déplacer" Then
      Controle_OK = True
      Sheets(I).Move Before:=Sheets(1)
      Exit For
    End If
  Next I
  Worksheets(Keep_ActiveSheet).Select
End Sub






Cliquer "Réponse Acceptée" Quand La Réponse Est OK
JML.

 Partageons notre savoir et nos acquis
Messages postés
443
Date d'inscription
mardi 27 mars 2007
Statut
Membre
Dernière intervention
1 mars 2011
2
Bonjour,
Je n'ai jamais trouvé dans excel, concernant la gestion des feuilles, autre chose que sur l'insertion de nouvelle feuille.


Concernant la supopression et le déplacement ... Rien
Cette opération lorsqu'elle est effectuer n'est même pas annulable

Maintenant en jouant sur l'insertion, tu peux imposer qu'elle le soit, créée, après celle dont elle ne doit pas être avant (j'adore)
Mais tu n'empêchera pas le déplacement manuel

Par contre tu peux controler au moment ou la feuille perrd le focus qu'elle est bien avec le bon index
Si Non alors tu la déplace, par code, à la bonne place
A mon avis ça devrait le faire

.</gras> Partageons notre savoir et nos acquis</gras>
Messages postés
443
Date d'inscription
mardi 27 mars 2007
Statut
Membre
Dernière intervention
1 mars 2011
2
Patience !!! Je le tiens ... je te l'envoie ... Bien que je ne te cache pas que je ne vois pas le but de conserver un index à une feuille
JML. Partageons notre savoir et nos acquis
Messages postés
8
Date d'inscription
samedi 13 mars 2004
Statut
Membre
Dernière intervention
6 mars 2009

Ca marche très bien. C'est nickel.
Le seule souci que je peux avoir, c'est si la feuille est selectionné puis déplacée et que le fichier est enregistré. Puisque entre le déplacement et l'enregistrement, la feuille n'est ni activée (elle l'est dèjà) ni desactivée, donc pas de contrôle. Mais ça devrait arriver assez rarement ! Je te remercie !
Messages postés
8
Date d'inscription
samedi 13 mars 2004
Statut
Membre
Dernière intervention
6 mars 2009

En fait, le but de la manip':

On est plusieurs à entrer des données pour différentes activités d'une asso' dans différents fichiers excel, les 3 premières feuilles contiennent un tableau identique pour chaque "utilisateur".
J'ai dèjà un autre classeur qui fait le rassemblement (récupération des infos dans chaque classeur puis copie) sous VBA, mais pour faire fonctionner la macro dans ce classeur global, les 3 premières feuilles de chaque classeur doivent avoir la même strucutre !!!
Et les différents pôles qui remplissent ces classeurs doivent frequement ajouter quelques feuilles de commentaires, ou de tableau supplémentaire...
Mais la ça devrait aller nickel.
Messages postés
8
Date d'inscription
samedi 13 mars 2004
Statut
Membre
Dernière intervention
6 mars 2009

Bien vu, ca marche sans pb !

Merci à toi.