Affectation de valeur à des textbox en fonction d'une combobox [Résolu]

iallex 10 Messages postés vendredi 29 janvier 2010Date d'inscription 31 mai 2010 Dernière intervention - 28 mai 2010 à 16:32 - Dernière réponse : cs_zeps2 61 Messages postés vendredi 9 novembre 2007Date d'inscription 28 octobre 2011 Dernière intervention
- 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
Afficher la suite 

6 réponses

Répondre au sujet
iallex 10 Messages postés vendredi 29 janvier 2010Date d'inscription 31 mai 2010 Dernière intervention - 30 mai 2010 à 20:43
+3
Utile
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
Cette réponse vous a-t-elle aidé ?  
Commenter la réponse de iallex
cs_zeps2 61 Messages postés vendredi 9 novembre 2007Date d'inscription 28 octobre 2011 Dernière intervention - 30 mai 2010 à 13:20
0
Utile
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....
Commenter la réponse de cs_zeps2
iallex 10 Messages postés vendredi 29 janvier 2010Date d'inscription 31 mai 2010 Dernière intervention - 30 mai 2010 à 14:25
0
Utile
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 !!!
Commenter la réponse de iallex
cs_zeps2 61 Messages postés vendredi 9 novembre 2007Date d'inscription 28 octobre 2011 Dernière intervention - 30 mai 2010 à 21:50
0
Utile
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 !!
Commenter la réponse de cs_zeps2
iallex 10 Messages postés vendredi 29 janvier 2010Date d'inscription 31 mai 2010 Dernière intervention - 31 mai 2010 à 11:17
0
Utile
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
Commenter la réponse de iallex
cs_zeps2 61 Messages postés vendredi 9 novembre 2007Date d'inscription 28 octobre 2011 Dernière intervention - 31 mai 2010 à 17:37
0
Utile
Se fut un plaisir, a bientôt .....

Zeps
Commenter la réponse de cs_zeps2

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.