Je viens vers sur un sujet qui je sais a du être abordé plusieurs fois mais sur lequel je ne m'en sors pas
et que je ne comprends pas
J'ai un créer un userform avec 2 combobox pour mettre des défauts en sortie de prélèvement
La combo box 1 et 3 sont alimentés par la feuille "Code default"
Combobox 1 faisant appel à la colonne B du tableau
Combobox 3 faisant appel à la colonne D du tableau selon valeur de la combobox 1
Et avec les particularités suivantes :
Liste sans doublon
Verrouiller la combobox 3 tant que la combobox 1 n'a pas de valeur
Je vous joint un fichier et espérant avoir été clair
Bonjour,
Joli fichier...
Je vois un souci dans votre userform utilisateur.
Vu que vous voulez évitez à jute titre le doublons dans la combobox1, si vous faites un choix de désignation via la combobox 1, il vous faut aussi définir un code de sous famille si vous voulez allez cherche l'info dans la colonne D. Comme allez-vous procéder ?
A moins que vous vouliez en combobox3 toute la liste des designations Sous_familles selon le choix effectué en combobox 1 ?
Sinon voici ce que vous devez modifier dans votre fichier
1. Au dessus des codes de l'userform --> Supprimer la variable Dim F
2. remplacez le code Private Sub UserForm_Initialize() par celui ci-dessous
VB:
Private Sub UserForm_Initialize()
Dim F As Worksheet
Dim tablo As Collection
Dim c As Range
Set tablo = New Collection
On Error Resume Next
With Sheets("Code_Default").ListObjects("Code_default").ListColumns(2)
For Each c In .DataBodyRange
tablo.Add c.Value, CStr(c.Value)
Next c
On Error GoTo 0
For Each Item In tablo
Me.ComboBox1.AddItem Item
Next
End With
Set F = Sheets("Salariés")
With Me
.ComboBox2.List = F.ListObjects("salariés").ListColumns(1).DataBodyRange.Value
.ComboBox3.Enabled = False
End With
End Sub
3. Dans la Private Sub ComboBox1_Change(), modifiez le début du code comme ceci:
Code:
If ComboBox3.Enabled = False Then ComboBox3.Enabled = True
If ComboBox1.Value = "" Then ComboBox3.Enabled = False: Exit Sub 'si la liste 1 est vide évite des erreurs
Dans l'attente de vous lire au sujet de la combobox3
Rem :
1. Dans votre fichier, vous avez mis une instruction Refreshall qui s'exécute à l'ouverture du fichier et provoque un souci car excel cherche quelque chose qui ne semble pas exister. Cette instruction est dédiée au TCD. Comme vous n'en avez pas, vous pourriez la supprimer.
2. Vous devriez supprimer les accents dans le noms des objets et formules. Avec VBA vous risquez toujours d'avoir un souci. A vous de voir mais par exemple au lieu de "Salariés", mettez "Salaries"
Pour information le "Refresh ALL" est liée a une actualisation avec mon ERP que j'ai supprimée pour ce fichier
car il y a des données confidentielle
Par contre , j'ai mis les codes que vous m'avez fourni ... mais je ne comprends pas trop car cela ne fonctionne pas ... surrement une incompréhension de ma part
Enfin dernier point , pour vous repondre :
Oui je souhaite qu' en combobox3 toute la liste des designations Sous_familles selon le choix effectué en combobox 1
Re
Si cela fonctionne mais peut-être n'avez-vous pas modifié correctement
Le plus simple est que je vous donne votre fichier modifié
J'ai tenu compte de la liste des désignations selon le combobox1