Valeur ComboBox1 fige valeur ComboBox2 ou TextBox suivant un tableau

Bonjour à tous, toujours dans mon apprentissage du VBA je me suis attaqué a une macro que je n'arrive pas à coder correctement, il y a quelque chose qui m'échappe.

J'ai des données sur trois colonnes colonnes A (Liste de mes Deviseurs) et B (Liste de mes Clients) et C (Deviseur en fonction du client), les colonnes B et C sont dépendantes car chaque deviseur à son propre client dédié. Mais je garde la colonne A par exemple pour un client qui n'est pas attribué.

Ensuite j'ai dans un UserForm deux ComboBox, , 1 pour la liste des Deviseurs suivant Colonne A, 2 pour la liste des client suivant Colonne B.

Dans ma Macro j'aimerai:

- Si je sélectionne un client dans la CB2, c'est qu'il a un Deviseur dédié et du coup forcer la valeur de la CB1 (Ex: Je sectionne dans ma CB1 le client de la cellule B5, cela fige la CB2 avec le deviseur de la colonne C5).

- Si j'écris le nom d'u nouveau client, rien ne change dans la CB2, j'ai juste a choisir un Deviseur dans sa liste.

Je ne sais pas si on peut taper une valeur autre que dans la liste d'une ComboBox et s'en servir, si ce n'est pas possible je passerai par un TextBox.

Voici ce que j'ai pour l'instant en code, tout est ok pour moi jusqu’à la partie "Détermination du Deviseur en fonction du client" je pensais que cela fonctionnerai mais rien ne se passe quand je teste. Quelqu'un aurait-il une idée

nbrDeviseur = Application.WorksheetFunction.CountA(Range("B3:B100")) 'B est ma colonne Deviseurs
nbrClient = Application.WorksheetFunction.CountA(Range("J3", Cells(Rows.Count, "J").End(xlUp))) 'J est ma colonne client

ReDim equipeDeviseur(nbrDeviseur, 3) 'Création du tableau avec B Colonne Deviseur, les 3 autres colonnes servent à d'autres macros, ici seul la colonne 0 nous est utile
ReDim nomClient(nbrClient, 1) ' Création du tableau avec J colonne Client et K colonne Deviseur en fonction du client.

'Création des listes déroulantes dans l'userform
    For i = 0 To nbrDeviseur
        If equipeDeviseur(i, 0) <> "" Then
            Deviseur_CB.AddItem equipeDeviseur(i, 0)
        End If
 Next i
 For i = 0 To nbrClient
        If nomClient(i, 0) <> "" Then
            ComboBox2.AddItem nomClient(i, 0)
        End If
    Next i

'Détermination du Deviseur en fonction du client
For i = 0 To nbrClient
        If ComboBox2.Value = nomClient(i, 0)
            ComboBox1.Value = nomClient(i, 1)
        End If
Next i

Bonjour, sans fichier exemple difficile de se faire une idée.

Pour commencer la saisie d'un nouveau client qui n'est pas dans la liste est une mauvaise idée si vous souhaitez que vos combobox réagisse de la même façon.

Pour le code des combobox. rien de plus simple lors de l'évenement "change" de l'une des combobox.

il suffit de donner le même numéro de liste à l'autre combobox.

Private Sub ComboBox1_Change()
ComboBox2.ListIndex = ComboBox1.ListIndex
End Sub

Et inversement quand c'est la 2 qui change.

Bonjour Xmenpl,

Merci pour ton retour, en fait je suis trop pressé je n'étais pas encore arrivé là dans mes cours mais en effet le _Change fonctionne parfaitement.

Par contre j'ai une question que je peine à trouver, avec les cases à cocher, on peut faire le même type de manipulation avec le _Click mais existe-il un _unclick ou quelque chose dans le genre ou faut il forcément passer par le True/False ?

Bonjour, et en effet faut passer par False ou True.

Ça marche merci à toi pour tes réponses

Rechercher des sujets similaires à "valeur combobox1 fige combobox2 textbox suivant tableau"