Neutraliser "insérer lignes" et afficher une pop-up en cas d'essai

Bonjour à tous,

J'ai une liste de plusieurs dizaines de colonnes et de plusieurs milliers de lignes, 20% des colonnes contiennent des formules et il y a une douzaine de formats conditionnels qui nous permettent de gagner beaucoup de temps dans la présentation et de faire ressortir les informations les plus utiles.

Nous sommes plusieurs à actualiser ce tableau et nous devons parfois ajouter des lignes entre 2 plages de numéro. En raison de la façon dont la liste est faite, faire des insertions "pourrit" à la fois les formules et les formats conditionnels. J'ai établi une règle entre tous: insérer les lignes à la fin de la liste, leur attribuer des numéros intermédiaires et de tout réordonner en ordre croissant pour conserver la logique de formules et format conditionnels mais y'a moyen, certains continuent à utiliser l'option insertion.... Ils ne le font pas pour le plaisir d'ennuyer mais plutôt par habitude, et il faut ensuite "réparer" le tableau et selon le nombre d'insertions sauvages qui ont été faites, ça peut prendre pas mal de temps.

Ce que je cherche c'est une macro qui désactive l'option d'insérer des lignes/colonnes et au cas où quelqu'un essaie, afficher un avertissement pour lui rappeler comment il/elle doit faire pour ajouter des lignes intermédiaires.

Quelqu'un saurait m'aiguiller pour cette problématique ?

Bonjour,

Et sans VBA en passant par la protection de la feuille, il suffit de laisser tout cocher sauf "Inserer ligne" et "Insérer" Colonne".

Ca me parait plus simple, non ?

**EDIT**

Ah par contre il n'y a pas la Popup, je n'avais pas vu cette demande.

11test.xlsx (9.29 Ko)

Bonjour,

Le problème est que tu souhaites interdire l'insertion de ligne mais autoriser à certains endroits en fonction de la fin d'une liste

qui est donc un endroit aléatoire non connu d'avance, je suppose car dépend de la longueur de la liste.

désactiver l'insertion n'est pas forcément le problème mais c'est plutôt la réactivation de l'insertion à des endroits aléatoires pour nous.

Bonjour Paulox,

Le problème de protection de la feuille, c'est qu'à la première tentative, on va gentiment me demander de revenir en arrière, je souhaite que la chose soit plus pédagogique pour que tout le monde comprennent bien que c'est modifier très légèrement les habitudes pour gagner beaucoup de temps plus tard (une fois j'ai du éliminer plus 700 formats conditionnels à cause des insérer/copier/coller).

Xmenpl, c'est pas tout à fait ça, je m'explique mieux:

La première colonne est une suite de Nº de 1 jusqu'à ou nous avons besoin.

Imaginons qu'un utilisateur ait besoin de rajouter des références entre le numéro 50 et 51, il va de suite sélectionner un certain nombre de lignes, 16 en général, pour faire une insertion.

La solution la plus clean est d'aller en fin de liste (j'ai mis un bouton qui permet d'y aller en 1 clic), de rajouter des numéros style 50,01, 50,02, ... et de réordonner la première colonne du coup pas de problème avec les formules et les formats conditionnels.

Comme nous n'utilisons ce type de liste qu'a chaque nouveau gros projet et qu'il peut se passer plusieurs semaines voire plusieurs mois entre 2, la mécanique n'est pas automatique et je le comprends.

La désactivation de l'insertion serait totale pour cette feuille.

Peut être qu'il faudrait alors prévoir un onglet spécifique pour la saisie ou un formulaire de saisie.

avec un bouton de validation qui ajouterai par macro la ligne dans la base et réorganiserai la liste automatiquement ?

Sinon juste à titre informatif mais sans interdiction :

en vba dans le worsheet de la feuille concernée :

Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Rows(1).Cells.Count = Columns.Count Then MsgBox "Vous avez utilisez la fonction insertion/suppression de lignes merci de verifier que vous êtes à la fin de la liste ( CTRL Z pour annuler )"
End Sub

Salut Orizhial,

Salut l'équipe,

ainsi, sans doute, tout en autorisant la modification des données existantes.

Je vais peaufiner pour les avertissements que tu souhaites même si Excel se chargera bien de les avertir en cas d'essai interdit.

Private Sub Worksheet_SelectionChange(ByVal Target As Range)
'
With ActiveSheet
    .Unprotect
    .Cells.Locked = False
    If Target.Row > Range("A" & Rows.Count).End(xlUp).Row And Target.Column > Cells(1, Columns.Count).End(xlToLeft).Column Then
        .Protect AllowInsertingColumns:=True, _
            AllowDeletingColumns:=True, _
            AllowInsertingRows:=True, _
            AllowDeletingRows:=True
    ElseIf Target.Row > Range("A" & Rows.Count).End(xlUp).Row And Target.Column <= Cells(1, Columns.Count).End(xlToLeft).Column Then
        .Protect AllowInsertingColumns:=False, _
            AllowDeletingColumns:=False, _
            AllowInsertingRows:=True, _
            AllowDeletingRows:=True
    ElseIf Target.Column > Cells(1, Columns.Count).End(xlToLeft).Column And Target.Row <= Range("A" & Rows.Count).End(xlUp).Row Then
        .Protect AllowInsertingColumns:=True, _
            AllowDeletingColumns:=True, _
            AllowInsertingRows:=False, _
            AllowDeletingRows:=False
    Else
        .Protect AllowInsertingColumns:=False, _
            AllowDeletingColumns:=False, _
            AllowInsertingRows:=False, _
            AllowDeletingRows:=False
    End If
End With
'
End Sub

A+

Salut curulis57,

C'est déjà un plus qui va permettre de limiter la casse, à chaque retouche sauvage c'est l'anarchie et toutes les formules ne sont pas forcément compatible avec un sélectionner/glisser que je vais finir par solutionner dans le futur, je manque juste de temps pour ça.

Merci en tout cas.

Rebonjour curulis57,

Je viens de tester la macro en "conditions réelles", ça fonctionne mais...

Le tableau final a une vingtaine de colonnes (dont 8 de formules) et entre 1000 et 2000 lignes habituellement.

Quand la macro est présente, la sélection d'une cellule est suivi d'un temps variable de "réflexion" du PC de 1 a 2 secondes et j'ai fait le test sur une liste nouvelle qui a moins de 300 lignes pour le moment.

Le travail de remplissage, vérification, changements divers, ... s'étale sur au minimum 1 semaine quand tout va très bien et que nous avons toutes les infos, c'est plutôt 2 à 6 semaines dans les conditions habituelles, ce surplus de temps de réflexion n'est pas gérable, connaitrais-tu un moyen d'eviter ce problème ?

Salut Orizhial,

Changer d'ordinateur!

Sans rire, j'ai "créé" un tableau de 3000 lignes sur 1000 colonnes : c'est vrai qu'il y a un instant de latence mais insignifiant sur ma machine (un bête portable i5) et même en tapant à la volée des deux mains (chiffres et ENTER), rien n'a empêché la MAJ des cellules sélectionnées.

Je n'ai rien trouvé sur le Net pour ce souci.

Désolé!

A+

On est d'accord sur ce point, je me tue à l'expliquer à mon chef de service mais comme tout rentre dans un plan de rénovation global, va falloir que j'attende 1 an dans le meilleur des cas !

Je passe le sujet en résolu.

Courage, Force et Honneur!

A+

Rechercher des sujets similaires à "neutraliser inserer lignes afficher pop cas essai"