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 SubLorsque 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 = FalseJ'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
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 SubEn 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.