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

Messages postés
10
Date d'inscription
vendredi 29 janvier 2010
Statut
Membre
Dernière intervention
31 mai 2010
- - Dernière réponse : 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
Afficher la suite 

6 réponses

Meilleure réponse
Messages postés
10
Date d'inscription
vendredi 29 janvier 2010
Statut
Membre
Dernière intervention
31 mai 2010
3
Merci
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

Dire « Merci » 3

Quelques mots de remerciements seront grandement appréciés. Ajouter un commentaire

Codes Sources 194 internautes nous ont dit merci ce mois-ci

Commenter la réponse de iallex
Messages postés
61
Date d'inscription
vendredi 9 novembre 2007
Statut
Membre
Dernière intervention
28 octobre 2011
0
Merci
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
Messages postés
10
Date d'inscription
vendredi 29 janvier 2010
Statut
Membre
Dernière intervention
31 mai 2010
0
Merci
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
Messages postés
61
Date d'inscription
vendredi 9 novembre 2007
Statut
Membre
Dernière intervention
28 octobre 2011
0
Merci
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
Messages postés
10
Date d'inscription
vendredi 29 janvier 2010
Statut
Membre
Dernière intervention
31 mai 2010
0
Merci
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
Messages postés
61
Date d'inscription
vendredi 9 novembre 2007
Statut
Membre
Dernière intervention
28 octobre 2011
0
Merci
Se fut un plaisir, a bientôt .....

Zeps
Commenter la réponse de cs_zeps2