[VBA] Userform dynamic- comment proceder?

G@mbit

XLDnaute Nouveau
Salut à tous!

Me voilà encore collé sur un projet excel.

J'aimerai mettre en place un userform dans un fichier déja existant (une base de données) regroupant des "défauts".
pour illustrer, cette BdD contient 3 défauts: A, B et C.
cependant, chaque défaut peut se manifester sous plusieurs formes, ce qui me donne:
A.1, A.2, A.3, B.1, B.2, C.1, C.2, C.3, C.4, C.5, C.6 etc etc...
Mon objectif est de "brider" l'utilisateur en l'empechant de selectionner le défaut A et d'y accoller par exemple un C.1 (je précise que je dois obligatoirement séparer le défaut et la forme).

De cette maniere, j'aimerais rendre dynamique des Combobox:
En selectionnant dans une premiere ComboBox le défaut A, la seconde ComboBox ne lui permet plus que de selectionner les formes A.1, A.2, A.3.....
L'objectif étant de stopper les erreurs de saisies.
Précision: il ne m'est pas possible d'utiliser des checkbox car j'ai trop de défauts et de causes différentes.

Ma question:
Est-ce possible?
Comment?

Merci d'avance!
 

PrinceCorwin

XLDnaute Occasionnel
Re : [VBA] Userform dynamic- comment proceder?

Bonjour,

Voici en pièce jointe un exemple de ce que tu demandes.
Je n'ai pas de mérite.. Cela m'a pris secondes depuis le site de BOISGONTIER.

A adapter selon ta situation.

Cordialement
 

Pièces jointes

  • FormComboBoxCascade.xls
    58 KB · Affichages: 154

G@mbit

XLDnaute Nouveau
Re : [VBA] Userform dynamic- comment proceder?

Super, c'est exactement ce que je chercher à faire.
Dim f
Private Sub UserForm_Initialize()
Set f = Sheets("BD")
Set d = CreateObject("Scripting.Dictionary")
For Each c In f.Range("a2:a" & f.[a65000].End(xlUp).Row)
d.Item(c.Value) = ""
Next c
Me.ComboBox1.List = d.keys
End Sub

Private Sub ComboBox1_Change()
Me.ComboBox2.Clear
i = 0
For Each c In f.Range("a2:a" & f.[a65000].End(xlUp).Row)
If c = Me.ComboBox1 Then
Me.ComboBox2.AddItem c.Offset(0, 1)
Me.ComboBox2.List(i, 1) = c.Offset(0, 2)
i = i + 1
End If
Next c
Me.ComboBox2.SetFocus
SendKeys "{F4}"
End Sub

Private Sub ComboBox2_click()
Me.adresse = Me.ComboBox2.Column(1)
End Sub

Par contre, je ne comprends rien au programme (donc pas facile de l'adapter).

peut etre peux tu me l'expliquer?
 

G@mbit

XLDnaute Nouveau
Re : [VBA] Userform dynamic- comment proceder?

Autre question:

Dans le cas où j'ajoute une notion de temps, je souhaiterais faire en sorte que le défaut A soit obligatoirement supérieur ou égal à 5 minutes et le B obligatoirement inférieur à 5.
Comment faire pour que ces conditions soient obligatoirement respectées (si NOK, un message d'alerte apparait)?
 

Discussions similaires

Réponses
21
Affichages
888