Empecher supprimer un cellule une fois rempli

Résolu
AGAZOU Messages postés 19 Statut Membre -  
Frenchie83 Messages postés 2254 Statut Membre -
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

  1. Frenchie83 Messages postés 2254 Statut Membre 339
     
    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
    0
    1. AGAZOU Messages postés 19 Statut Membre
       
      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
      0
      1. Frenchie83 Messages postés 2254 Statut Membre 339 > AGAZOU Messages postés 19 Statut Membre
         
        Le code se trouve dans le module de la feuille "Contrat"
        0
      2. AGAZOU Messages postés 19 Statut Membre > Frenchie83 Messages postés 2254 Statut Membre
         
        Merci je n'avais pas vu, cela fonctionne bien et je crois que cela devrais empêcher les erreur.

        Merci pour votre aide
        0
      3. AGAZOU Messages postés 19 Statut Membre > Frenchie83 Messages postés 2254 Statut Membre
         
        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
        0
  2. The_boss_68 Messages postés 959 Date d'inscription   Statut Membre Dernière intervention   182
     
    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
    0
  3. Frenchie83 Messages postés 2254 Statut Membre 339
     
    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
    0