iallex
Messages postés10Date d'inscriptionvendredi 29 janvier 2010StatutMembreDernière intervention31 mai 2010
-
28 mai 2010 à 16:32
cs_zeps2
Messages postés61Date d'inscriptionvendredi 9 novembre 2007StatutMembreDernière intervention28 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
iallex
Messages postés10Date d'inscriptionvendredi 29 janvier 2010StatutMembreDernière intervention31 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
cs_zeps2
Messages postés61Date d'inscriptionvendredi 9 novembre 2007StatutMembreDernière intervention28 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....
cs_zeps2
Messages postés61Date d'inscriptionvendredi 9 novembre 2007StatutMembreDernière intervention28 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 !!
Vous n’avez pas trouvé la réponse que vous recherchez ?
iallex
Messages postés10Date d'inscriptionvendredi 29 janvier 2010StatutMembreDernière intervention31 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