Empecher supprimer un cellule une fois rempli [Résolu/Fermé]

Signaler
Messages postés
17
Date d'inscription
lundi 14 mars 2016
Statut
Membre
Dernière intervention
8 mars 2018
-
Messages postés
2215
Date d'inscription
lundi 6 mai 2013
Statut
Membre
Dernière intervention
17 juillet 2021
-
Bonjour,

Je vous explique mon petit problème

Dans la feuille contrat dans la colonne AE lorsqu'on met un X avec la liste déroulante elle valide le montant en AG et additionne ce montant et le transfère dans la feuille cumulatif dans la colonne revenu. Ceci fonctionne bien ensuite l'employé valide et inscris dans la colonne grand livre le montant, les montant doivent être identique (validé avec validation de donné) fonctionne également tres bien: Le problème est que lorsque l'employé par erreur supprime le X dans la colonne AE et si l'employé avait déjà inscris la valeur au grand livre dans la colonne C cumulatif, la validation de donné ne se fait plus.

Le fichier joint ci-dessous

http://www.cjoint.com/c/GKsuf3eGZGk

Est ce possible que lorsque que l'employé valide avec le X dans la colonne AE quelle ne puisse ensuite supprimer la cellule rempli, si elle veux le supprimer qu'une boite de dialogue s'ouvre avec comme Texte vérifier le montant au grand livre.

De plus est ce possible d'avoir un journal événement qui serait inscrit quel employé a tenté de supprimer quelle cellule

Est ce possible que lorsq'on supprime le X dans la colonne AE qu'une validation de donné se fasse Feuil cumulatif C7 n'est plus = a B7

Merci a ceux qui vont m'aider sur ce problème


3 réponses

Messages postés
2215
Date d'inscription
lundi 6 mai 2013
Statut
Membre
Dernière intervention
17 juillet 2021
324
Bonjour
Essayez ceci
https://www.cjoint.com/c/GKtkAmPqkLw
Toute tentative d'effacement d'un "X" dans la colonne AE fait l'objet d'un message demandant à l'utilisateur de valider son action d'effacement, volontaire ou non.
Cdlt
Messages postés
17
Date d'inscription
lundi 14 mars 2016
Statut
Membre
Dernière intervention
8 mars 2018

Bonjour,

Oui ceci est une bonne solution, mais pourriez vous m’expliquer ce que vous avez fait,
je ne vois rien en vba, et rien non plus dans les validation de donné

Merci
Messages postés
2215
Date d'inscription
lundi 6 mai 2013
Statut
Membre
Dernière intervention
17 juillet 2021
324 >
Messages postés
17
Date d'inscription
lundi 14 mars 2016
Statut
Membre
Dernière intervention
8 mars 2018

Le code se trouve dans le module de la feuille "Contrat"
Messages postés
17
Date d'inscription
lundi 14 mars 2016
Statut
Membre
Dernière intervention
8 mars 2018
>
Messages postés
2215
Date d'inscription
lundi 6 mai 2013
Statut
Membre
Dernière intervention
17 juillet 2021

Merci je n'avais pas vu, cela fonctionne bien et je crois que cela devrais empêcher les erreur.

Merci pour votre aide
Messages postés
17
Date d'inscription
lundi 14 mars 2016
Statut
Membre
Dernière intervention
8 mars 2018
>
Messages postés
2215
Date d'inscription
lundi 6 mai 2013
Statut
Membre
Dernière intervention
17 juillet 2021

Pardon de vous demander une autre chose mais je ne touche pas souvent au vba

J'ai modifié le code pour avoir la colonne ak également

If Not Intersect(Target, Range("AE6:AE10000", "ak6:ak10000")) Is Nothing Then

Mais j'aimerais 2 msg différent

Si il tente d'éffacer un X dans AE6:AE10000 un msg et si dans AK6:ak10000 un autre msg

pourriez vous m'aider svp
Messages postés
790
Date d'inscription
dimanche 15 novembre 2015
Statut
Membre
Dernière intervention
16 juillet 2021
143
Bonsoir

Peut-être comme ça

Private Sub Worksheet_Change(ByVal Target As Range)
Application.EnableEvents = False
If Not Intersect(Target, Range("AE6:AE10000,ak6:ak10000")) Is Nothing Then
If Target.Interior.ColorIndex <> xlNone Then
If Target.Value <> "X" Then
If MsgBox("Etes-vous sûr de vouloir effacer le contenu de cette cellule?", vbYesNo + vbCritical + vbDefaultButton2, "Contrôle cellule") = vbYes Then
Target.ClearContents
Target.Interior.ColorIndex = xlNone
Application.EnableEvents = True
Exit Sub
Else
Target.Value = "X"
End If
End If
End If
If Target.Value <> "X" Then Target.Interior.ColorIndex = xlNone Else: Target.Interior.Color = RGB(226, 239, 217)
End If
Application.EnableEvents = True
End Sub

Sub Worksheet_SelectionChange(ByVal Target As Range)
If Selection.Column = 31 And Selection.Rows.Count > 1 Then
MsgBox "Vous ne pouvez sélectionner qu'une seule cellule à la fois"
[AE1].Activate
Exit Sub
End If
If Not Intersect(Target, Range("AE6:AE10000,ak6:ak10000")) Is Nothing Then If Target.Value <> "X" Then Target.Interior.ColorIndex = xlNone Else: Target.Interior.Color = RGB(226, 239, 217)
End Sub


Slts
Messages postés
2215
Date d'inscription
lundi 6 mai 2013
Statut
Membre
Dernière intervention
17 juillet 2021
324
Bonjour
Voici avec les 2 propositions de messages distincts.J'y ai apporté une modification pour renforcer la sécurité contre tout effacement.
https://www.cjoint.com/c/GKuehoxDBfw
Cdlt