Bloquer des insertions de lignes dans une plage de cellules

dans une plage de cellules (de la ligne 5 à ligne 10) , je veux pouvoir modifier les cellules comme je le veux (les remplir les supprimer, les modifier) mais je ne veux pas insérer de lignes ni en supprimer.

par contre, je peux insérer ou supprimer des lignes avant (de la ligne 1à 4) ou après( de la ligne11 à ...) et modifier les cellules .

merci pour votre aide

Bonjour,

Pour commencer, un petit bonjour ne coûte rien et fait toujours plaisir.

Merci également de compléter votre profil pour indiquer votre version d'excel.

Bonjour,

Un petit fichier anonyme aurait été le bien venu

bonjour

version de excel : Microsoft® Excel® pour Microsoft 365 MSO (Version 2410 Build 16.0.18129.20200) 64 bits

ci-joint fichier exemple - merci pour votre aide

23exemple-1.xlsx (9.19 Ko)

Je ne vois pas très bien quel est votre problème
Rien ne vous empêche d'insérer, de supprimer et de modifier des cellules dans vos lignes en vert de votre feuille sans modifier qoi que ce soit dans les lignes en jaune et en gardant l'ordre

Toutefois, dans le menu, onglet "Révision" vous avez la possibilité de protéger la feuille ou une partie de la feuille. Est ce que cela pourrait vous convenir ?

merci d'avoir pris le temps de regarder si vite.

cela ne marche pas avec la protection de la feuille (ou du moins selon les essais que j'ai fait)

c'est un fichier à destination de d'autres personnes et je ne veux pas que ces autres personnes puissent insérer ou supprimer des lignes dans la plage de cellule en jaune (mais elles peuvent modifier les cellules de la plage en jaune).

dites moi si cela n'est pas clair.

Question :

Faut-il obligatoirement que la zone en jaune soit située entre les lignes 5 et 10 ?

Peut elle commencer à la ligne 1 ?

une petite idée pour interdire d'insérer une ligne entre la ligne 5 et 10, mais si vous insérez une ligne au préalable avant la ligne 5, ça ne marche plus car la zone jaune ne commencera plus à la ligne 5 mais à la ligne 6

If ActiveCell.Row >= 5 And ActiveCell.Row <= 10 Then
    Exit Sub
End If
ActiveSheet.Unprotect "1"
ActiveCell.EntireRow.Insert
ActiveSheet.Protect "1", True, True, True

idée à approfondir

réponse à la question :

Faut-il obligatoirement que la zone en jaune soit située entre les lignes 5 et 10 ?

Peut elle commencer à la ligne 1 ?

non la plage jaune ne commencera jamais à la ligne 1, ni à la ligne 2. Par contre la la plage jaune peut être plus importante et ne commence pas obligatoirement à la ligne 5. par contre la plage jaune comporte au moins 5 lignes

Bonsoir et bonne année à tous ,

Un essai dans le fichier joint.

Pour interdire l'insertion ou la suppression d'une ou plusieurs lignes complètes dans la plage 5:10, on a créé le nom "PasTouche" avec comme définition : =Feuil1!$5:$10 puis placer le code qui suit dans le module de la feuille Feuil1 :

Private Sub Worksheet_Change(ByVal Target As Range)
   If Me.Range("Pastouche").Rows.Count <> 6 Then Application.Undo
End Sub
image

Quand à l'ordre des lignes, étant donné qu'on peut changer toutes les valeurs des lignes concernées, je ne vois pas (pour l'instant) comment empêcher d'intervertir les valeurs de deux lignes s'il n'y a pas au moins une colonne avec des valeurs constantes et distinctes.

J'ai trouvé un truc que je ne trouve pas formidable mais qui fonctionne
Il faut protégé la feuille (le mot de passe que j'ai choisi est 1). Il faut choisir une ligne où l'insertion se fera si on n'est pas dans la plage jaune
Le bouton "Insérer ligne" doit être cliqué deux fois de suite

J'ai solutionné le fait que la plage jaune est amovible et de taille variable en repérant les numéros de sa première et dernière lignes, donc selon mon code il faudra toujours que dans la colonne(A), la cellule ("A" & premièrelignejaune) contienne toujours un "a" et la cellule ("A" & dernièrelignejaune) contienne toujours un f. Maintenant s'il y a plus de 5 lignes dans la plage jaune le code sera à modifier (déterminer le numéro de la dernière ligne jaune)
Une solution à approfondir pour éviter ce petit problème, déterminer la première ligne et la dernière ligne en utilisant la couleur ...... à voir

8exemple-1-7.xlsm (21.70 Ko)

Bonsoir mafraise,

Je me suis créé quelques difficultés à trouver une solution qui ne me plait pas beaucoup
Ta méthode est ingénieuse, mais tu te heurtes au même problème que moi car la zone jaune peut être modifiée donc =Feuil1!$5:$10 est à revoir et à paraméter sous une forme =Feuil1!$debut$fin ..... si je peux me permettre ......... !!!!

Bonne soirée ma fraise et au plaisir

Merci pour vos recherches

mais la colonne A, première ligne la zone jaune ne contient pas forcement des lettes par contre il ne faut pas en changer l'ordre.

a titre info j'ai essayé avec chatgpt mais cela ne donne rien.

Bonjour,

mais la colonne A, première ligne la zone jaune ne contient pas forcement des lettes

Certes, mais il faudrait se servir du contenu de ces cellules pour pouvoir les repérer et distinguer par rapport aux autres (celles qui ne sont pas dans la plage jaune)

Mon but étant de déterminer les valeurs des paramètres "debut" et "fin" de mon code, paramètres qui représentent les numéros de la première et de la dernière ligne de la plage jaune qui est, selon ce que vous avez dit, fluctuante en position et en taille

Bonjour Jacky,

si cela peut être utile, il est possible de créer une colonne (colonne A ) avec "début" dans la cellule A5 et "fin" en A10, colonne que je masquerai

le nombre de lignes exacte de la plage jaune sera de 34 (34 lignes mais il pourra peut être évolué par la suite)

merci encore pour ton aide

Non, j'ai trouvé une solution en utilisant les couleurs
Quelle que soit la position de la première ligne jaune et quelle que soit la dimension de la plage jaune, j'ai repéré les première et dernière lignes de cette plage à condition que toutes les lines de la plage soient en jaune (code couleur 65535)
En espérant que cela vous convienne

16exemple-1-7.xlsm (24.18 Ko)

Bonjour Sanzo, le Fil,

Afin de bloquer toute insertion de lignes ou suppression de lignes dans la zone choisie. Ici en cellules jaunes par exemple sur A8:Z12. À modifier selon besoin ultérieurement. En ajoutant lignes ou colonnes.

Private sub worksheet_BeforeRightClick(ByVal Target as Range, Cancel As Boolean)
If not Intersect(Target, [Block]) is Nothing then cancel = True
End sub

La zone Block s'adaptera à toute insertion de lignes ou suppression avant ou après la zone jaune définie. Par contre sur une ou plusieurs des lignes en jaune aucun menu droit n'apparaîtra pour utilisation.

Rechercher des sujets similaires à "bloquer insertions lignes plage"