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)
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.
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
Ce sujet a été automatiquement fermé après 30 jours. Aucune réponse n’est permise dorénavant.