XL 2016 Modification ComboBox et Intitulés en fonction d'une autre ComboBox

MarineV

XLDnaute Nouveau
Bonjour,

J'ai un tableau Excel comprenant une colonne "Secteur", une colonne "Type" et plusieurs colonnes informations (nommées 1, 2, 3 ...etc). Pour ma colonne secteur, j'ai fait une validation de données (je peux donc sélectionner un secteur A, B ou C uniquement). Pour ma colonne type, j'ai également fait une validation de données (je peux sélectionner cette fois un type Aa, Ab, Ba, Bb, Ca, Cb). Ainsi, pour un secteur A, je peux avoir un type Aa ou Ab (même chose pour B et C).

A partir de ce tableau, j'ai créé un formulaire avec une combobox qui affiche les secteurs et une combobox qui affiche les types. J'aimerais que quand je sélectionne un secteur (A par exemple), les types correspondants s'affichent dans la deuxième combobox (Aa et Ab en l'occurence). Je pense que cela est tout à fait possible mais j'ai essayé plusieurs macro et je n'obtiens rien de cohérent...

Ensuite, j'aimerais également que les intitulés d'informations (également dans mon formulaire) s'affichent aussi en fonction du secteur sélectionné. J'ai 4 zones de textes dans tous les cas, mais j'aimerais par exemple que quand je sélectionne le secteur A, les intitulés des informations 1, 2, 3 et 4 s'affichent, tandis que si je sélectionne le secteur B, les intitulés des informations 5, 6, 7, et 8 s'affichent. Ici encore, j'ai essayé plusieurs choses mais rien de convaincant.

Je mets pour fichier en pièce jointe, je pense que ce sera plus clair !
J'espère que quelqu'un pourra m'aider.

Bonne journée !
Marine
 

Pièces jointes

  • Exemple.xlsm
    21.1 KB · Affichages: 22

Dranreb

XLDnaute Barbatruc
Le code de l'UserForm pourrait être quelque chose comme ça :
VB:
Option Explicit
Private WithEvents CL As ComboBoxLiées
Private LCou As Long, TVLgn(), ColDép As Long, TTit()

Private Sub UserForm_Initialize()
Set CL = CBxL.Création.ComboBoxLiées
CL.Plage Feuil1
CL.Add Me.ComboBox1, "Secteur"
CL.Add Me.ComboBox2, "Type"
CL.CorrespRequise = True
CL.Actualiser
TTit = CL.PlgTablo.Rows(0).Value
End Sub

Private Sub CL_Défait()
Dim N As Long
For N = 1 To 4
   Me("TextBox" & N).Text = ""
   Me("Label" & N + 3).Caption = ""
   Next N
End Sub
Private Sub CL_BingoUn(ByVal Ligne As Long)
LCou = Ligne
TVLgn = CL.PlgTablo.Rows(LCou).Value
Select Case TVLgn(1, 1)
   Case "A": ColDép = 3: Case "B": ColDép = 7: Case Else: ColDép = 3
   End Select
Dim N As Long
For N = 1 To 4
   Me("TextBox" & N).Text = TVLgn(1, N + ColDép - 1)
   Me("Label" & N + 3).Caption = TTit(1, N + ColDép - 1) & " :"
   Next N
End Sub
 

Discussions similaires

Réponses
28
Affichages
1 K
Réponses
5
Affichages
169

Statistiques des forums

Discussions
312 113
Messages
2 085 425
Membres
102 886
dernier inscrit
eurlece