Création d'une msgbox

marmotte17

XLDnaute Junior
Bonjour.

Ma question est dans le titre : est-il possible de créer une msgbox dans excel 1997-2003 ?

J'ai créé une macro qui efface tout le contenu du document et je voudrais qu'un message apparaisse dès que je clique le bouton pour avertir que l'action sera irréversible.

Merci d'avance pour votre aide.
 
Dernière édition:

jmcr

XLDnaute Occasionnel
BONSOIR MARMOTTE
essaie se code sous réserve je débute juste en vba
*
Private Sub CommandButton1_Click()
Dim reponse As Integer
reponse = MsgBox("Voulez-vous vraiment effacer la BASE ?", 32, vbYesNo)
Range("B4:R1000").ClearContents
reponse = MsgBox(" voila ,je viens d'éffacer la BASE ?", 48, "BASE VIDE")
If reponse = 7 Then 'non=7 oui=6
Exit Sub
Else
Unload Me
End If
End Sub
 

Efgé

XLDnaute Barbatruc
Bonjour Marmote, jmcr, le fil, le forum

@jmcr, je te mets des remarques dans ton code
VB:
Private Sub CommandButton1_Click()
Dim reponse As Integer
reponse = MsgBox("Voulez-vous vraiment effacer la BASE ?", 32, vbYesNo) 'La on attend la réponse de l'utilisateur
Range("B4:R1000").ClearContents 'quelque soit la réponse on supprime la zone
  reponse = MsgBox(" voila ,je viens d'éffacer la BASE ?", 48, "BASE VIDE") 'on attend une réponse utilisateur (la box porte un mauvais numéro)
  If reponse = 7 Then  'non=7  oui=6'suivant la réponse
  Exit Sub 'on sort de la sub
  Else 'ou
  Unload Me 'on décharge (le problème est qu'on ne décharge par un msgbox, mais un userform... ce qui génère une erreur)
  End If
End Sub

Je pense que ceci sera plus opérationel :
VB:
Sub test()
Dim R As Integer

R = MsgBox("Vous allez supprimer les données" & Chr(10) & _
            "Voulez vous continuer?", 36, "Avertissement")
Select Case R
    Case 6
        'Oui
        Range("B4:R1000").ClearContents
    Case 7
        'Non
        'Dans le cas présent on peux ajouter un message
        MsgBox "Traitement arrêté à la demande de l'utilisateur", 64, "Avertissement"
End Select
End Sub

En cliquant dans ma signature, le petit utilitaire pourra être utile, en particulier sur le N° de boites et leur correspondances :)

Cordialement
 

marmotte17

XLDnaute Junior
Bonjour à tous.
Je n'avais pas vu le message avant. Je regarderai donc plus tard et ne manquerai pas de revenir ensuite.

Merci encore pour ton aide.

Je n'ai pas réussi à faire fonctionner la macro proposée par JMCR. Il faut dire que je ne suis pas doué non plus...

Après, si cela est moins compliqué, cela peut-être également la demande d'un mot de passe avant l'exécution de la macro.

Voilà la macro que j'ai créée pour effacer certaines cellules de mon document :

