Impossible d'afficher un userForm - Erreur 361

Bonjour,
J'ai crée un nouveau UserForm dans une application qui fonctionne parfaitement en mode création lorsqu'il est lancé via la commande Executer (F5). Comme tous les autres UserForm de mon application. En revanche, lorsque j'essaye d'ouvrir cette fenêtre à l'aide des instructions suivantes :
Load frmPimsleur
FrmPimsleur.Show
Dès l'instruction Load j'obtiens l'erreur d'exécution 361 suivante :

image

J'ai récrée un autre Userform et faire un copier/coller des contrôles du UserForm qui ne fonctionne pas. Et ce dernier marche sans aucun problème.
J'aimerai malgré tout comprendre qu'est-ce qui causerait ce problème à ce UserForm.
La seule piste que j'ai est que dans le code lorsqu'on je saisi un point à la suite du nom du formulaire, le menu contextuel affiche des sous commandes à l'exception de la comme Show (FrmPimsleur.Show). Pour tous les autres UserForm dès que je tape le point, cette commande Show apparait dans la liste. C'est comme si l'objet n'est pas reconnu comme un UserForm. Il ya du code dans l'évènement initialize mais que je commente ou pas ce code, le problème persiste et si j'exécute la Form de façon autonome en mode création ça marche.
Je ne peux malheureusement pas fournir le code exemple car cela ne se produit que dans mon application.
Voici en revanche le seul code qui est dans ce formulaire:

Private Sub UserForm_Initialize()
    Dim CategWrks As Worksheet, rg As Range, rg1 As Range, idx As Integer, i As Integer
    Dim j As Integer, k As Integer, l As Integer, m As Integer, n As Integer, o As Integer
    Dim tbl As ListObject, tblCateg As ListObject

    Me.Height = 340
    Me.Width = 678

    lblDate1 = "": lblDate2 = "": lblDate3 = "": lblDate4 = "": lblDate5 = "": lblDate6 = ""
    lblDate1.BackColor = &HC0C0C0: lblDate1.ForeColor = &HC00000
    lblDate2.BackColor = &HC0C0C0: lblDate2.ForeColor = &HC00000
    lblDate3.BackColor = &HC0C0C0: lblDate3.ForeColor = &HC00000
    lblDate4.BackColor = &HC0C0C0: lblDate4.ForeColor = &HC00000
    lblDate5.BackColor = &HC0C0C0: lblDate5.ForeColor = &HC00000
    lblDate6.BackColor = &HC0C0C0: lblDate6.ForeColor = &HC00000

    'On récupère dans la table CATEGORY la liste des onglets (feuilles ou tables)
    Set CategWrks = ThisWorkbook.Sheets("SUIVI_EVAL")
    Set tblCateg = CategWrks.ListObjects("TAB_SUIVI_EVAL")
    Set rg = tblCateg.DataBodyRange

    j = 0: k = 0: l = 0: m = 0: n = 0: o = 0
    If Not rg Is Nothing Then
        For idx = 1 To rg.Rows.Count
            If Trim(rg(idx, 5).Value) = "PIMSLEUR" And Trim(rg(idx, 8).Value) = "JEU_1" Then
                lstJeuxMots.AddItem
                lstJeuxMots.List(j, 0) = rg(idx, 2).Value
                j = j + 1
                If lblDate1.Caption = "" Then lblDate1.Caption = rg(idx, 6).Value
            ElseIf Trim(rg(idx, 5).Value) = "PIMSLEUR" And Trim(rg(idx, 8).Value) = "JEU_2" Then
                lstJeuxMots.List(k, 1) = rg(idx, 2).Value
                k = k + 1
                If lblDate2.Caption = "" Then lblDate2.Caption = rg(idx, 6).Value
            ElseIf Trim(rg(idx, 5).Value) = "PIMSLEUR" And Trim(rg(idx, 8).Value) = "JEU_3" Then
                lstJeuxMots.List(l, 2) = rg(idx, 2).Value
                l = l + 1
                If lblDate3.Caption = "" Then lblDate3.Caption = rg(idx, 6).Value
            ElseIf Trim(rg(idx, 5).Value) = "PIMSLEUR" And Trim(rg(idx, 8).Value) = "JEU_4" Then
                lstJeuxMots.List(m, 3) = rg(idx, 2).Value
                m = m + 1
                If lblDate4.Caption = "" Then lblDate4.Caption = rg(idx, 6).Value
            ElseIf Trim(rg(idx, 5).Value) = "PIMSLEUR" And Trim(rg(idx, 8).Value) = "JEU_5" Then
                lstJeuxMots.List(n, 4) = rg(idx, 2).Value
                n = n + 1
                If lblDate5.Caption = "" Then lblDate5.Caption = rg(idx, 6).Value
            ElseIf Trim(rg(idx, 5).Value) = "PIMSLEUR" And Trim(rg(idx, 8).Value) = "JEU_6" Then
                lstJeuxMots.List(o, 5) = rg(idx, 2).Value
                o = o + 1
                If lblDate6.Caption = "" Then lblDate6.Caption = rg(idx, 6).Value
            End If
        Next
    End If

    'Mettre en évidence les jeux activés ou débloqués
    If Trim(lblDate1.Caption) <> "" Then _
       If Date >= CDate(lblDate1.Caption) Then lblDate1.BackColor = vbGreen ': lblDate1.ForeColor = vbWhite

