Affectation de valeur à des textbox en fonction d'une combobox

Résolu
iallex Messages postés 10 Date d'inscription vendredi 29 janvier 2010 Statut Membre Dernière intervention 31 mai 2010 - 28 mai 2010 à 16:32
cs_zeps2 Messages postés 61 Date d'inscription vendredi 9 novembre 2007 Statut Membre Dernière intervention 28 octobre 2011 - 31 mai 2010 à 17:37
Bonjour ayant réalisé mon premier fichier contenant des userforms, j'aurais une petite question.
Dans un userform j'ai une combobox ou l'utilisateur choisit un numéro.
En fonction de son choix j'aimerai faire apparaitre dans les listbox présentent sur le même userform des valeurs qui dépendent du choix de la valeur de la combobox.
Voici mon code . Merci d'avance
Iallex


Private Sub userform_Initialize()
Sheets("sauvegarde").Select
ComboBox1.RowSource = "A2:A" & Range("A65536").End(xlUp).Row
Dim NUM As Integer
ComboBox1.Value = NUM

TextBox22.Value = Range("B" & NUM + 1)
TextBox23.Value = Range("C" & NUM + 1)
TextBox1.Value = Range("D" & NUM + 1)
TextBox2.Value = Range("E" & NUM + 1)
TextBox3.Value = Range("F" & NUM + 1)
TextBox4.Value = Range("G" & NUM + 1)
TextBox5.Value = Range("H" & NUM + 1)
TextBox6.Value = Range("I & num + 1")
TextBox7.Value = Range("J" & NUM + 1)
TextBox8.Value = Range("K" & NUM + 1)
TextBox9.Value = Range("L" & NUM + 1)
TextBox10.Value = Range("M" & NUM + 1)
TextBox11.Value = Range("N" & NUM + 1)
TextBox12.Value = Range("O" & NUM + 1)
TextBox13.Value = Range("P" & NUM + 1)
TextBox14.Value = Range("R" & NUM + 1)
TextBox15.Value = Range("S" & NUM + 1)
TextBox16.Value = Range("U" & NUM + 1)
TextBox17.Value = Range("V" & NUM + 1)
TextBox18.Value = Range("X" & NUM + 1)
TextBox19.Value = Range("Y" & NUM + 1)
TextBox20.Value = Range("Z" & NUM + 1)
TextBox24.Value = Range("AP" & NUM + 1)
TextBox25.Value = Range("AQ" & NUM + 1)

End Sub

Private Sub btnQuitter_Click()
Unload Me
Sheets("analyse").Select
ActiveSheet.Protect "1234"
End Sub

Private Sub btnValider_Click()

Dim Ligne As Long

With ThisWorkbook.Sheets(2)

If Modification Then
Ligne = ActiveCell.Row
Else


Ligne = .Range("A65536").End(xlUp).Row + 1
End If



Sheets("sauvegarde").Unprotect "1234"
.Cells(Ligne, 1) = Label62
.Cells(Ligne, 2) = TextBox22
.Cells(Ligne, 3) = TextBox23
.Cells(Ligne, 4) = TextBox1
.Cells(Ligne, 5) = TextBox2
.Cells(Ligne, 6) = TextBox3
.Cells(Ligne, 7) = TextBox4
.Cells(Ligne, 8) = TextBox5
.Cells(Ligne, 9) = TextBox6
.Cells(Ligne, 10) = TextBox7
.Cells(Ligne, 11) = TextBox8
.Cells(Ligne, 12) = TextBox9
.Cells(Ligne, 13) = TextBox10
.Cells(Ligne, 14) = TextBox11
.Cells(Ligne, 15) = TextBox12
.Cells(Ligne, 16) = TextBox13
.Cells(Ligne, 18) = TextBox14
.Cells(Ligne, 19) = TextBox15
.Cells(Ligne, 21) = TextBox16
.Cells(Ligne, 22) = TextBox17
.Cells(Ligne, 24) = TextBox18
.Cells(Ligne, 25) = TextBox19
.Cells(Ligne, 26) = TextBox20
.Cells(Ligne, 42) = TextBox24
.Cells(Ligne, 43) = TextBox25
ActiveSheet.Unprotect "1234"
Sheets("sauvegarde").Select
Range("a65536").End(xlUp).Select
Selection.Copy
Sheets("ANALYSE").Select
Range("C15").Select
ActiveSheet.Paste
Range("C15").Font.Bold = True
Range("C15").HorizontalAlignment = xlCenter
Range("C15").VerticalAlignment = xlCenter
ActiveSheet.Protect "1234", True, True, True
Sheets("sauvegarde").Select
ActiveSheet.Protect "1234", True, True, True
Sheets("ANALYSE").Select
Range("C15").Select
End With
Unload Me

End Sub

6 réponses

