Confirmation de suppression de données

Salut à tous,

je cherche à améliorer mon fichier.

j'ai créé une macro pour supprimer des données avec un petit icone "corbeille".

Sub Corbeille()
'
' Corbeille Macro
'

'
    Selection.SpecialCells(xlCellTypeConstants, 23).ClearContents
End Sub

Je souhaiterais y ajouter une boite de dialogue me demandant de confirmer la suppression.

Avant de venir crier à l'aide, j'ai consulté les cours VBA du forum et j'ai trouvé ceci :

Sub effacer_B2()
    If MsgBox("Etes-vous certain de vouloir supprimer le contenu de B2 ?", vbYesNo, "Demande de confirmation") = vbYes Then
        Range("B2").ClearContents
        MsgBox "Le contenu de B2 a été effacé !"
    End If
End Sub

Dans cet exemple on parle d'une donnée dans une cellule bien définie, B2

moi dans mon fichier, c'est une sélection dans le tableau qui doit être supprimée mais cette sélection est aléatoire d'une fois à une autre.

Donc un, je ne sais pas très bien comment remplacer la valeur à supprimer dans les ligne de code VBA

et deux, comment imbriquer cela dans ma macro existante ?

Merci d'avance,

12graphsdc.xlsm (172.00 Ko)

Bonjour,

Comme ceci ?

Cdlt.

Public Sub Clean_data()
Dim rng As Range
    If MsgBox("Etes-vous certain de vouloir supprimer la sélection ?", vbYesNo, "Demande de confirmation") = vbYes Then
        On Error Resume Next
        Set rng = Selection.SpecialCells(xlCellTypeConstants, 23).ClearContents
        On Error GoTo 0
        If Not rng Is Nothing Then
            rng.ClearContents
            MsgBox "Le contenu de la sélection a été effacé !"
        End If
    End If
End Sub

oui cela fonctionne, parfait Merci

par contre, dans les lignes de code, je vois :

MsgBox "Le contenu de la sélection a été effacé !"

est-ce qu'il ne devrait pas y avoir une fenêtre qui s'ouvre avec ce message ? car je ne vois rien après la suppression...

cela n'est pas indispensable, mais c'est juste pour essayer de comprendre petit à petit le VBA....

Bonjour,

J'avis omis de supprimer le 1er. ClearContents dans la procédure.

Cdlt.

Public Sub Clean_data()
Dim rng As Range
    If MsgBox("Etes-vous certain de vouloir supprimer la sélection ?", vbYesNo, "Demande de confirmation") = vbYes Then
        On Error Resume Next
        Set rng = Selection.SpecialCells(xlCellTypeConstants, 23)
        On Error GoTo 0
        If Not rng Is Nothing Then
            rng.ClearContents
            MsgBox "Le contenu de la sélection a été effacé !"
        End If
    End If
End Sub

merci Jean-Eric, j'essaye cela de suite.

par contre quand j'essaie de supprimer le contenu d'une ligne quand la feuille est protégée, rien ne s’efface....

y a t-il moyen d'ajouter une commande dans la macro qui by-pass cette interdiction ?

Re,

Si la feuille est protégée, le process est différent car il faut supprimer (temporairement) cette protection.

Est-elle protégée par mot de passe ?

Cdlt.

Nota : un exemple

Public Sub Clean_data()
Dim ws As Worksheet, rng As Range
    If MsgBox("Etes-vous certain de vouloir supprimer la sélection ?", vbYesNo, "Demande de confirmation") = vbYes Then
        Set ws = ActiveSheet 'ou Worksheets("Feuil1") par exemple
        ws.Unprotect
        On Error Resume Next
        Set rng = Selection.SpecialCells(xlCellTypeConstants, 23)
        On Error GoTo 0
        If Not rng Is Nothing Then
            rng.ClearContents
            MsgBox "Le contenu de la sélection a été effacé !"
        End If
        ws.Protect  'avec les condtions établies
    End If
End Sub

merci, mais est-ce normal qu'il me demande un password, qui plus est le password qui protège la feuille ? la protection perd dans ce cas tout son sens

merci

Bonjour,

Je ne note pas de disfonctionnement lors de l'exécution de la procédure VBA.

J'ai affecté la procédure à ton bouton (Corbeille).

Je t'ai posée une question à laquelle tu n'as répondu !...

Cdlt.

10graphsdc.xlsm (169.84 Ko)

sorry je n'avais pas vu ta question

donc oui la feuille est protégée afin d'éviter que l'on supprime des formules par inadvertance

Re,

Tu ne réponds pas à la question de savoir si tu as un mot de passe !...

Cdlt.

oui,

&180876013&

Re,

la procédure devient donc :

Public Sub Clean_data()
Dim ws As Worksheet, rng As Range
    If MsgBox("Etes-vous certain de vouloir supprimer la sélection ?", vbYesNo, "Demande de confirmation") = vbYes Then
        Set ws = ActiveSheet 'ou Worksheets("Feuil1") par exemple
        ws.Unprotect Password:="&180876013&"
        On Error Resume Next
        Set rng = Selection.SpecialCells(xlCellTypeConstants, 23)
        On Error GoTo 0
        If Not rng Is Nothing Then
            rng.ClearContents
            MsgBox "Le contenu de la sélection a été effacé !"
        End If
        ws.Protect.Password:="&180876013&"  'avec les condtions établies
    End If
End Sub

Cdlt.

Merci Jean-Eric,

j'ai copié les lignes de code dans la macro et j'obtiens une erreur de syntaxe (voir fichier ci-joint)

et cela que la page soit verrouillée ou non

erreur syntaxe

Re,

Désolé.

Protect est suivi d'un espace et non d'un point.

Cdlt.

ws.Protect Password:="&180876013&"  'avec les condtions établies

pas de soucis si je pouvais en savoir autant que vous tous qui m'aidez

affaire résolue et clôturée

je m'occupe des autres petits points à solutionner sur ce fichier...

Encore merci

Rechercher des sujets similaires à "confirmation suppression donnees"