Luki
XLDnaute Accro
Bonsoir le forum
Absent depuis quelques temps pour cause de grosse surcharge de boulot, j'ai subi en plus le vol de mon Pc portable
Je ne vous parle pas du temps passé à essayer de retrouver une config portable qui remplace l'ancienne.... et à réinstaller mes outils....(Par contre pas de soucis côté sauvegardes, je le fais très régulièrement ! ouf!)
Donc, suite à la réinstallation de tout le bazar, xp, office et les servicepack qui vont avec, une de mes macros (qui me permet de consulter les tarifs de mes fournisseurs sur des fichiers xl fermés) me pond un petit bug : erreur 459, l'objet ou la classe ne gère pas le jeu d'évènement.
Après une rapide analyse, je vois que c'est un msforms.checkbox dans mon userform qui pose problème à l'initialisation de mon userform. Jamais eu ce bug auparavant.
Je crée des collections de mes contrôles via des classes avec public with events
Ci_dessous le code qui rempli les collections et ensuite, le module de classe incriminé.
A noter que je n'ai pas de soucis avec les autres contrôles que je gère de la même manière...
Le module du User form
le module de classe
Pour info, j'ai vérifié les références, Msforms 2.0 Object library est bien activée... et toutes celles que j'utilisais sur l'ancien poste semblent être activées....
Je sèche
Avez-vous une idée?
Merci d'avance et à bientôt
Absent depuis quelques temps pour cause de grosse surcharge de boulot, j'ai subi en plus le vol de mon Pc portable
Je ne vous parle pas du temps passé à essayer de retrouver une config portable qui remplace l'ancienne.... et à réinstaller mes outils....(Par contre pas de soucis côté sauvegardes, je le fais très régulièrement ! ouf!)
Donc, suite à la réinstallation de tout le bazar, xp, office et les servicepack qui vont avec, une de mes macros (qui me permet de consulter les tarifs de mes fournisseurs sur des fichiers xl fermés) me pond un petit bug : erreur 459, l'objet ou la classe ne gère pas le jeu d'évènement.
Après une rapide analyse, je vois que c'est un msforms.checkbox dans mon userform qui pose problème à l'initialisation de mon userform. Jamais eu ce bug auparavant.
Je crée des collections de mes contrôles via des classes avec public with events
Ci_dessous le code qui rempli les collections et ensuite, le module de classe incriminé.
A noter que je n'ai pas de soucis avec les autres contrôles que je gère de la même manière...
Le module du User form
Code:
Option Explicit
Private All_Buttons() As New Cl_EventBt
Private All_Chekboxs() As New Cl_EventCb
Private All_Listboxs() As New Cl_EventLb
Private All_OptionButtons() As New Cl_EventOb
----------------------------------
Private Sub UserForm_Initialize()
Dim MyCtl As Control
Dim iBt%, iCb%, iLb%, iOb%, iLv%, i%
'> mise à zéro de la clé de la collection 'TheMaterios'
MatKey = 0
'> Inhibition de l'événement clic au chargerment du UForm
Vp_InhibClic = True
'> Initialisation des classes de controles
iBt = 0: iCb = 0: iLb = 0: iOb = 0: iLv = 0
For Each MyCtl In Me.Controls
Select Case True
Case TypeOf MyCtl Is MSForms.CommandButton
ReDim Preserve All_Buttons(0 To iBt)
Set All_Buttons(iBt).TheBt = MyCtl
iBt = iBt + 1
[COLOR=Blue]'en passant ces lignes en commentaire, le reste de la macro et le Uf fonctionnent bien.[/COLOR]
[B][COLOR=Blue] Case TypeOf MyCtl Is MSForms.CheckBox
ReDim Preserve All_Chekboxs(0 To iCb)
Set All_Chekboxs(iCb).TheCb = MyCtl
iCb = iCb + 1
[/COLOR][/B] Case TypeOf MyCtl Is MSForms.ComboBox
ReDim Preserve All_Listboxs(0 To iLb)
Set All_Listboxs(iLb).TheLb = MyCtl
iLb = iLb + 1
Case TypeOf MyCtl Is MSForms.OptionButton
ReDim Preserve All_OptionButtons(0 To iOb)
Set All_OptionButtons(iOb).TheOb = MyCtl
iOb = iOb + 1
End Select
Next MyCtl
ETC....
le module de classe
Code:
'Classe d'événement de chekbox
Option Explicit
Public WithEvents TheCb As MSForms.CheckBox
Private Sub TheCb_Click()
If Vp_InhibClic Then Exit Sub
With TheCb
F_WksVal(.Name).Value = IIf(.Value = True, True, False)
Select Case .Name
Case "CB_SubFolder"
B_UpDateFilesList
UserForm1.Lb_Files.ListIndex = 0 'Ceci génère l'event 'clic' de 'lb_Files'
Case "CB_LR"
With UserForm1.Lb_Files
B_UpDateListView
End With
Case Else
End Select
End With
End Sub
Je sèche
Avez-vous une idée?
Merci d'avance et à bientôt