Validation nouvelles données

airwave44 - 31 août 2012 à 19:12
NHenry Messages postés 15144 Date d'inscription vendredi 14 mars 2003 Statut Modérateur Dernière intervention 24 juillet 2024 - 31 août 2012 à 19:34
Bonjour,
j'ai un problème de validation des données modifiées sur un userform
excel 2010 VBA
Sur mon userform, j'ai un combobo1 qui me sert à alimenter le combobox2 qui, lui, me sert à alimenter le combobox3 qui lui me sert à alimenter le combobox4.
Une cascade...
le combobox4 quand à lui, me sert à alimenter 5 combobox.
tout cela fonctionne parfaitement.
par contre, quand je modifie une des valeurs des 5 combobox (alimentés par le combo4)
je n'arrive pas à enregistrer les nouvelles valeurs dans mon tableau.
pouvez vous m'aider ?
Voici le code entier sachant que mon souci se trouve dans les lignes de 3 à 7
Merci pour votre aide

Dim f
Private Sub CmdEnreg01_Click()
Sheets("baseart").Cells(Combobox4.ListIndex + 2, 5).Value = CmboxInfo.Value
Sheets("baseart").Cells(Combobox4.ListIndex + 2, 8).Value = Cmbox1.Value
Sheets("baseart").Cells(Combobox4.ListIndex + 2, 9).Value = Cmbox1.Value
Sheets("baseart").Cells(Combobox4.ListIndex + 2, 10).Value = Cmbox2.Value
Sheets("baseart").Cells(Combobox4.ListIndex + 2, 11).Value = Cmbox2.Value
End Sub
Private Sub UserForm_Initialize()
Set f = Sheets("Baseart")
Set mondico = CreateObject("Scripting.Dictionary")
For Each c In Range("a2:a" & [a65000].End(xlUp).Row)
mondico(c.Value) = ""
Next c
temp = mondico.keys
Call Tri(temp, LBound(temp), UBound(temp))
Me.ComboBox1.List = temp
End Sub
Private Sub ComboBox1_click()
Me.ComboBox2.Clear
Me.ComboBox3.Clear
Set mondico = CreateObject("Scripting.Dictionary")
For Each c In Range("a2:a" & [a65000].End(xlUp).Row)
If c Me.ComboBox1 Then mondico(c.Offset(0, 1).Value) ""
Next c
temp = mondico.keys
Call Tri(temp, LBound(temp), UBound(temp))
Me.ComboBox2.List = temp
End Sub
Private Sub ComboBox2_click()
Me.ComboBox3.Clear
Set mondico = CreateObject("Scripting.Dictionary")
For Each c In Range("c2:c" & [c65000].End(xlUp).Row)
If c.Offset(, -2) Me.ComboBox1 And c.Offset(, -1) Me.ComboBox2 Then mondico(c.Value) = ""

Next c
temp = mondico.keys
Call Tri(temp, LBound(temp), UBound(temp))
Me.ComboBox3.List = temp
End Sub
Private Sub ComboBox3_click()
Me.Combobox4.Clear
Set mondico = CreateObject("Scripting.Dictionary")
For Each c In Range("d2:d" & [d65000].End(xlUp).Row)
If c.Offset(, -3) Me.ComboBox1 And c.Offset(, -2) Me.ComboBox2 And c.Offset(, -1) = Me.ComboBox3 Then mondico(c.Value) = ""
Next c
temp = mondico.keys
Call Tri(temp, LBound(temp), UBound(temp))
Me.Combobox4.List = temp
End Sub
Private Sub Combobox4_click()
Me.LtboxCode.Clear
Set mondico = CreateObject("Scripting.Dictionary")
For Each c In Range("e2:e" & [e65000].End(xlUp).Row)
If c.Offset(, -4) Me.ComboBox1 And c.Offset(, -3) Me.ComboBox2 And c.Offset(, -2) = Me.ComboBox3 And c.Offset(, -1) = Me.Combobox4 Then mondico(c.Value) = ""
Next c
temp = mondico.keys
Call Tri(temp, LBound(temp), UBound(temp))
Me.LtboxCode.List = temp

Me.CmboxInfo.Clear
Set mondico = CreateObject("Scripting.Dictionary")
For Each c In Range("f2:f" & [f65000].End(xlUp).Row)
If c.Offset(, -5) Me.ComboBox1 And c.Offset(, -4) Me.ComboBox2 And c.Offset(, -3) = Me.ComboBox3 And c.Offset(, -2) = Me.Combobox4 Then mondico(c.Value) = ""
Next c
temp = mondico.keys
Call Tri(temp, LBound(temp), UBound(temp))
Me.CmboxInfo.List = temp
Me.CmboxInfo = Me.CmboxInfo.List(0)

