Sortir d'une macro imbriquée dans un userform

Bonjour à tous,

Malgré les différents sujets traitant de ce problème, j'ai toujours un os dans la gestion de mon userform

Depuis un userform j’exécute une "macro fille" pour gérer les choix de mes "Options butons" , de combobox, et textbox

Si j'utilise Exit sub je sort de la macro mais la macro " mère" du userform continue. ( ce qui la plante un peu plus loin car les données seront manquante)

Si j'utilise End je quitte le userform,

Or j'aimerai juste arrêter l’exécution des macro en cours sur le userform sans le quiter.

Voici un extrait de ma macro mère qui lance les macros filles

Private Sub CommandOk_Click()
Dim nomClone$, rep$, Sect$
Dim Wb As Workbook

 Application.ScreenUpdating = False

Set Wb = ActiveWorkbook
        rep = Wb.Path

      ChoiFWE
        WrtSelec '<---------------------------------
        EcrirAg
        EcrireForm
        EcrirePost
        WrtDat
        MFCTot
        inserlist
    Application.DisplayAlerts = False
    nomClone = "Calendrier Annuel " & WsPrm.Range("Sect") & " " & Cmbdate & ".xlsm"
    Wb.SaveCopyAs rep & "\" & nomClone
  '  End If
    Unload Me
'On Error Resume Next
Wb.Close False
End Sub

Et voici l'une des macros filles qui me pose problème dont j'aimerai dans certain cas quelles arrêtent la macro mere sans sortir du userform ( histoire que l'utilisateur n'est pas tous à ressaisir)

Sub WrtSelec()
WsPrm.Range("An") = Cmbdate
WsPrm.Range("Sect") = CmbSect
    If CmbSect.ListIndex = -1 Then End '<-----------------------------------------------End et Exit Sub ne fonctionne pas !
    If CmbSect.ListIndex >= 0 Then
    CmbSect.Value = CmbSect.ListIndex + 1
    End If
        WsPrm.Range("NomPost") = "Post" & CmbSect
        WsPrm.Range("Abs") = "Ablist" & CmbSect
        WsPrm.Range("NomAg") = "Alist" & CmbSect
End Sub

Si vous avez des idées je suis preneur

Bonjour edlede,

Les macros "filles" sont en fait des fonctions que tu dois déclarer en "function" et non "sub" ça te permettra de leur donner des valeurs.

Voici les modifications pour ta procédure :

    Private Sub CommandOk_Click()
    Dim nomClone$, rep$, Sect$
    Dim Wb As Workbook

     Application.ScreenUpdating = False

    Set Wb = ActiveWorkbook
            rep = Wb.Path

          ChoiFWE
            If WrtSelec Then Exit Sub ' Si ta fonction renvoie true alors on arrête la procédure 
           EcrirAg
            EcrireForm
            EcrirePost
            WrtDat
            MFCTot
            inserlist
        Application.DisplayAlerts = False
        nomClone = "Calendrier Annuel " & WsPrm.Range("Sect") & " " & Cmbdate & ".xlsm"
        Wb.SaveCopyAs rep & "\" & nomClone
      '  End If
       Unload Me
    'On Error Resume Next
    Wb.Close False
    End Sub

Et pour la fonction :

Function WrtSelec()
    WsPrm.Range("An") = Cmbdate
    WsPrm.Range("Sect") = CmbSect
        If CmbSect.ListIndex = -1 Then 
             WrtSelec=TRUE 'On passe la valeur renvoyée par la fonction à TRUE
             Exit Function 'On quitte la fonction
        End If
       If CmbSect.ListIndex >= 0 Then
        CmbSect.Value = CmbSect.ListIndex + 1
        End If
            WsPrm.Range("NomPost") = "Post" & CmbSect
            WsPrm.Range("Abs") = "Ablist" & CmbSect
            WsPrm.Range("NomAg") = "Alist" & CmbSect
    End Function

Merci vinceska,

C est parfait et efficace je valide,

Bonne soirée

Rechercher des sujets similaires à "sortir macro imbriquee userform"