Empêcher fermeture UserForm

Bonjour le forum,

J'aimerai savoir si il est possible de conserver une UserForme non nodal ouverte malgré l’exécution d'autre macro.

En effet je fais apparaître une UserForme non nodal sur laquelle est affiché des informations et qui possèdent un bouton associé à une macro.

En parallèle de cette UserForme je souhaite utiliser des macro pour remplir des informations de manières automatique.

Le problème est que lorsque je lance ma macro pour récupérer des informations le "End Sub" me fait disparaître ma UserForme alors que je ne veux qu'elle ne soit enlever que dans le cas ou l'utilisateur clique sur le bouton de la UserForme.

Voila toutes les idées sont les bienvenues.

Merci d'avance

Tu peux joindre ton fichier ?

Cdlt

Je peux en faire un faux car le mien contient des données confidentiel.

EDIT: Evidement dans mon fichier test y pas le problème.

tu n'as pas un unload qui traine ?

Non. J'ai mis un arret de code sur mes Unload même si ils ne sont pas du tout au même endroit et le code se déroule normalement sans en rencontré.

En plus j'ai mis une message box sur la dernière ligne de la macro d'ajout de donnée et à ce moment la je vois encore la UserForme donc tres bizarre c'est vraiment le End Sub qui la ferme.