Me.Cmbox1.Clear
Set mondico = CreateObject("Scripting.Dictionary")
For Each c In Range("h1:h" & [h65000].End(xlUp).Row)
If c.Offset(, -7) Me.ComboBox1 And c.Offset(, -6) Me.ComboBox2 And c.Offset(, -5) = Me.ComboBox3 And c.Offset(, -4) = Me.Combobox4 Then mondico(c.Value) = ""
Next c
temp = mondico.keys
Call Tri(temp, LBound(temp), UBound(temp))
Me.Cmbox1.List = temp
Me.Cmbox1 = Me.Cmbox1.List(0)

Me.Cmbox2.Clear
Set mondico = CreateObject("Scripting.Dictionary")
For Each c In Range("i2:i" & [i65000].End(xlUp).Row)
If c.Offset(, -8) Me.ComboBox1 And c.Offset(, -7) Me.ComboBox2 And c.Offset(, -6) = Me.ComboBox3 And c.Offset(, -5) = Me.Combobox4 Then mondico(c.Value) = ""
Next c
temp = mondico.keys
Call Tri(temp, LBound(temp), UBound(temp))
Me.Cmbox2.List = temp
Me.Cmbox2 = Me.Cmbox2.List(0)

Me.Cmbox3.Clear
Set mondico = CreateObject("Scripting.Dictionary")
For Each c In Range("j2:j" & [j65000].End(xlUp).Row)
If c.Offset(, -9) Me.ComboBox1 And c.Offset(, -8) Me.ComboBox2 And c.Offset(, -7) = Me.ComboBox3 And c.Offset(, -6) = Me.Combobox4 Then mondico(c.Value) = ""
Next c
temp = mondico.keys
Call Tri(temp, LBound(temp), UBound(temp))
Me.Cmbox3.List = temp
Me.Cmbox3 = Me.Cmbox3.List(0)

Me.Cmbox4.Clear
Set mondico = CreateObject("Scripting.Dictionary")
For Each c In Range("k2:k" & [k65000].End(xlUp).Row)
If c.Offset(, -10) Me.ComboBox1 And c.Offset(, -9) Me.ComboBox2 And c.Offset(, -8) = Me.ComboBox3 And c.Offset(, -7) = Me.Combobox4 Then mondico(c.Value) = ""
Next c
temp = mondico.keys
Call Tri(temp, LBound(temp), UBound(temp))
Me.Cmbox4.List = temp
Me.Cmbox4 = Me.Cmbox4.List(0)
End Sub
Sub Tri(a, gauc, droi) ' Quick sort
ref = a((gauc + droi) \ 2)
g gauc: d droi
Do
Do While a(g) < ref: g = g + 1: Loop
Do While ref < a(d): d = d - 1: Loop
If g <= d Then
temp a(g): a(g) a(d): a(d) = temp
g g + 1: d d - 1
End If
Loop While g <= d
If g < droi Then Call Tri(a, g, droi)
If gauc < d Then Call Tri(a, gauc, d)
End Sub

1 réponse

NHenry Messages postés 15144 Date d'inscription vendredi 14 mars 2003 Statut Modérateur Dernière intervention 24 juillet 2024 159
31 août 2012 à 19:34
Bonjour,

VB6 n'est pas VBA, je déplace.

Quand vous postez un code, merci d'utiliser la coloration syntaxique (3ième icône en partant de la droite : ).

---------------------------------------------------------------------
[list=ordered][*]Pour poser correctement une question et optimiser vos chances d'obtenir des réponses, pensez à lire le règlement CS, celui-ci pour bien poser votre question ou encore celui-ci pour les PFE et autres exercices.[*]Quand vous postez un code, merci d'utiliser la coloration syntaxique (3ième icône en partant de la droite : ).[*]En VB.NET pensez à activer Option Explicit et Option Strict (propriété du projet) et à retirer l'import automatique de l'espace de nom Microsoft.VisualBasic (onglet Références dans les propriétés du projet).[*]Si votre problème est résolu (et uniquement si c'est le cas), pensez à mettre "Réponse acceptée" sur le ou les messages qui vous ont aidés/list
---
Rejoignez-nous