iallex Messages postés 10 Date d'inscription vendredi 29 janvier 2010 Statut Membre Dernière intervention 31 mai 2010
30 mai 2010 à 20:43
Comme promis, je poste la solution avec un partie du code.
Fais peter la sucette !!!
Dans ce case de figure, il est judicieux de renommer les textbox de telle sorte qu'ils correspondent aux colonnes.
(avant tout nommer les textbox TBox2: correspond au textbox lié à la colonne 2: càd B; TBox11: correspond au textbox lié à la colonne 11: càd K...)
Code :
Option Explicit
'------------------------------------------------------------------
' /!\ Les textbox doivent être renommés par exemple TBoxN où N correspend à la colonne de donnée correspondante
'------------------------------------------------------------------
Dim Lig As Long 'variable globale ligne où écrire
Dim Lastlig As Long 'variable globale dernière ligne
Dim tabCol 'tableau reprenant les colonnes de données

Public Sub ComboIni()

With Sheets("sauvegarde")
Lastlig = .Cells(Rows.Count, 1).End(xlUp).Row
Me.ComboBox1.RowSource = .Name & "!A2:A" & Lastlig
End With
End Sub

Private Sub UserForm_Initialize()

tabCol = Array(2, 3, 5, 6, 9, 11, 13) 'ici on mets les n° de colonne, à adapter ici colonne B,C,E,F,I,K,M
ComboIni
End Sub

Private Sub ComboBox1_Change()
Dim j As Byte
Dim Num As Long

With Sheets("sauvegarde")
If Me.ComboBox1.ListIndex > -1 Then
Num = Me.ComboBox1.List(Me.ComboBox1.ListIndex) 'On peut surpasser ces ligne au cas où tous les n° existent et se suivent
Lig = .Range("A2:A" & Lastlig).Find(Num, LookIn:=xlValues, lookat:=xlWhole).Row
For j = 0 To UBound(tabCol)
Me.Controls("TBox" & tabCol(j)).Value = .Cells(Lig, tabCol(j)).Value
Next j
End If
End With
End Sub

Private Sub CommandButton1_Click()
Dim j As Byte

'Dans Lig on reprend la ligne correspondante au choix de la combobox
'Si aucun choix n'a été fait dans la combo, cela signifie, ajout d'une nouvelle lig: Lig=LastLig+1

With Sheets("sauvegarde")
.Unprotect "1234"
If Me.ComboBox1.ListIndex = -1 Then
Lig = Lastlig + 1
.Cells(Lig, 1) = .Cells(Lig - 1, 1) + 1
ComboIni
End If
For j = 0 To UBound(tabCol)
.Cells(Lig, tabCol(j)).Value = Me.Controls("TBox" & tabCol(j)).Value
Me.Controls("TBox" & tabCol(j)).Value = ""
Next j
Sheets("ANALYSE").Range("C15") = .Range("A" & Lastlig)
.Protect "1234"
End With
Me.ComboBox1.ListIndex = -1
End Sub
3
cs_zeps2 Messages postés 61 Date d'inscription vendredi 9 novembre 2007 Statut Membre Dernière intervention 28 octobre 2011
30 mai 2010 à 13:20
alex,

Figures toi que j'ai le même pb et que pour l'instant je ne l'ai pas résolu.
Avec des conditions si, c'est imbouffable !
Il doit y avoir plus simple
Le premier qui trouve aura une sucette....
0
iallex Messages postés 10 Date d'inscription vendredi 29 janvier 2010 Statut Membre Dernière intervention 31 mai 2010
30 mai 2010 à 14:25
Salut je pense que j ai trouve un truc je test et j essaye de le mettre en ligne ce soir je vais gagner une sucette !!!
0
cs_zeps2 Messages postés 61 Date d'inscription vendredi 9 novembre 2007 Statut Membre Dernière intervention 28 octobre 2011
30 mai 2010 à 21:50
S'cuse du peu, mais pour un débutant, tu fais fort.
Je ne vais pas si vite !.
Ce soir, j'ai pas le tps de reprendre ton code pour me l'adapter et te dire si du coup pour moi ça gaz.

Mais je te dirais...

Bon pour la sucette, t'as plus qu'à me dire ou je te la pose !
Je te fais confiance, ça doit marcher !!
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
iallex Messages postés 10 Date d'inscription vendredi 29 janvier 2010 Statut Membre Dernière intervention 31 mai 2010
31 mai 2010 à 11:17
Je te rassure on m'a aidé pour le coup, d'ailleurs je suis en train d'essayer d'éclaircir certains points qui me paraissent obscurs.
Sinon ça marche niquel dès le choix dans la combo effectué les valeurs apparaissent dans les textbox .
Je reste a disposition si jamais tu as un souci pour l'adapté.
Et pour la sucette on va dire à charge de revanche .
A bientôt
Alex
0
cs_zeps2 Messages postés 61 Date d'inscription vendredi 9 novembre 2007 Statut Membre Dernière intervention 28 octobre 2011
31 mai 2010 à 17:37
Se fut un plaisir, a bientôt .....

Zeps
0
Rejoignez-nous