Bonjour,


Je suis face à un problème et je pense que l'un de vous pourra m'aider.

J'ai fais une interface sur une feuille du classeur, il y'a des onglets (Rectangles avec des macros assignées), l'utilisateur saisie des données qui sont enregistrées dans un autre onglet (DataBase). Je souhaites deux choses
- quand il choisis un elements ou plusieurs dans une listebox, ces elements s'écrivent sur la feuille active et sur la feuille des données (DataBase), il s'agit bien d'un evenement
- Je souhaite que quand l'utilisateur reviens sur l'onglet les donnees se remettent dans les controls de la feuille

Ceci necessite de créer à la volée des controls ( le nombre de listebox ou combobox depend du parametrage de l'utilisateur).

Pour cela il y'a le code suivant. En effet quand je clque j'ai bien l'evenement qui fonctionne
Mais je voudrais aussi que l'evenement fonctionne quand je remet les valeurs dans les controls PAR MACRO, ce qui n'est pas le cas.

Comment faire pour que quand je selectionne mes valeurs pour ls reafficher, l'evenement (change) fonctionne aussi dans la macro ?
$

Ex : Classe Pour les listbox
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
Private WithEvents mclsLbx As MSForms.ListBox
 
 
 
 
'**********************Les listbox*********************'
 
Public Property Set Lbx(ByVal clsLbx As MSForms.ListBox)
    Set mclsLbx = clsLbx
End Property
 
 
Private Sub mclsLbx_Change()
 
'Process (Fonctionne bien)
 
End Sub
Code pour ajouter le bouton dans ma collection
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
'Process sur les listbox
Sub HookupLbx(ByVal MyName As String)
    Dim LBboxEvents As LBoxEvents
    Set LBboxEvents = New LBoxEvents
    Set LBboxEvents.Lbx = ThisWorkbook.Worksheets("Dashboard").OLEObjects(MyName).Object
    ColEvent.Add Item:=LBboxEvents, Key:=MyName
 
End Sub

Partie du Code general
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
Private ColEvent As New Collection
 
Sub enregistrement()
For i = 1 To NbL
 
                Call CreateListe(AllRange(i, 1), MyRange, MyTitle)
 
 
                'Pour palier à un bug VBA  je n'ai pas accés au control sans l'utilisation de ontime, mais je peux pas mettre la collection en parametre
                Application.OnTime Now, "'HookupLbx """ & AllRange(i, 1) & "'"
 
                Call Sauvegarde(MesParametres)
        next i
 
end sub
'Macro que je souhaiterais modifier pour pouvoir utiliser les evenements
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
Sub GetValues()
 
 
                    'Simuler Copier les resultats dans la ListBox$
                    Set MyList = ThisWorkbook.Worksheets("Dashboard").OLEObjects(MonObjetID)
                    'Set MyList = ColEvent.Item(MyRange.Value)
 
                    For P = 0 To MyList.Object.ListCount - 1
 
                        If MyList.Object.List(P) = AncienneValeur Then
                            MyList.Object.Selected(P) = True
                        End If
                    Next P
 
end sub