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 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
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 : 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
'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 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
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
Partager