Sheets(x).Delete via VBA fait disparaître le formulaire

Bonsoir le forum, bonsoir tous le monde

Je travaille sur un fichier pour une association, ce fichier a pour vocation d'imprimer des reçus de dons en format PDF, le formulaire qui lance cette fonctionnalité propose plusieurs options d'impression (d'où l'utilisation du formulaire par ailleurs).

J'ai plus ou moins réussi à faire ce que je voulais mais je coince sur un petit détail assez gênant, à savoir quand je lance ma procédure d'impression à partir de mon formulaire et que j'arrive sur la partie suppression des onglets générés le formulaire se "cache", à savoir qu'il est toujours actif quelque part mais plus visible à l'écran (à ce moment la plus moyen de cliquer sur une cellule de la feuille active ce qui prouve bien que le formulaire est toujours la) Il suffit que je change de fenêtre et que je reviens sur Excel pour que le formulaire s'affiche à nouveau.

Dans ma macro j'utilise la fonction DoEvent qui me permet de mettre à jour le champ d'indication d'avancement de la macro mais le fait de commenter ceci ne change rien au problème.

Pour des raisons de confidentialité je ne peux pas poster le fichier mais néanmoins voici le code de la procédure posant problème Merci par avance à tous ceux qui voudrait m'aider

Private Sub Export_RF_simple_PDF()

        Dim iloop%
        Dim numIndex%
        Dim numIndexRF%
        Dim tabNomFeuille() As String
        Dim lstO As ListObject
        Dim cellule As Range
        Dim chaineNomFeuille$
        Dim ws As Worksheet

        numIndex = 0
        ReDim tabNomFeuille(Me.Cb_select_RF.ListCount - 1)
        Set lstO = ThisWorkbook.Sheets("Listing").ListObjects("Tab_RF")

        ' Sortie de la procédure si le tableau RF ne contient aucune valeur
        If lstO.ListRows.Count = 1 _
                                        And lstO.DataBodyRange.Cells(1, listing.num_RF).Value = "" Then

                 Me.Lb_etat.Visible = True
                 Call Gestion_champ_indication(CodeCouleurChampIndic.couleurRouge, CodeMessageChampIndic.erreurTabRF)
                 Exit Sub

        End If

        m_execMultiRF = True

        Application.ScreenUpdating = False
        Application.DisplayAlerts = False

        For Each cellule In lstO.ListColumns(listing.num_RF).DataBodyRange

                If Not cellule.Value = "" Then

                        ' Recherche du numéro de ligne du tableau correspondant au numéro RF
                        numIndexRF = Recherche_index_ligne(cellule.Value)

                        ' Copie de la feuille BASE et renommage selon nom RF
                        ThisWorkbook.Sheets("BASE").Copy After:=Sheets(Sheets.Count)
                        ActiveSheet.Name = cellule.Value

                        ' Remplissage des champs correspondant au RF sélectionné sur la feuille BASE
                        Call Remplissage_BASE(numIndexRF, cellule.Value)

                        ' Affichage message d'indication
                        Me.Lb_etat.Visible = True
                        Call Gestion_champ_indication(CodeCouleurChampIndic.couleurBleue, CodeMessageChampIndic.copieFeuilleEnCours, numIndex)

                        tabNomFeuille(numIndex) = cellule.Value
                        numIndex = numIndex + 1

                End If

                DoEvents

        Next cellule

        numIndex = 0

        For Each cellule In lstO.ListColumns(listing.num_RF).DataBodyRange

                ' Nouvelle boucle pour sélectionner toutes les feuilles RF pour impression
                If Not cellule.Value = "" Then

                        If numIndex = 0 Then
                                Worksheets(cellule.Text).Select
                        Else
                                Worksheets(cellule.Text).Select Replace:=False
                        End If

                End If

                numIndex = numIndex + 1

        Next cellule

        ' Affichage message d'indication
        Call Gestion_champ_indication(CodeCouleurChampIndic.couleurBleue, CodeMessageChampIndic.impressionEnCoursSimpleRF)
        DoEvents

        ' Export de la feuille sélectionnée en format PDF
        Call Edition_vers_PDF_multi

        ' ##### PARTIE QUI POSE PB

        ' Suppression des feuilles générées et affichage message d'indication
        For numIndex = 0 To Me.Cb_select_RF.ListCount - 1
                ThisWorkbook.Sheets(tabNomFeuille(numIndex)).Delete
                Call Gestion_champ_indication(CodeCouleurChampIndic.couleurBleue, CodeMessageChampIndic.copieFeuilleEnCours, numIndex)
                DoEvents
        Next numIndex

        ' ##### FIN

        ' Affichage message d'indication final
        Call Gestion_champ_indication(CodeCouleurChampIndic.couleurVerte, CodeMessageChampIndic.impressionTermineMultiRF)

        Application.DisplayAlerts = True
        Application.ScreenUpdating = True
        m_execMultiRF = False

End Sub

Bonsoir Streetchris82

Merci d'éditer votre post SVP

1) Evitez le texte au kilomètre (sans retour à la ligne) difficile à lire

2) Mettez votre code entre balises avec el bouton

2023 03 23 07h14 191

Dans l'attente d'un formatage correcte

Cordialement.

Oui désolé il se trouve que sur le PC sur lequel je travaillai il n'y avait aucune option d'édition de post (balise code, emoji, etc.), j'ai du changé de PC pour corriger le post

Pourtant il tournait sur chrome, bizarre...

Rechercher des sujets similaires à "sheets delete via vba fait disparaitre formulaire"