Affichage valeur dans userform en fonction d'une autre

osiris150

XLDnaute Occasionnel
Bonjour à tous,

Je galère à trouver une solution en vba afin d'afficher un ou plusieurs valeurs dans un userform en fonction de la valeur d'une autre colonne.
Je m'explique :

En colonne A, j'ai une liste de code article. En colonne B j'ai une liste de nuances.
Un même code article peut avoir plusieurs nuances.
Donc ce que je souhaiterais faire, c'est de pouvoir afficher les nuances de l'article dans le userform.
Si l'on prend l'exemple qui est dans pièce jointe avec l'article 1111 qui peut avoir comme nuance F1, F2 et F3, il faudrait que dans l'userform apparaisse dans les textbox28, textbox29 et textbox30 les valeurs F1, F2 et F3

Je vous remercie par avance pour votre aide.
Codrialement
 

Pièces jointes

  • Nuances.xlsm
    23.5 KB · Affichages: 35

osiris150

XLDnaute Occasionnel
Juste une dernière chose Robert, est ce qu'il est possible que les données apparaissent dans l'userform même si on ne clique pas sur la colonne de code ? En fait je voudrais que le résultat s'affiche même si on clique en b, c d etc...
Merci
 

Robert

XLDnaute Barbatruc
Repose en paix
Le code adapté :
VB:
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
Dim TV As Variant 'déclare la variable TV (Tableau des Valeurs)
Dim D As Object 'déclare la variable D (Dictionnaire)
Dim I As Integer 'déclare la variable I (Incrément)
Dim TMP As Variant 'déclare la variable TMP (Tableau TeMPoraire)

If Application.Intersect(Target, Range("A3").CurrentRegion.EntireRow) Is Nothing Then Exit Sub 'si la sélection a lieu alleurs que dans une ligne de code, sort de la procédure
TV = Me.Range("A3").CurrentRegion 'définit le tableau des valeurs TV
Set D = CreateObject("Scripting.Dictionary") 'définit le dictionnaire D
For I = 1 To UBound(TV, 1) 'boucle sur toutes les lignes I du tableau des valeurs TV
    If CStr(TV(I, 1)) = CStr(Cells(Target.Row, 1)) Then D(TV(I, 2)) = "" 'si les données correspondent, alimente le dictionnaire D avec la nuance
Next I 'prochaine ligne de la boucle
TMP = D.Keys 'alimente le tableau temporaire D avec la liste du dictionnaire D sans doublon
For I = 0 To 4 'boucle sur les 5 textboxes
    UserForm1.Controls("Textbox" & 28 + I).Value = "" 'vide la Texbox de la boucle
Next I 'prochaine textbox de la boucle
For I = 0 To 4 'boucle sur les 5 textboxes
    On Error Resume Next 'gestion des erreur, en cas d'erreur va à la ligne suivante
    UserForm1.Controls("Textbox" & 28 + I).Value = TMP(I) 'alimente la textbox de la boucle avec la nuance du tableau (génére une erreur quand plus assez de nuance)
    If Err > 0 Then Exit For 'si une erreur a été générée, sort de la boucle
Next I 'prochaine textbox de la boucle
On Error GoTo 0 'annule la gestion des erreurs
UserForm1.Show 'affiche l'UserForm1
End Sub
 

Discussions similaires

Statistiques des forums

Discussions
311 720
Messages
2 081 913
Membres
101 837
dernier inscrit
Ugo