Nouvelle ligne fichier protégé

Bonjour,

J'ai créé un fichier ou je protège les formules.

Ce fichier va être utilisé par quelqu'un d'autre afin qu'il ne modifie pas les formules le fichier restera protégé.

Par contre, dans la protection je permets à cette personne d'ajouter de nouvelle ligne.

Le seul problème lorsque elle ajoute de nouvelle ligne, les formules ne sont pas présentes alors que mon fichier est en format tableau.

Lorsque il n'y pas de protection et on ajoute une ligne les formules sont automatiquement présentes sur la nouvelle ligne

Quelqu'un aurait-il une solution pour cela

Cordialement

Hello,

Sans fichier, difficile mais est-que :

Tu ne peux pas étendre la protection et les formule sur la colonne ou une plage plus grande ?

Sinon peut être en jouant avec l'événement worksheet change, à chaque donnée dans une plage ou colonne prédéfini, ta plage de protection s'étend et tes formules aussi par copier/coller.

Si ça peux déjà t'aider.

Je te joins le fichier si cela peut t'aider

Donc comme tu vas constater lorsque tu enlève la protection tu peux ajouter des lignes et les formules seront présentes

Par contre avec la protection tu peux ajouter des lignes mais il n'y pas les formules

Cordialement

9test-ligne.xlsx (95.88 Ko)

Ok je crois que c'est bon , le temps d'y mettre au propre et de voir que tes formules soient bien reprises, solution sous peu.

Ok, j'ai trouvé, je ne sais pas si c'est la fatigue ou s'il y'a une erreur dans le code source de VBA de l'enregistreur de macros, entre les translates IF/SI du module de gestion de tableur, mais voilà c'est bon.

Par contre, si tu travail sur Mac, je ne sais pas si tu ne va pas avoir des bugs de compatibilité.

Mes modifs tableurs :

> J'ai modifié ta formule en colonne Numéro qui était fausse.

> Ajouté 2 cellules nommées en début et fin de tableau, pour savoir où se trouve le tableau, pour recoller les formules et seulement sur le tableau, quand l'user y fait un clic insertion ligne.

> Désactivé le double clic dans la colonne A du tableau pour éviter des événements à blanc de worksheet_change.

> J'ai utilisé les @Nom de tableau pour les calculs, au lieu des adresses de cellules, j'avais beaucoup trop de problèmes à trouver une variable flexible à l'intérieur des formules.

Il désactive la protection / MàJ le tableau pour insérer les formules / réactive la protection

Voilà le code et en PJ ton fichiers avec mes modifs :

Private Sub Worksheet_Change(ByVal Target As Range)

'Si modification entre le début et la fin du tableur en colonne A, alors
If Not Intersect(Target, Range("debut", "fin")) Is Nothing Then
'Test pour savoir où est la target
quefaitvba = Target.Address
      'désactivation de la protection feuille pour recoller les formules
      ActiveSheet.Unprotect

      'Reindexation formule colonne : A Numéro =LIGNE([@Numéro])-1
      Range("Table1[Numéro]").FormulaR1C1 = "=row(Table1[@Numéro])-1"
      'Reindexation formule colonne : F heures/jour
      Range("Table1[heures/jour]").FormulaR1C1 = "=Table1[@taux]*8.18"
      'Reindexation formule colonne : M Absence Total =SOMME([@maladie];[@[accident prof]];[@[accident non prof]];[@maternité];[@paternité];[@[Autre absence]])
      Range("Table1[Absence Total]").FormulaR1C1 = "=Table1[@maladie] + Table1[@[accident prof]] + Table1[@[accident non prof]] + Table1[@maternité] + Table1[@paternité] + Table1[@[Autre absence]]"
      'Reindexation formule colonne : N Absence Maladie et Accident  =[@maladie]+[@[accident prof]]+[@[accident non prof]]
      Range("Table1[[Absence Maladie et Accident ]]").FormulaR1C1 = "=Table1[@maladie]+Table1[@[accident prof]]+Table1[@[accident non prof]]"
      'Reindexation formule colonne : O heure de travail  =[@[heures/jour]]*252
      Range("Table1[heure de travail]").FormulaR1C1 = "=Table1[@[heures/jour]]*252"
      'Reindexation formule colonne : P taux d'absence =SI([@[heure de travail]]=0;"";[@[Absence Total]]/[@[heure de travail]])
      Range("Table1[taux d''absence]").FormulaR1C1 = "=IF(Table1[@[heure de travail]]=0,"""",Table1[@[Absence Total]]/Table1[@[heure de travail]])"
      'Reindexation formule colonne : Q Taux d'absence Maladie Accident =SI([@[heure de travail]]=0;"";[@[Absence Maladie et Accident ]]/[@[heure de travail]])
      Range("Table1[Taux d''absence Maladie Accident]").FormulaR1C1 = "=IF(Table1[@[heure de travail]]=0,"""",Table1[@[Absence Maladie et Accident ]]/Table1[@[heure de travail]])"
      'Reindexation formule colonne : V Bradford =SI([@[heures/jour]]=0;"";([@Micro]+[@Courte]+[@Moyen]+[@Longue])^2*(([@maladie]+[@[accident prof]]+[@[accident non prof]])/[@[heures/jour]]))
      Range("Table1[Bradford]").FormulaR1C1 = "=IF(Table1[@[heures/jour]]=0,"""",(Table1[@Micro]+Table1[@Courte]+Table1[@Moyen]+Table1[@Longue])^2*((Table1[@maladie]+Table1[@[accident prof]]+Table1[@[accident non prof]])/Table1[@[heures/jour]]))"

      'activation de la protection feuille pour éviter erreurs user
      ActiveSheet.Protect AllowInsertingRows:=True 'DrawingObjects:=True, Contents:=True, Scenarios:=True _
      ', AllowInsertingColumns:=True, AllowInsertingRows:=True, _
      'AllowDeletingColumns:=True, AllowDeletingRows:=True
   'Force l'Arrêt de la macro pour ne pas faire une boucle sans fin et éviter une erreur pile
   End
End If

End Sub

Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)
'>> I. Désactivation entrée par double click dans TABLEUR, pour éviter un changement de valeur à blanc, compris par Excel comme un changement
    If Not Intersect(Target, Range("debut", "fin")) Is Nothing Then
        Cancel = True
    End If
End Sub

T'es un fou ^^

C'est vraiment ce que je voulais

C'est parfait

Mille merci

Cordialement

Rechercher des sujets similaires à "nouvelle ligne fichier protege"