Empêcher insertion/suppression lignes/colonnes

peternewman007

XLDnaute Nouveau
Bonjour,

Je souhaiterais empêcher les utilisateurs d'insérer/supprimer des lignes/colonnes tout en laissant la modification des cellules et l'accès aux combobox possibles.

Je m'explique..
J'ai inséré le code suivant :
Private Sub Workbook_Open()
Sheets("Feuil1").Protect Contents:=True, AllowInsertingColumns:=False, AllowInsertingRows:=False, _
AllowDeletingColumns:=False, AllowDeletingRows:=False
End Sub
.

Mais malheureusement il m'affiche un code erreur 400.

Des pistes pour résoudre mon souci?

Merci d'avance,

Peter
 

Dranreb

XLDnaute Barbatruc
Re : Empêcher insertion/suppression lignes/colonnes

Bonjour
Je pense que c'est ça qui nous déclenche le code erreur 400.
Comment ça vous "pensez" ? On est toujours sûr de l'instruction qui plante puisque elle est surlignée.

Pour l'erreur 400 l'aide vba me dit :
[h=1]Feuille déjà affichée; impossible d'afficher modalement (Erreur 400)[/h]
Vous ne pouvez pas utiliser la méthode Show pour afficher une feuille en tant que feuille modale si elle est déjà visible. La cause de cette erreur et la solution pour la corriger sont les suivantes :

  • Vous avez essayé d'appliquer à une feuille déjà visible la méthode Show avec l'argument style égal à 1 (vbModal). Utilisez l'instruction Unload ou la méthode Hide sur la feuille avant d'essayer de l'afficher en tant que feuille modale.
 

Staple1600

XLDnaute Barbatruc
Re : Empêcher insertion/suppression lignes/colonnes

Bonsoir à tous

Je vais fouiller dans l'ancienne discussion mais quelle suggestion me fais-tu Staple1600 ?
La seule suggestion que je ferai, c'est de ne pas empêcher les utilisateurs puisque ils leur suffit d'ouvrir le classeur sans activer les macros.
Cela implique une autre façon d'utiliser un classeur à plusieurs mais ceci est une autre histoire.
 

Si...

XLDnaute Barbatruc
Re : Empêcher insertion/suppression lignes/colonnes

Salut (ne serait-ce pour Staple qui aime bien me remonter les bretelles)

...sinon, pour persister dans cette voie pourtant pavée de bonne intentions (ça c'est de moi :eek:)...

Pour une fois d'accord avec le sus-nommé :D, tu vas vers de grosses désillusions voire de gros déboires.
Mais on ne peut jurer de rien, tu pourras peut-être trouver quelqu'un pour assurer le SAV.

Bon courage pour la suite.
 

Staple1600

XLDnaute Barbatruc
Re : Empêcher insertion/suppression lignes/colonnes

Bonsoir Si...

[aparté]
Des bretelles SI... sans pé, normal pour un élagueur de code (comme tu t'es récemment défini)
NB: C'est plus de l'asticotage bon enfant que du remontage de bretelles, non ?
Et tu sais me rendre la pareille, non ? ;)
[/aparté]

Pour la question, il y a pléthore d'exemples de protection de feuilles par VBA dans les archives du forum.
Mais qui dit VBA, dit toujours le bémol de pouvoir ouvrir le classeur sans activer le macros et de ne pas se préoccuper d'éventuels mots de passe (puisque là aussi, pléthore d'exemple sur le web pour déprotéger un classeur contre son gré)
 
Dernière édition:

peternewman007

XLDnaute Nouveau
Re : Empêcher insertion/suppression lignes/colonnes

Bonjour à tous,

Je suis bien d'accord avec vous que ce n'est pas encore la solution miracle, mais les feuilles où je ne veux pas que les lignes/colonnes soient ajoutées/supprimées sont en verryhidden tant que la personne n'a pas accepté les macros et n'a pas cliqué sur le bouton d'accès.

Mais toujours en réflexion pour une autre solution.

Peter
 

Tibo62

XLDnaute Occasionnel
Re : Empêcher insertion/suppression lignes/colonnes

Bonjour à tous

Je ne sais pas si cela pourra t'aider mais tu peux "tricher" en utilisant cette macro à adapter à ton besoin bien sur :

Private Sub Workbook_SheetChange(ByVal Sh As Object, ByVal Target As Range)
If (Sh.Name = "Accueil" And Target.Row <= 3) Then
If (Target.Address = Target.EntireRow.Address) Then
With Application
.EnableEvents = False
.Undo
MsgBox "Vous ne pouvez pas effacer cette ligne!", 16
.EnableEvents = True
End With
Else
Exit Sub
End If
End If
End Sub


J'ai tester sur ton fichier test ça fonctionné parfaitement.
ensuite tu peux changer la valeur de la ligne car la elle empeche les suppressions et ajout de ligne de la ligne 1 à 3 ensuite si tu veux le faire sur les colonnes :
remplacer: If (Target.Address = Target.EntireRow.Address) Then........ par If (Target.Address = Target.EntireColumn.Address) Then
 

Dranreb

XLDnaute Barbatruc
Re : Empêcher insertion/suppression lignes/colonnes

Bonjour.

Ne s'agirait-t-il pas d'un classeur partagé ? Je ne paux pas le voir tant qu'il est en lecture seule, et je n'ai pas envie de l'enregistrer.
Les fonctionnalités suivantes ne peuvent pas être modifiées une fois que le classeur est partagé : cellules fusionnées, mises en forme conditionnelles, validation de données, graphiques, images, objets y compris les objets dessinés, liens hypertexte, scénarios, plans, sous-totaux, tableaux de données, rapports de tableau croisé dynamique, protection de classeur et de feuille de calcul et macros.
En tout cas chez moi toute tentative d'exécuter les méthode Protect ou Unprotect sur des Worksheet se solde par :
Erreur d'exécution '32809':
Erreur définie par l'application ou par l'objet
 
Dernière édition:

Discussions similaires

Réponses
2
Affichages
837

Statistiques des forums

Discussions
312 322
Messages
2 087 285
Membres
103 507
dernier inscrit
tapis23