Modification formule VBA

Bonjour,

J'ai besoin de votre aide étant donné que je ne suis pas un expert. Je vous transmet ci-dessous un code que j'ai trouvé sur des forums mais je n'arrive pas à modifier 2 choses.

1) J'aimerai que le message "Validez-vous cette entrée?", n'apparaisse pas, c'est à dire que j'accepte sans valider

2) Comment faire pour appliquer cela aux autres onglets du classeur.

Private test As Boolean 'déclare la variable test

Private Sub Worksheet_Change(ByVal Target As Range) 'au changement dans l'onglet

If test = True Then Exit Sub 'si test est vraie, sort de la procédure

If Selection.Cells.Count > 1 Then Exit Sub 'si la sélection contient plus d'une seule cellule, sort de la procédure

If Target.Value = "" Then Exit Sub 'si la cellule est effacée, sort de la procédure

'si le changement a lieu ailleurs que dans la plage A1:A10, sort de la procédure (tu adapteras à ton cas)

If Application.Intersect(Target, Range("A1:A10")) Is Nothing Then Exit Sub

test = True 'définit la variable test

'condition : si "oui" au message

If MsgBox("Validez-vous cette entrée ?", vbYesNo, "Attention !") = vbYes Then

ActiveSheet.Unprotect 'déprotège l'onglet

Target.Locked = True 'verrouille la cellule modifiée

ActiveSheet.Protect 'protège l'onglet

Else 'sinon

Target.Select 'sélectionne la cellule modifié

Target.ClearContents 'supprime le contenu de la cellule modifié (cette action relance la procédure d'où le test...)

End If 'fin de la condition

test = False 'redéfinit la variable test

End Sub

D'avance, je vous remercie

Loïc

4sidah-v01-10.xlsm (13.11 Ko)

Bonjour,

Une proposition

La procédure se trouve dans ThisWorkbook.

Cdlt.

4sidah-v01-10.xlsm (15.71 Ko)
Option Explicit
Private Sub Workbook_SheetChange(ByVal Sh As Object, ByVal Target As Range)

If Not Application.Intersect(Target, Range("A1:A10")) Is Nothing Then
        If Selection.Cells.Count > 1 Then Exit Sub
        If Target.Value = "" Then Exit Sub
        ActiveSheet.Unprotect
        Target.Locked = True
        ActiveSheet.Protect
    End If

End Sub

Et pour que les cellules ne se bloquent que lors de la fermeture ou lors de l'enregistrement du classeur?

Est ce que cela est possible?

merci

Re,

C'est possible, mais compliqué sans connaître le contexte réel. Et, il faut penser aux conséquences d'une telle procédure (avantages et inconvénients).

Cdlt.

Rechercher des sujets similaires à "modification formule vba"