Demander la confirmation Oui/Non de suppression de la valeur dans une cellule

ronanm

XLDnaute Nouveau
Bonjour à toutes et tous, le forum

Je suis à la recherche d'une fonction vb afin de prendre en compte le fait de 'suppr' une valeur.
Je souhaiterais afficher une boite de dialogue uniquement si la touche 'del' ou 'suppr' est utilisée pour supprimer une valeur pour en demander la confirmation ?

Avez-vous une idée ?

Bien à vous,

Ronanm
 

Robert

XLDnaute Barbatruc
Repose en paix
Re : Demander la confirmation Oui/Non de suppression de la valeur dans une cellule

Bonjour Ronanm, bonjnour le forum,

Il n'y a pas, à ma connaissance, de macro événementielle réagissant à la pression d'une touche. Je te propose la solution si dessous qui contourne le problème en réagissant à l'éffacement d'une cellule avec les deux macro événementielle Change et SelectionChange. Le code n'est actif que sur la plage A1:A100, tu adapteras...
À placer dans le composant de l'onglet concerné : Feuil1(Feuil1) par exemple :
Code:
Private av As Variant 'déclare la varaible av (Ancienne Valeur)
Private test As Boolean 'déclare la varaible test
 
Private Sub Worksheet_SelectionChange(ByVal Target As Range) 'au changement de sélection dans l'onglet
If Application.Intersect(Target, Range("A1:A100")) Is Nothing Then Exit Sub 'si la cellule active ne fait pas partie de la plage A1:A100 (à adapter), sort de la procédure
If Selection.Cells.Count > 1 Then ActiveCell.Select 'si plusieurs cellules sélectionnées, ne sélectionne que la cellule active
av = Target.Value 'définit la variable av
End Sub
 
Private Sub Worksheet_Change(ByVal Target As Range) 'au changement dans l'onglet
If Application.Intersect(Target, Range("A1:A100")) Is Nothing Then Exit Sub 'si le changement se fait ailleurs que dans la plage A1:A100 (à adapter), sort de la procédure
If test = True Then Exit Sub 'si test est vrai, sort de la procédure
If Target.Value = "" And av <> "" Then 'condition 1 :si la cellule est effacée et l'ancienne valeur n'est pas vide
    If MsgBox("Êtes-vous sûr(e) de vouloir effacer cette cellule ?", vbYesNo, "ATTENTION !") = vbNo Then 'condition 2 : si non au message
        test = True 'définit la variable test
        Target.Value = av 'remet l'ancienne valeur effacée
        test = False 'redéfinit la variable test
    End If 'fin de la condition 2
End If 'fin de la condition 1
End Sub
 

Discussions similaires

Membres actuellement en ligne

Statistiques des forums

Discussions
312 489
Messages
2 088 855
Membres
103 977
dernier inscrit
Hermet