Bonjour le forum,

J'ai un problème que je n'arrive pas à solutionner
Sur un formulaire, j'ai :

- 1 ComboBox
- 1 ListBox
- 1 TextBox

En fonction de la valeur de la ComboBox, la ListBox OU la TextBox est visible. Ces deux dernières ont dans leurs propriétés TAG chacune le numéro de colonne dans laquelle elles doivent renvoyer la valeur saisie via le code suivant :
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
18
19
20
Private Sub CommandButton1_Click()
Dim O As Worksheet 'déclare la variable O (Onglet)
Dim DL As Integer 'déclare la variable DL (Dernière Ligne)
Dim CTRL As Control 'déclare la variable CTRL (ConTRôLe)
 
Set O = Worksheets("Général") 'définit l'ongle O
Application.ScreenUpdating = False 'masque les rafraîchissements d'écran
For Each CTRL In Me.Controls 'boucle sur tous les contrôles de l'UserForm
 
Next CTRL 'prochain contrôle de la boucle
'définit la ligne LI (première ligne vide de la colonne 2 (=B) de l'onglet O
LI = O.Cells(Application.Rows.Count, 1).End(xlUp).Row + 1
For Each CTRL In Me.Controls 'boucle sur tous les contrôles de l'UserForm
    'si la propriété [Tag] du contrôle n'est pas vide renvoie sa valeur dans la ligne I colonne Tag du contrôle de l'onglet O
    If CTRL.Tag <> "" Then O.Cells(LI, CByte(CTRL.Tag)) = CTRL.Value
Next CTRL 'prochaine contrôle de la boucle
Application.ScreenUpdating = True 'affiche les rafraîchissements d'écran
MsgBox "Les données ont été enregistrées avec succés" 'message
Unload Me 'vide et ferme l'UserForm
End Sub
Problème : c'est toujours la ListBox qui renvoie sa valeur même quand je la désactive avec ListBox.Enabled = False et ListBox.Visible = False

Je voudrais pouvoir réellement récupérer la valeur de l'un OU de l'autre.
Le code (sûrement un peu sale...) :

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
18
19
20
21
22
 
Private Sub ComboBox4_Change() 
 
If ComboBox4 = "Commande" Or ComboBox4 = "Réservation" Then
 
ListBox1.Enable = False
ListBox1.Visible = False
TextBox11.Visible = True
TextBox11.Enabled = True
 
End If
 
If ComboBox4 = "Commande sur réservation" Then
 
ListBox1.Visible = True
ListBox1.Enabled = True
TextBox11.Enabled = False
TextBox11.Visible = False
 
End If
 
End Sub
Si une bonne âme pouvait passer par là
Merci !!