Proéger cellules de formules sur Excel

Bonjour a tous,
j’ai essayé de protéger uniquement les cellules de mon tableau Excel contenant des formules. J’y suis parvenu mais lorsque j’essaie d’exécuter associer à un bouton me permettant d’ajouter une nouvelle ligne à mon tableau pour un nouvel enregistrement, la mise en forme de la nouvelle ligne ne correspond plus à celle des lignes précédentes et je n’arrive plus à exécuter de nouveau mon Macro. A noter que tout cela se produit uniquement une fois que je protège les cellules avec formule de mon tableau. Les cellules que je veux protéger sont les cellules des colonnes A, F, G et P de mes tableaux. Voici ci joint mon fichier Exel. Merci EXCEL VENTES et DEPENSES (3).xlsm (42,0 Ko)

Bonjour

Essais avec cette version adaptée

Testes et dis moi

EXCEL VENTES et DEPENSES (3).xlsm (42,6 Ko)

1 J'aime

Bonjour FFO,
Merci beaucoup pour ta réponse. Je viens de tester ta version. En ce qui concerne la mise en forme des cellules à l’ajout de nouvelles lignes, tout est nickel. Par contre je n’arrive plus à entrer des données dans aucune des cellules de la ligne crée. Les cellules que j’aimerais protéger sur chaque ligne crée sont uniquement les cellules des colonnes A, F, G et P vu qu’elles contiennent des formules. Merci

Et également je viens de remarquer, je ne suis également pas autorisé à supprimer les lignes nouvellement crées. Merci encore

Bonjour Ayemane, FFO,

Une technique pour verrouiller des cellules sans utiliser la protection de la feuille et qui se répercute sur les nouvelles lignes d’un tableau structuré.
La validation des données.
image

image
Cordialement.

re,

Question pour @FFO, la macro de suppression de ligne pour le tableau des colonne P à T est active à partir du moment où il y a des données dans le tableau des colonnes A à G.

Par exemple si je double clic sur la cellule Q11 qui ne contient aucunes données dans les colonnes P à T mais qui est remplie dans le premier tableau, il me propose la suppression.

Je pense qu’il y a une subtilité dans l’instruction de la macro qui m’a échappée ?
If Not Intersect(Target, Range("A6:G500", "P1:T500")) Is Nothing And Range("A" & Target.Row).Value Or Range("P" & Target.Row).Value <> Empty Then
Cordialement.

Bonjour Zebulon

Mon intervention s’est juste cantonner à mettre en début et en fin de procédure ces lignes de codes :

en début : ActiveSheet.Unprotect
en fin : ActiveSheet.Protect

et ce sur :

Sub Ajouteruneligneventes()
Sub Ajouterunelignedépenses()

Je n’ai rien fais d’autre

Ni plus ni moins

Re,

Je le sais bien, puisque c’est moi qui est mis en place cette macro.
Ma question était simplement de savoir si tu voyais comment l’on pouvait remédier à cet état de fait.
Cordialement

Pourquoi n’enlèves tu pas la protection avant tes interventions ?
et de la remettre ensuite
Sinon on peux par macro supprimer les lignes sélectionnées

Pour la saisie feuille protégée il faut déverrouiller les cellules concernées ainsi

Sélectionnes les colonnes de saisie ici pour l’exemple B à F :
Puis Accueil icone Format barre de tâche choisir dans le menu « Format de la cellule » :

Décocher « Verrouillée » puis Ok

Ainsi toutes les cellules de ces colonnes avec ce paramétrage pourront être remplies même onglet protégé

Essaies et dis moi

Désolé je n’avais pas compris

Pour moi je n’associerai pas dans des lignes de codes de condition des or avec des et :
If Not Intersect(Target, Range(« A6:G500 », « P1:T500 »)) Is Nothing And Range(« A » & Target.Row).Value Or Range(« P » & Target.Row).Value <> Empty Then

je scinderai en 2 lignes avec les et ensembles et les ou ensembles comme ceci :

If Not Intersect(Target, Range(« A6:G500 », « P1:T500 »)) Is Nothing Then
If Range(« A » & Target.Row).Value <> Empty Or Range(« P » & Target.Row).Value <> Empty Then

De plus pour les 2 conditions ou il faut répéter dans chacune la condition ici <> Empty

Maintenant quelque soit l’écriture effectivement si les 2 cellules colonne A et colonne P sont vides la procédure n’enclenche pas la suppression
J’ai réussi à contourner cette bizarrerie en changeant le <> Empty par = «  »

comme ceci :

If Not Intersect(Target, Range(« A6:G500 », « P1:T500 »)) Is Nothing And Range(« A » & Target.Row).Value Or Range(« P » & Target.Row).Value = «  » Then

ou

If Not Intersect(Target, Range(« A6:G500 », « P1:T500 »)) Is Nothing Then
If Range(« A » & Target.Row).Value = «  » Or Range(« P » & Target.Row).Value = «  » Then

Ainsi plus de souci

Les mystères de l’informatique
Je n’ai pas d’autres explications

Désolé
A ta dispo si besoin

re,

Merci pour les pistes.

J’ai contourné le problème en dissociant l’instruction :
If Not Intersect(Target, Range("A6:G500", "P1:T500")) Is Nothing And Range("A" & Target.Row).Value Or Range("P" & Target.Row).Value <> Empty Then
en
If Not Intersect(Target, Range("A6:G500")) Is Nothing And Range("A" & Target.Row).Value <> "" Or Not Intersect(Target, Range("P1:T500")) Is Nothing And Range("P" & Target.Row).Value <> "" Then
et en remplaçant : <> Empty par <> ""
Cela à l’air de fonctionner.
Merci encore pour tes lumières, bonne continuation.
Cordialement.
EXCEL VENTES et DEPENSES (3).xlsm (43,6 Ko)

Merci pour ton retour
C est une bonne solution
L essentiel surtout c est le résultat
À très bientôt sans doute