End Sub

Merci d'avance au cas où quelqu'un aurait une idée quant à la cause et la résolution de ce type de problème.

Bonjour cheickna,

Peux-tu essayer ceci :

  1. Exporte ton formulaire dans un fichier .frm ;
  2. Supprime tous les objets (« controls ») qu’il contient ;
  3. Supprime toutes les macros liées aux objets dans ton formulaire ;
  4. Lance-le depuis ton autre macro.

Cette même erreur revient-elle ?

Essaye ensuite de réimporter le formulaire depuis le fichier exporté. Cela corrige-t-il le problème ?

Bonjour,

A+

Bonjour Valky68,

Le fichier exporté ne comporte aucun contrôle. Curieux.
Pourtant, il y a une ListBox, des labels et des boutons. Voir copie d'écran ci-après et les deux fichiers exportés sont joints au message.

image
12frmpimsleur.frm (3.96 Ko)
14frmpimsleur.frx (5.02 Ko)

Bonjour

Un exemple du fichier serait bien pratique pour résoudre le problème

Cordialement

Bonjour cheickna,

Si tu enlèves simplement l'instruction "Load frmPimsleur" et ne laisse que "FrmPimsleur.Show", cela ne fonctionne pas mieux ?

Cdlt,

Cylfo

Bonjour Cheickna,

J’ai importé ton formulaire dans un nouveau fichier Excel, tous les éléments y sont bien présents. L’erreur que j’obtiens est liée au fait que la macro UserForm_Initialize cherche des données dans des feuilles que je n’ai pas…

C’est vrai que si partageais ton fichier, on pourrait mieux t’aider à trouver…

image

UserForm_Initialize

Bonjour à tous,
Merci pour vos retours.
Le problème persiste toujours même si j'enlève l'instruction Load pour faire directement le Show.
@Valky68: Effectivement c'est normal l'erreur que vous obtenez car il vous manque l'onglet SUIVI_EVAL qui contient des données. Mais comme je l'avais dit au départ, même en mettant en commentaire le code de la macro UserForm_Initialize le problème existe. C'est pour cela que j'ai créé un autre UserForm pour copier/coller les éléments et qui fonctionne. Cette erreur m'intrigue particulièrement même si j'ai pu la contourner par ce nouveau formulaire mais cela ne me satisfait clairement pas. L' erreur est très contextuelle car c'est la seule Form qui a ce problème sur 57 que contient le projet dont 7 ont été créées après sans problème.
Je comprends bien que sans fournir l'exemple concret c'est difficile que vous puissiez m'aider mais je ne peux faire fournir tout le projet qui contient 57 forms, plus de 150 macros, plus de 80 onglets et des données qui sont en plus liées à deux bases de données externes (Access). Sans toute la configuration locale qui fait partie de mon projet il vous sera impossible de lancer l'application.
Je vais néanmoins créer un nouveau projet en important uniquement ce formulaire ainsi que l'onglet manquant et si j'ai le même problème je vous reviendrais avec cet exemple.
Bien à vous
Cheickna

Bonjour,

Tu colles un point d'arrêt dans ton initialize dès la première ligne et tu exécutes ton code ensuite ligne par ligne jusqu'à détecter la ligne qui plante...

A+

Bonjour Galopin01,
C'est ce que j'ai fait en premier mais l'erreur d'exécution intervient avant même d'entrer dans cet évènement.
Finalement je viens de supprimer tous les objets et code du projet global en gardant uniquement le formulaire à problème, puis j'ai crée un userForm simple avec un seul bouton qui ouvre le UserForm qui pose des soucis. L'idée c'est d'éviter l'expot/import et de tester la feuille initiale. Plus aucun problème car l'affichage est parfait.
Ce qui veut dire que le problème vient probablement d'un élément extérieur à ce UserForm.
Voici le mini projet. Il suffit de cliquer sur le bouton Afficher, ce qui ne marche pas dans mon programme principal même après avoir tester le code d'affichage à partir de 3 autres Forms différents dans le projet.

17test-user-form.xlsb (58.62 Ko)
Rechercher des sujets similaires à "impossible afficher userform erreur 361"