Puisque ton classeur est confidentiel colle ton code on verra peut-être le problème ... ou pas (:

Cdlt

Bonjour,

tu es sûr qu'il est fermé ?

Si tu es dans la fenêtre vbe et que tu cliques sur la fenêtre excel tu peux ne pas le voir. Et par contre le voir si tu actives ta fenêtre à partir de la barre de tâche.

eric

Je peux coller le code en elevant les noms à la limite:

Alors le code d'appel de la Usf:

Private Sub CommandButton2_Click()
Feuil3.Unprotect "1234"
Sheets("intervenants").Unprotect "1234"
Feuil20.Unprotect "1234"
Feuil20.CommandButton3.visible = False
Feuil20.Protect "1234", True, True, True
Application.EnableEvents = False
If Feuil3.Range("B9") = "" Then
Application.EnableEvents = False

Transfert.Show vbModeless
Else
MsgBox "Feuille de contre rendus déjà commencé, vous ne pouvez transférer un mission dedans"
End If
'Application.EnableEvents = True
End Sub

Code de la macro d'ajout de donnée

Private Sub CommandButton2_Click() 'Validation et envoie
Feuil20.Unprotect "1234"

Dim i As Integer
Dim a As String
Dim k As Integer
Dim verif As Boolean
verif = False
Dim mail As String
Dim LCel As Integer, CodeAscii As Integer 'longueur adresse mail/ code ascii du cara
Dim NCara As Integer 'indice de caractere adresse mail

Application.ScreenUpdating = False

i = 9
n = 21

    While (Sheets("intervenants").Cells(n, 2).Value <> "") 'On recherhce la prochaine ligne à remplir
    n = n + 1
    Wend

j = n + 1
If Feuil20.Range("D22") <> "" And Feuil20.Range("F22") <> "" Then 'verification d'existance de date

    If DateValue(Feuil20.Range("D22").Value) > DateValue(Feuil20.Range("F22").Value) Then 'vérification de la cohérence des dates
    MsgBox "La date de fin est inférieure à la date de début"
    Exit Sub
    End If
Else
MsgBox "Veuillez saisir une date de début et de fin"
Exit Sub
End If

If Feuil20.Range("C12") = "" And Feuil20.Range("C13") <> "" Then 'verification intervenants
    MsgBox "Veuillez saisir un premiere intervenant avant le second"
    Exit Sub
End If

  Feuil20.Unprotect "1234"
Sheets("intervenants").Unprotect "1234"

  mail = Feuil20.Range("G12")

  LCel = Len(Feuil20.Range("G12").Value)
  For NCara = 1 To LCel
        CodeAscii = AscW(Mid(Feuil20.Range("G12").Value, NCara))
            Select Case CodeAscii
                Case 97 To 122    ' Caracteres minuscule
               Case 65 To 90    'Caracteres majuscule
               Case 95          'caractères tiret bas
               Case 45 To 46    'caractères - et .
               Case 48 To 57    'nombre de 0 à 9
               Case 64         'arobase
           Case Else
                MsgBox "Veuillez saisir des adresses mails valide"
                Exit Sub
            End Select
   Next

   LCel = Len(Feuil20.Range("G13").Value)
  For NCara = 1 To LCel
        CodeAscii = AscW(Mid(Feuil20.Range("G13").Value, NCara))
            Select Case CodeAscii
                Case 97 To 122    ' Caracteres minuscule
               Case 65 To 90    'Caracteres majuscule
               Case 95          'caractères tiret bas
               Case 45 To 46    'caractères - et .
               Case 48 To 57    'nombre de 0 à 9
                Case 64         'arobase
           Case Else
                MsgBox "Veuillez saisir des adresses mails valide"
                Exit Sub
            End Select
 Next

 LCel = Len(Feuil20.Range("C7").Value)
   For NCara = 1 To LCel
        CodeAscii = AscW(Mid(Feuil20.Range("C7").Value, NCara))
            Select Case CodeAscii
            '\/<>:*?|
                Case 47
               MsgBox "Veuillez saisir un nom d'entreprise valide"
                Exit Sub
               Case 92
               MsgBox "Veuillez saisir un nom d'entreprise valide"
                Exit Sub
               Case 58
               MsgBox "Veuillez saisir un nom d'entreprise valide"
                Exit Sub
               Case 60
               MsgBox "Veuillez saisir un nom d'entreprise valide"
                Exit Sub
               Case 62
               MsgBox "Veuillez saisir un nom d'entreprise valide"
                Exit Sub
                Case 63
                MsgBox "Veuillez saisir un nom d'entreprise valide"
                Exit Sub
                Case 42
                MsgBox "Veuillez saisir un nom d'entreprise valide"
                Exit Sub
                Case 166
                MsgBox "Veuillez saisir un nom d'entreprise valide"
                Exit Sub
            End Select
   Next

 'nom du responsable 1
Sheets("intervenants").Cells(n, 5).Value = Feuil20.Cells(12, 3).Value

'nom du responsable 2
Sheets("intervenants").Cells(j, 5).Value = Feuil20.Cells(13, 3).Value

'nom de l'entreprise
Sheets("intervenants").Cells(n, 2).Value = Feuil20.Cells(7, 3).Value

'Adresse
Sheets("intervenants").Cells(n, 11).Value = Feuil20.Cells(9, 3).Value

'Sous traitant
Sheets("intervenants").Cells(n, 4).Value = Feuil20.Cells(17, 3).Value

'Telephone fixe
Sheets("intervenants").Cells(n, 6).Value = Feuil20.Cells(10, 5).Value

'Portable resp 1
Sheets("intervenants").Cells(n, 8).Value = Feuil20.Cells(12, 5).Value

'Ville
Sheets("intervenants").Cells(n, 12).Value = Feuil20.Cells(9, 6).Value & "-" & Feuil20.Cells(9, 7).Value

'Fax
Sheets("intervenants").Cells(n, 7).Value = Feuil20.Cells(10, 7).Value

'Mail resp 1
Sheets("intervenants").Cells(n, 9).Value = Feuil20.Cells(12, 7).Value

Sheets("intervenants").Cells(n, 10).Value = "O"

'Code postal
Sheets("intervenants").Cells(n, 12).Value = Feuil20.Cells(9, 6).Value & "-" & Feuil20.Cells(9, 7).Value

If Feuil20.Cells(13, 3).Value <> "" Then
Sheets("intervenants").Cells(j, 2).Value = Feuil20.Cells(7, 3).Value 'entreprise
Sheets("intervenants").Cells(j, 11).Value = Feuil20.Cells(9, 3).Value 'adress
Sheets("intervenants").Cells(j, 4).Value = Feuil20.Cells(17, 3).Value 'sous traitant
Sheets("intervenants").Cells(j, 6).Value = Feuil20.Cells(10, 5).Value 'fixe
Sheets("intervenants").Cells(j, 8).Value = Feuil20.Cells(13, 5).Value 'Portable resp 2
Sheets("intervenants").Cells(j, 12).Value = Feuil20.Cells(9, 6).Value & "-" & Feuil20.Cells(9, 7).Value 'ville
Sheets("intervenants").Cells(j, 7).Value = Feuil20.Cells(10, 7).Value 'Fax
Sheets("intervenants").Cells(j, 9).Value = Feuil20.Cells(13, 7).Value 'Mail resp 2
Sheets("intervenants").Cells(j, 12).Value = Feuil20.Cells(9, 6).Value & "-" & Feuil20.Cells(9, 7).Value ' code postal
Sheets("intervenants").Cells(j, 10).Value = "O"
End If

'lot
Sheets("intervenants").Unprotect "1234"
Sheets("PPSPS").Unprotect "1234"
Sheets("intervenants").Cells(n, 3).Value = Feuil20.Cells(19, 3).Value

'Date début

Sheets("PPSPS").Cells(n, 14).Value = Feuil20.Cells(22, 4).Value
'Sheets("planning").Cells(n + 1, 4).Value = Feuil20.Cells(22, 4).Value

 'Date fin
Sheets("PPSPS").Cells(n, 15).Value = Feuil20.Cells(22, 6).Value
'Sheets("planning").Cells(n + 1, 5).Value = Feuil20.Cells(22, 6).Value

'Effectif moyen
Sheets("PPSPS").Cells(n, 16).Value = Feuil20.Cells(24, 4).Value

'Effectif de pointe
Sheets("PPSPS").Cells(n, 17).Value = Feuil20.Cells(24, 6).Value

'Membre CISSCT
Sheets("PPSPS").Cells(n, 18).Value = Feuil20.Range("H19").Value

Feuil20.Protect "1234", True, True, True
Sheets("intervenants").Protect "1234", True, True, True

While (Feuil3.Cells(i, 2).Value <> "")
    i = i + 1
    Wend

 Sheets("PPSPS").Unprotect "1234"
 Sheets("PPSPS").Cells(n, 6).Value = Feuil20.Range("H5").Value 'numéro IC
 Sheets("PPSPS").Cells(n, 5).Value = Feuil20.Range("E5").Value 'date IC

If Feuil20.Range("$D$126").Value = "Remis" Then
Sheets("PPSPS").Unprotect "1234"
Sheets("PPSPS").Cells(n, 7).Value = Feuil20.Range("E5").Value 'date PPSPS
Else
verif = True
Feuil3.Unprotect "1234"
Feuil3.Cells(i, 2).Value = "DEMANDE_DOC_INFO"
Feuil3.Unprotect "1234"
Feuil3.Cells(i, 9).Value = "PPS A REMETTRE"
Feuil3.Unprotect "1234"
Feuil3.Cells(i, 12).Value = Feuil20.Range("C7").Value

 Feuil3.Cells(i, 14).Locked = False

i = i + 1
End If

If UCase(Feuil20.Range("$D$96").Value) = "O" And Feuil20.Range("$D$128").Value = "Remis" Then 'Verifier si besoin de memeoire methodo et si oui si il a été remis

Sheets("PPSPS").Cells(n, 12).Value = Feuil20.Range("E5").Value
Feuil20.Unprotect "1234"
ElseIf UCase(Feuil20.Range("$D$96").Value) = "O" And Feuil20.Range("$D$128").Value <> "Remis" Then
verif = True
Feuil3.Unprotect "1234"
Feuil3.Cells(i, 2).Value = "DEMANDE_DOC_INFO" 'type d'observation
Feuil3.Unprotect "1234"
Feuil3.Cells(i, 9).Value = "MEMOIRE_METHODO A REMETTRE" 'nom du document
Feuil3.Unprotect "1234"
Feuil3.Cells(i, 12).Value = Feuil20.Range("C7").Value 'intervenants
Feuil3.Unprotect "1234"
'Feuil3.Range(Cells(i, 1), Cells(i, 13)).Locked = True
 Feuil3.Cells(i, 14).Locked = False
i = i + 1

End If

If UCase(Feuil20.Range("$D$115").Value) = "O" And Feuil20.Range("$D$127").Value = "Remis" Then 'Verifier si besoin de FDS et si oui si il a été remis

Feuil3.Unprotect "1234"
Sheets("PPSPS").Cells(n, 11).Value = Feuil20.Range("E5").Value

ElseIf UCase(Feuil20.Range("$D$115").Value) = "O" = True And Feuil20.Range("$D$127").Value <> "Remis" Then
verif = True
Feuil3.Unprotect "1234"
Feuil3.Cells(i, 2).Value = "DEMANDE_DOC_INFO"
Feuil3.Unprotect "1234"
Feuil3.Cells(i, 9).Value = "FDS_PRODUIT A REMETTRE"
Feuil3.Unprotect "1234"
Feuil3.Cells(i, 12).Value = Feuil20.Range("C7").Value
Feuil3.Unprotect "1234"
'Feuil3.Range(Cells(i, 1), Cells(i, 13)).Locked = True
 Feuil3.Cells(i, 14).Locked = False
i = i + 1
End If

Feuil20.Unprotect "1234"
Sheets("PPSPS").Unprotect "1234"

a = Format(Date, "dd-mmm-yy")

If Feuil20.Range("G129") <> "" Then 'autre document
verif = True
 Feuil3.Unprotect "1234"
 Feuil3.Cells(i, 2).Value = "DEMANDE_DOC_INFO"
 Feuil3.Unprotect "1234"
 Feuil3.Cells(i, 9).Value = Feuil20.Range("G129").Value
 Feuil3.Unprotect "1234"
 Feuil3.Cells(i, 12).Value = Feuil20.Range("C7").Value
 Feuil3.Unprotect "1234"
 'Feuil3.Range(Cells(i, 1), Cells(i, 13)).Locked = True
 Feuil3.Cells(i, 14).Locked = False
End If

'If verifde = True Then
 'Feuil3.Unprotect "1234"
  'Feuil3.Range("G5") = Feuil3.Range("G5") + 1
'End If

If Feuil20.CommandButton3.visible = True Then
Call Module3.Mail
End If

Sheets("intervenants").Unprotect "1234"
Call Module2.Date
'MsgBox "planning fait"
Call ModuleMail.Nouvelle
'MsgBox "nouvell ic fait"
'Call ModuleListe.liste
'MsgBox "liste fait"

Feuil20.Protect "1234", True, True, True
Sheets("intervenants").Protect "1234", True, True, True

 'test = False

Feuil3.Activate
Call ModuleCouleur.coloration
Feuil20.Activate

Feuil20.Shapes("CommandButton3").Top = "3140"
Feuil20.Shapes("CommandButton3").Width = "168,75"
Feuil20.Shapes("CommandButton3").Left = "14,25"
Feuil20.Shapes("CommandButton3").Height = "46,5"

Feuil20.Shapes("CommandButton2").Top = "3140"
Feuil20.Shapes("CommandButton2").Width = "168,75"
Feuil20.Shapes("CommandButton2").Left = "554,25"
Feuil20.Shapes("CommandButton2").Height = "46,5"

'If Feuil20.CommandButton3.visible = False Then
'Transfert.Show 0
'End If

Application.ScreenUpdating = True
Feuil3.Protect "1234", True, True, True
Feuil20.Protect "1234", True, True, True

MsgBox "Derniere Ligne"

End Sub

Code dans la UserForme

Private Sub UserForm_QueryClose(Cancel As Integer, CloseMode As Integer)
If CloseMode = vbFormControlMenu Then Cancel = True
Application.EnableEvents = True

End Sub

Private Sub CommandButton1_Click()
Dim i As Integer, DernLigne As Integer

DernLigne = Feuil3.Range("B105650").Endd(xlUp).Row
For i = 22 To DernLigne
Sheets("compte srnedus").Cells(i, 1).Value = Sheets("compte srnedus").Cells(i - 1, 1).Value + 1
Next
Feuil20.Unprotect "1234"
Feuil20.CommandButton3.visible = True
Feuil20.Protect "1234", True, True, True

Application.EnableEvents = True
Feuil3.Protect "1234", True, True, True
'Sheets("intervenants").Protect "1234", True, True, True
'Feuil20.Protect "1234", True, True, True
Application.EnableEvents = True
Unload Transfert
End Sub

En gros je lance la première macro puis j'ai ma UserForm qui apparaît et reste affiché mais après la deuxième macro pouf ça disparaît, alors que j'ai encore besoin de l'avoir afficher jusqu'à que je clique sur le bouton de la UserForme.


Bonjour, eric,

Non je viens d'essayer la UsF n’apparaît pas

Je me suis fait une reflexion qui n'a peut être rien à voir mais je lance ma macro depuis un Private Sub....() pcq c'est un bouton donc est ce que l'ouvrir depuis un Sub ou un Public Sub pourrait résoudre le problème ?

EDIT: J'ai essayé et ça marche pas

Rechercher des sujets similaires à "empecher fermeture userform"