Range("A3:G126").Select
Selection.ClearContents
ActiveWindow.ScrollRow = 94
Range("I3:L126").Select
Range("I126").Activate
Selection.ClearContents
Range("N3:Q126").Select
Range("N126").Activate
Selection.ClearContents
Range("S3:V126").Select
Range("S126").Activate
Selection.ClearContents
Range("X3:AA126").Select
Range("X126").Activate
Selection.ClearContents
ActiveWindow.SmallScroll ToRight:=21
Range("AC3:AF126").Select
Range("AC126").Activate
Selection.ClearContents
Range("AH3:AK126").Select
Range("AH126").Activate
Selection.ClearContents
Range("AM3:AP126").Select
Range("AM126").Activate
Selection.ClearContents
Range("AR3:AU126").Select
Range("AR126").Activate
Selection.ClearContents
ActiveWindow.LargeScroll ToRight:=1
ActiveWindow.SmallScroll ToRight:=-5
Range("AW3:AZ126").Select
Range("AW126").Activate
Selection.ClearContents
Range("BB3:BE126").Select
Range("BB126").Activate
Selection.ClearContents
Range("BG3:BJ126").Select
Range("BG126").Activate
Selection.ClearContents
Range("BL3:BO126").Select
Range("BL126").Activate
Selection.ClearContents
ActiveWindow.SmallScroll ToRight:=15
Range("BQ3:BT126").Select
Range("BQ126").Activate
Selection.ClearContents
Range("BV3:BY126").Select
Range("BV126").Activate
Selection.ClearContents
Range("CA3:CD126").Select
Range("CA126").Activate
Selection.ClearContents
ActiveWindow.LargeScroll ToRight:=1
ActiveWindow.SmallScroll ToRight:=-4
Range("CF3:CI126").Select
Range("CF126").Activate
Selection.ClearContents
Range("CK3:CK126").Select
Range("CK126").Activate
Selection.ClearContents
Range("A3").Select
End Sub
 

Si...

XLDnaute Barbatruc
Bonjour

autre exemple
VB:
Sub test()
    If MsgBox("Supprimer les données ?", 4, "Attention...") = 7 Then Exit Sub
    'adresses à conrôler
    Range("A3:G12,I3:L1266,N3:Q126,S3:V126,X3:AA126,AC3:AF126").ClearContents
    Range("AH3:AK126,AM3:AP126,AR3:AU126,AW3:AZ126,BB3:BE126").ClearContents
    Range("BG3:BJ126,BL3:BO126,BQ3:BT126,BV3:BY126,CA3:CD126").ClearContents
    Range("CF3:CI126,CF126,CK3:CK126").ClearContents
    Range("A3").Select
End Sub
 

Efgé

XLDnaute Barbatruc
Re

Ton code est directement issu de l'enregistreur.
Tu as donc beaucoup de choses inutiles.
Après nettoyage cela donne:
VB:
Sub Nettoyee()
Range("A3:G126").ClearContents
Range("I3:L126").ClearContents
Range("N3:Q126").ClearContents
Range("S3:V126").ClearContents
Range("X3:AA126").ClearContents
Range("AC3:AF126").ClearContents
Range("AH3:AK126").ClearContents
Range("AM3:AP126").ClearContents
Range("AR3:AU126").ClearContents
Range("AW3:AZ126").ClearContents
Range("BB3:BE126").ClearContents
Range("BG3:BJ126").ClearContents
Range("BL3:BO126").ClearContents
Range("BQ3:BT126").ClearContents
Range("BV3:BY126").ClearContents
Range("CA3:CD126").ClearContents
Range("CF3:CI126").ClearContents
Range("CK3:CK126").ClearContents
End Sub
que l'on peux réduire:
VB:
Sub Nettoyee_2()
Range("A3:G126,I3:L126,N3:Q126").ClearContents
Range("S3:V126,X3:AA126,AC3:AF126").ClearContents
Range("AH3:AK126,AM3:AP126,AR3:AU126").ClearContents
Range("AW3:AZ126,BB3:BE126,BG3:BJ126").ClearContents
Range("BL3:BO126,BQ3:BT126,BV3:BY126").ClearContents
Range("CA3:CD126,CF3:CI126,CK3:CK126").ClearContents
End Sub

Ce qui donne avec ma proposition:
VB:
Sub test_2()
Dim R As Integer

R = MsgBox("Vous allez supprimer les données" & Chr(10) & _
            "Voulez vous continuer?", 36, "Avertissement")
