Erreur 429 à l'ouverture du classeur

Bonjour à tous,

je me permets de créer ce sujet car après une matinée de recherches, je n'ai pas trouvée la solution.

Voici le contexte. J'ai créé un fichier mis à disposition de plusieurs utilisateurs sur une passerelle.

Voici la sub d'ouverture:

Sub Workbook_Open()

Application.DisplayFullScreen = True
ActiveWindow.DisplayHeadings = False
Application.DisplayFormulaBar = False
'Application.Calculation = xlCalculationManual
'Application.Calculation = xlCalculationAutomatic

Feuil2.Visible = False 
Feuil6.Visible = False 
Feuil5.Visible = True 
Feuil4.Visible = True 

Application.WindowState = xlMinimized
Application.Visible = False
UFaccueil.Show 0

End Sub

Lorsque le fichier est s'ouvre pour la première fois e, la sub s'exécute sans probleme.

En revanche, si je ferme le fichier et que je le réouvre, alors qu'un autre classeur est ouvert , j'obtiens systématiquement l'erreur

"erreur d'exécution '429': un composant ActiveX ne peut pas créer d'objet'"

Visiblement c'est l'affichage de l'userform UFaccueil.Show 0 qui est en cause.

Quelqu'un pourrait il m'éclairer?

Au cas ou, voici la sub de fermeture du classeur / userform:

Application.DisplayFullScreen = False
ActiveWindow.DisplayHeadings = True
Application.DisplayFormulaBar = True
ActiveWindow.DisplayWorkbookTabs = True
ActiveWindow.DisplayHorizontalScrollBar = True
ActiveWindow.DisplayVerticalScrollBar = True

ActiveWorkbook.Save

Application.WindowState = xlMaximized
Application.Visible = True

Workbooks("xxxx.xlsm").Close
savechanges = False

J'essaie de solliciter le forum le moins possible, mais même si grâce à vous j'ai réussi à bien progresser, je pense que les bases me manquent...

Dans l'attente de vous lire, je vous souhaite une bonne journée

Salut Chuckeay,

Visiblement c'est l'affichage de l'userform UFaccueil.Show 0 qui est en cause.

il faut voir le code du Userform sinon

Salut Chuckeay,

Visiblement c'est l'affichage de l'userform UFaccueil.Show 0 qui est en cause.

il faut voir le code du Userform sinon

Merci m3ellem1 pour ce retour. Je n'ai malheureusement pas la possibilité de joindre le fichier pour des raisons professionnelles.

Néanmoins, voici le code de l'userform qui se lance à l'ouverture:

Private Sub Image1_Click() 'ouverture mdp 1

MDP1.Show

End Sub
Private Sub Image2e_Click() 'ouverture mdp2

MDP2.Show

End Sub

Private Sub Image3_Click() 

Feuil5.Select
UFE.Show

End Sub

Private Sub Image4_Click()
UFQ.Show
Feuil4.Select
Call Déprotéger
End Sub

Private Sub Label5_Click() 'stats

With MDP3
.Label1.Caption = "              STATISTIQUES"

End With
MDP3.Show
End Sub

Private Sub Label4_Click() ' parametres

With MDP3
.Label1.Caption = "               PARAMETRES"
End With
MDP3.Show
End Sub

Private Sub UserForm_QueryClose(Cancel As Integer, CloseMode As Integer) 'fermeture du formulaire

Application.Visible = False

If MsgBox("Quitter l'application?", vbYesNo + vbQuestion, (x)) = vbYes Then

'affichage discret

Application.DisplayFullScreen = False
ActiveWindow.DisplayHeadings = True
Application.DisplayFormulaBar = True
ActiveWindow.DisplayWorkbookTabs = True
ActiveWindow.DisplayHorizontalScrollBar = True
ActiveWindow.DisplayVerticalScrollBar = True

ActiveWorkbook.Save

Application.WindowState = xlMaximized
Application.Visible = True

Workbooks("xxxxx.xlsm").Close
savechanges = False

Else

Cancel = True
End If

End Sub

Private Sub Label3_Click() 'upsd
MDP4.Show
End Sub

Private Sub userform_activate()

Dim ws As Worksheet
Dim i As Integer

'liste d'attente 
ListBox1.Clear

Set ws = Sheets("Q") '

With ws

For i = 4 To 10000

If (ws.Range("C" & i) <> "" And (ws.Range("I" & i) = "" Or ws.Range("I" & i) = "")) Then

            Me.ListBox1.AddItem

            n = Me.ListBox1.ListCount - 1
            If ws.Range("N" & i) = "Récla" Then
            Me.ListBox1.List(n, 0) = ws.Range("N" & i)
            Else
            Me.ListBox1.List(n, 0) = ws.Range("M" & i)
            End If
            Me.ListBox1.List(n, 1) = ws.Range("C" & i)
            Me.ListBox1.List(n, 2) = ws.Range("D" & i)
            Me.ListBox1.List(n, 3) = ws.Range("E" & i)
            Me.ListBox1.List(n, 4) = ws.Range("F" & i)
            Me.ListBox1.List(n, 5) = ws.Range("G" & i)
            Me.ListBox1.List(n, 6) = row & i

  End If

      Next

End With

TextBox1.Value = ListBox1.ListCount 

'Liste d'attente 2

ListBox2.Clear

Set ws = Sheets("E")

With ws

For i = 2 To 3000

If ws.Range("A" & i) <> "" And ws.Range("C" & i) = "" Then

            Me.ListBox2.AddItem

            n = Me.ListBox2.ListCount - 1

            Me.ListBox2.List(n, 0) = row & i
            Me.ListBox2.List(n, 1) = ws.Range("A" & i)
            Me.ListBox2.List(n, 2) = ws.Range("B" & i)
            Me.ListBox2.List(n, 3) = ws.Range("D" & i)
            Me.ListBox2.List(n, 4) = ws.Range("G" & i)

  End If

      Next

End With

TextBox2.Value = ListBox2.ListCount 

End Sub

En gros, à l'ouverture du classeur, cet userform se lance et doit rester en premier plan. Il sert en quelque sorte de portail et permet d'accéder à l'ensemble des userforms présents dans le projet.

A l'ouverture du classeur, si je remplace "UFaccueil.Show 0" par "UFaccueil.Show" l'erreur ne se produit plus mais l'userform n'est plus en premier plan...

Merci et à bientôt.

Rechercher des sujets similaires à "erreur 429 ouverture classeur"