Dans select case, comment revenir sur alternatives abandonnées en 1er choix ?

Sebast

XLDnaute Impliqué
Bonjour à toutes et à tous,

Par une boîte de dialogue, je propose 3 choix à l’utilisateur :
Choix 1 : exécuter un traitement partiel « p »
Choix 2 : exécuter un traitement total « t »
Choix 3 : abandonner, quitter le programme « a »


J’aimerais que lorsque l’utilisateur a choisi d’abandonner, apparaisse une boîte lui demandant confirmation et s’il se ravise, qu’il soit réorienté vers l’alternative initiale (choix 1 ou choix 2).

C’est cet embranchement que je n’arrive tout simplement pas à réaliser !
Quelqu’un a-t-il une idée comment le coder ?

Ci-dessous le code

Code:
Sub Afficher()

Dim Answer As Variant
Dim Réponse As Byte

Do Until Answer = "p" Or Answer = "t" Or Answer = "a"   
    Answer = Application.InputBox("Merci de donner votre réponse : p pour partiel, t pour total, a pour abandonner l'application", Type:=2)
Loop


Select Case Answer
            Case "p"
                    MsgBox "Je lance la procédure pour le traitement partiel"
                    ' ici code mais pas le sujet de ce fil ...
                    
            Case "t"
                    MsgBox "Je lance la procédure pour le traitement total"
                    ' ici code mais pas le sujet de ce fil ...
                    
            Case "a" ' l'utilisateur a choisi d'abandonner
                        
                        Réponse = MsgBox("Voulez-vous vraiment abandonner ?", vbQuestion + vbYesNo)
                        If Réponse = vbYes Then
                        MsgBox "Fin de la procédure ... au revoir"
                        Exit Sub
                        Else  ' dernière chance pour quand même choisir le partiel ou le complet

            ' c'est là que je ne sais pas comment revenir au choix initial où finalement
            ‘ l'utilisateur pourra choisir p ou t

                        End If
End Select

End Sub



Merci d’avance pour votre aide
 

Lian

XLDnaute Nouveau
Re : Dans select case, comment revenir sur alternatives abandonnées en 1er choix ?

Hello,

On Error Resume Next enlève tout plantage sur les instructions qui suivent, si c'est pas maitrisé, tu peux chercher longtemps d'où vient ton bug. J'ai cru que On Error Resume Next inibait aussi les erreurs éventuelles des traitements de la fonction p ou t, mais c'est pas le cas, tu peux mettre ces lignes pour le constater :
Code:
Function p() As Byte
Dim i(0) As Double
i(1) = 0
MsgBox "Je lance la procédure pour le traitement partiel"
p = vbYes
End Function

Lian
 

Si...

XLDnaute Barbatruc
Re : Dans select case, comment revenir sur alternatives abandonnées en 1er choix ?

salut

à tester (sans traitement d'erreurs)
Code:
Option Explicit
Sub Afficher_b()
  Dim Rep
  Do
    Rep = Application.InputBox("réponses : p pour partiel, " & "t pour total, a pour ", Type:=2)
    If Rep = "p" Then Mp: Rep = "a"
    If Rep = "t" Then Mt: Rep = "a"
  Loop Until Rep = "a"
End Sub

Sub Mp()
  MsgBox "traitement partiel"
End Sub

Sub Mt()
  Mp
  MsgBox "traitement pour finir"
End Sub
 

Sebast

XLDnaute Impliqué
Re : Dans select case, comment revenir sur alternatives abandonnées en 1er choix ?

Bonjour Si,

merci pour ton code.
Quand je saisis a, ça arrête directement le programme, sans proposer p ou t.
J'essaie d'adapter et reviens si je trouve
 

Si...

XLDnaute Barbatruc
Re : Dans select case, comment revenir sur alternatives abandonnées en 1er choix ?

re

et ainSi... ,
Code:
Dim Rep, n As Byte
  Do
    Rep = Application.InputBox("réponses : p pour partiel, t pour total, a pour arrêter !", Type:=2)
    Select Case Rep
    Case "p"
      [A:A] = "": For n = 1 To 10: Cells(n, 1) = n: Next 'ou ta procédure
      Exit Do
    Case "t"
      [A:A] = "": For n = 1 To 50: Cells(n, 1) = n: Next 'ou ta procédure
      Exit Do
    Case "a"
      If MsgBox("Voulez-vous recommencer  ?", vbYesNo, "") = vbNo Then Exit Do
    End Select
  Loop
 

Pièces jointes

  • InputBox.xls
    41.5 KB · Affichages: 30
  • InputBox.xls
    41.5 KB · Affichages: 36
  • InputBox.xls
    41.5 KB · Affichages: 28

Sebast

XLDnaute Impliqué
Re : Dans select case, comment revenir sur alternatives abandonnées en 1er choix ?

Bonjour Si,

merci pour ton code, qui marche bien.
En revanche, j'ai du mal à saisir quelques finesses :
1) [A:A] : à quoi sert cette ligne ?
2) pourquoi de 1 à 10 et de 1 à 50 d'une ligne à l'autre ?

Bonne journée
 

Statistiques des forums

Discussions
312 763
Messages
2 091 848
Membres
105 077
dernier inscrit
Airnee