Select Case R
    Case 6
        'Oui
        Range("A3:G126,I3:L126,N3:Q126").ClearContents
        Range("S3:V126,X3:AA126,AC3:AF126").ClearContents
        Range("AH3:AK126,AM3:AP126,AR3:AU126").ClearContents
        Range("AW3:AZ126,BB3:BE126,BG3:BJ126").ClearContents
        Range("BL3:BO126,BQ3:BT126,BV3:BY126").ClearContents
    Case 7
        'Non
        'Dans le cas présent on peux ajouter un message
        MsgBox "Traitement arrêté à la demande de l'utilisateur", 64, "Avertissement"
End Select
End Sub

Cordialement

EDIT
Bonjour SI :)
 

marmotte17

XLDnaute Junior
Bonjour à tous.

Je n'ai pas réussi à faire fonctionner la macro proposée par JMCR. Il faut dire que je ne suis pas doué non plus...

Après, si cela est moins compliqué, cela peut-être également la demande d'un mot de passe avant l'exécution de la macro.

Voilà la macro que j'ai créée pour effacer certaines cellules de mon document :

Range("A3:G126").Select
Selection.ClearContents
ActiveWindow.ScrollRow = 94
Range("I3:L126").Select
Range("I126").Activate
Selection.ClearContents
Range("N3:Q126").Select
Range("N126").Activate
Selection.ClearContents
Range("S3:V126").Select
Range("S126").Activate
Selection.ClearContents
Range("X3:AA126").Select
Range("X126").Activate
Selection.ClearContents
ActiveWindow.SmallScroll ToRight:=21
Range("AC3:AF126").Select
Range("AC126").Activate
Selection.ClearContents
Range("AH3:AK126").Select
Range("AH126").Activate
Selection.ClearContents
Range("AM3:AP126").Select
Range("AM126").Activate
Selection.ClearContents
Range("AR3:AU126").Select
Range("AR126").Activate
Selection.ClearContents
ActiveWindow.LargeScroll ToRight:=1
ActiveWindow.SmallScroll ToRight:=-5
Range("AW3:AZ126").Select
Range("AW126").Activate
Selection.ClearContents
Range("BB3:BE126").Select
Range("BB126").Activate
Selection.ClearContents
Range("BG3:BJ126").Select
Range("BG126").Activate
Selection.ClearContents
Range("BL3:BO126").Select
Range("BL126").Activate
Selection.ClearContents
ActiveWindow.SmallScroll ToRight:=15
Range("BQ3:BT126").Select
Range("BQ126").Activate
Selection.ClearContents
Range("BV3:BY126").Select
Range("BV126").Activate
Selection.ClearContents
Range("CA3:CD126").Select
Range("CA126").Activate
Selection.ClearContents
ActiveWindow.LargeScroll ToRight:=1
ActiveWindow.SmallScroll ToRight:=-4
Range("CF3:CI126").Select
Range("CF126").Activate
Selection.ClearContents
Range("CK3:CK126").Select
Range("CK126").Activate
Selection.ClearContents
Range("A3").Select
End Sub
 

marmotte17

XLDnaute Junior
Un grand grand merci à vous tous JMCR, SI, Efgé pour vos aides.

Ta proposition fonctionne à merveille Efgé. C'est génial.

J'ai essayé de comprendre la msgbox mais pourquoi le R après select case et les nombres 6 et 7 après les cases ?

Je suis pénible mais j'aime bien comprendre...:D

Merci encore pour tout.
 

Efgé

XLDnaute Barbatruc
Re
On dis que R est égale à la message box
Quand l'utilisateur répond, R prend la valeur de sa réponse.
Si il clic oui, R est égal à 6, si il clic non R = 7.
Ensuite suivant le cas "Case" on fait telle ou telle action.
C'est comme cela que l'on récupère la réponse d'une MsgBox.

Cordialement
 

Discussions similaires

Membres actuellement en ligne

Aucun membre en ligne actuellement.

Statistiques des forums

Discussions
312 305
Messages
2 087 084
Membres
103 459
dernier inscrit
Arnocal