XL 2010 Besoin d'une vba pour créer un message d'avertissement avant validation

Linda42

XLDnaute Occasionnel
Bonjour,

Je souhaite mettre un message d'avertissement et une demande de confirmation de l'action qui sera afficher à l'activation du bouton de control lié à la macro ci-dessous.

Le message serait le suivant : "Attention, après validation de votre choix, les données saisies seront définitivement supprimées. Etes-vous certains de vouloir effacer les données?" Je souhaiterais qu'il y ai la possibilité de valider ce choix ou de l'annuler.

Merci pour votre aide.
Linda

VB:
Sub EffacementDesDonnées()
'
' EffacementDesDonnées Macro
'

'
    Range("L7:R76").Select
    Selection.ClearContents
    Range("T7:Z77").Select
    Selection.ClearContents
    Range("AB7:AH76").Select
    Selection.ClearContents
    Range("AJ77").Select
    ActiveCell.FormulaR1C1 = ""
    Range("AJ7:AP77").Select
    Range("AJ77").Activate
    Selection.ClearContents
    Range("AR7:AX76").Select
    Selection.ClearContents
    Range("AZ7:BF76").Select
    Selection.ClearContents
    Range("L81:R81").Select
    Selection.ClearContents
    Range("T81:Z81").Select
    Selection.ClearContents
    Range("AB81:AH81").Select
    Selection.ClearContents
    Range("AJ81:AP81").Select
    Selection.ClearContents
    Range("AR81:AX81").Select
    Selection.ClearContents
    Range("AZ81:BF81").Select
    Selection.ClearContents
    Range("L84:R84").Select
    Selection.ClearContents
    Range("T84:Z84").Select
    Selection.ClearContents
    Range("AB84:AH84").Select
    Selection.ClearContents
    Range("AJ84:AP84").Select
    Selection.ClearContents
    Range("AR84:AX84").Select
    Selection.ClearContents
    Range("AZ84:BF84").Select
    Selection.ClearContents
    Range("L88:R90").Select
    Selection.ClearContents
    Range("T88:Z90").Select
    Selection.ClearContents
    Range("AB88:AH90").Select
    Selection.ClearContents
    Range("AJ88:AP90").Select
    Selection.ClearContents
    Range("AR88:AX90").Select
    Selection.ClearContents
    Range("AZ88:BF90").Select
    Selection.ClearContents
    Range("L94:R96").Select
    Selection.ClearContents
    Range("T94:Z96").Select
    Selection.ClearContents
    Range("AB94:AH96").Select
    Selection.ClearContents
    Range("AJ94:AP96").Select
    Selection.ClearContents
    Range("AR94:AX96").Select
    Selection.ClearContents
    Range("AZ94:BF96").Select
    Selection.ClearContents
    Range("B106:F205").Select
    Selection.ClearContents
    Range("D112:E112").Select
End Sub
 
Solution
Bonjour,
Vous pouvez aussi simplifier votre code pour l'effacement :
VB:
Sub EffacementDesDonnées()
'
' EffacementDesDonnées Macro
'
If MsgBox("Attention, après validation de votre choix, les données saisies seront définitivement supprimées." & Chr(10) & _
        "Etes-vous certains de vouloir effacer les données?", vbYesNo, "WARNING") = vbYes Then
    'Trop tard !
    Range("L7:R76, T7:Z77, AB7:AH76,AJ7:AP77,AR7:AX76,AZ7:BF76,L81:R81,T81:Z81").ClearContents
    Range("AB81:AH81,AJ81:AP81,AR81:AX81,AZ81:BF81,L84:R84,T84:Z84,AB84:AH84").ClearContents
    Range("AJ84:AP84,AR84:AX84,AZ84:BF84,L88:R90,T88:Z90,AB88:AH90,AJ88:AP90").ClearContents
    Range("AR88:AX90,AZ88:BF90,L94:R96,T94:Z96,AB94:AH96,AJ94:AP96,AR94:AX96").ClearContents...

JM27

XLDnaute Barbatruc
bonsoir

exemple
VB:
  Réponse = MsgBox("Attention, après validation de votre choix, les données saisies seront définitivement supprimées. Etes-vous certains de vouloir effacer les données? ; action irréversible", vbYesNo + vbQuestion)
   If Réponse = vbYes Then
' Données à supprimer
  end if
 

sylvanu

XLDnaute Barbatruc
Supporter XLD
Bonsoir Linda, JM,
Avec ceci par ex :
VB:
Sub EffacementDesDonnées()
'
' EffacementDesDonnées Macro
'
If MsgBox("Attention, après validation de votre choix, les données saisies seront définitivement supprimées." & Chr(10) & _
        "Etes-vous certains de vouloir effacer les données?", vbYesNo, "WARNING") = vbYes Then
    'Trop tard !
    Range("L7:R76").ClearContents
    Range("T7:Z77").ClearContents
    Range("AB7:AH76").ClearContents
    ' ...
End If
End Sub
 

Linda42

XLDnaute Occasionnel
bonsoir

exemple
VB:
  Réponse = MsgBox("Attention, après validation de votre choix, les données saisies seront définitivement supprimées. Etes-vous certains de vouloir effacer les données? ; action irréversible", vbYesNo + vbQuestion)
   If Réponse = vbYes Then
' Données à supprimer
  end if
Merci JM27.

Sachant que j'ai plusieurs feuilles dans le classeur et que le bouton de control sera sur chaque feuille, faut-il préciser dans la vba que l'action sera à faire sur la feuille active uniquement ou sur toute les feuilles? Cette vba sera sur un module et non affecté à une feuille en particulier.
 

JM27

XLDnaute Barbatruc
Bonjour
Si le bouton effacer est sur la même feuille que les données à effacer , il n'est pas nécessaire de la désigner , sachant que le macro dans ce cas s'effectuera sur la feuille active
il te suffira d'affecter cette macro à chaque bouton de chaque feuille
 
Dernière édition:

sylvanu

XLDnaute Barbatruc
Supporter XLD
Bonjour,
Vous pouvez aussi simplifier votre code pour l'effacement :
VB:
Sub EffacementDesDonnées()
'
' EffacementDesDonnées Macro
'
If MsgBox("Attention, après validation de votre choix, les données saisies seront définitivement supprimées." & Chr(10) & _
        "Etes-vous certains de vouloir effacer les données?", vbYesNo, "WARNING") = vbYes Then
    'Trop tard !
    Range("L7:R76, T7:Z77, AB7:AH76,AJ7:AP77,AR7:AX76,AZ7:BF76,L81:R81,T81:Z81").ClearContents
    Range("AB81:AH81,AJ81:AP81,AR81:AX81,AZ81:BF81,L84:R84,T84:Z84,AB84:AH84").ClearContents
    Range("AJ84:AP84,AR84:AX84,AZ84:BF84,L88:R90,T88:Z90,AB88:AH90,AJ88:AP90").ClearContents
    Range("AR88:AX90,AZ88:BF90,L94:R96,T94:Z96,AB94:AH96,AJ94:AP96,AR94:AX96").ClearContents
    Range("AZ94:BF96,B106:F205,D112:E112").Select
    Range("AJ77").Select
    ActiveCell.FormulaR1C1 = ""
End If
End Sub
 

Statistiques des forums

Discussions
312 112
Messages
2 085 417
Membres
102 885
dernier inscrit
AISSOU