Création d'une msgbox

  • Initiateur de la discussion Initiateur de la discussion marmotte17
  • Date de début Date de début

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

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:
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
 
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
 
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
 
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
 
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 🙂
 
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
 
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...😀

Merci encore pour tout.
 
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
 
- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD

Discussions similaires

Réponses
4
Affichages
290
  • Question Question
Microsoft 365 Lecture vocale USF
Réponses
5
Affichages
263
Réponses
4
Affichages
484
Retour