tumble
-
2 août 2012 à 09:53
NHenry
Messages postés15113Date d'inscriptionvendredi 14 mars 2003StatutModérateurDernière intervention22 avril 2024
-
2 août 2012 à 15:47
Bonjour à tous,
j'apprends VBA petit à petit grâce à l'expérience de beaucoup d'entre vous et à leur réponse sur le site.
ce coup-ci je me jète à l'eau pour poser ma propre questions !!!
voilà, j'ai un tableau sous excel 2010 que j'alimente par un Userform2 (ci-dessous les formules)
ce tableau est constitué de 21 colonnes dont la première est "RS" (nom) que je récupère dans une combobox3 dans
mon Userform1. Dans ma combobox4 du Userform1 (voir une listbox si il le faut) je voudrais récupérer (en fonction
du choix fait dans ma combobox3) les valeurs correspondantes des colonnes D,G,J et L
exemple:
Colonne RS A B C D E F G H I J K L
TOTO 1 2 3 4 5 6 7 8 9 10 11 12
TITI 12 11 10 9 8 7 6 5 4 3 2 1
TUTU " " " " " " " " " " " "
si je sélectionne TITI dans ma combobox3, je retrouve 9,6,3 et 1 dans ma combobox4
merci pour un p'tit coup de main !!!
"formule pour mon Userform2" (création fiches clients)
Private Sub CommandButton1_Click()
If TextBox1.Value = "" Then
MsgBox ("Il faut saisir une raison sociale !")
TextBox1.SetFocus
Exit Sub 'interrompt la macro de validation, le userform reste affiché en l'état pour correction
End If
If TextBox2.Value = "" Then
MsgBox ("Il faut saisir un N°compte SAP !")
TextBox2.SetFocus
Exit Sub
End If
If TextBox3.Value = "" Then
MsgBox ("Il faut saisir une adresse postale !")
TextBox3.SetFocus
Exit Sub
End If
If TextBox5.Value = "" Then
MsgBox ("Il faut saisir un code postal !")
TextBox5.SetFocus
Exit Sub
End If
If TextBox4.Value = "" Then
MsgBox ("Il faut saisir une adresse de livraison !")
TextBox4.SetFocus
Exit Sub
End If
If TextBox6.Value = "" Then
MsgBox ("Il faut saisir un code postal !")
TextBox6.SetFocus
Exit Sub
End If
If TextBox7.Value = "" Then
MsgBox ("Il faut renseigner au moins contact 1 !")
TextBox7.SetFocus
Exit Sub
End If
If TextBox12.Value = "" Then
MsgBox ("Il faut saisir le téléphone du contact 1 !")
TextBox12.SetFocus
Exit Sub
End If
If TextBox17.Value = "" Then
MsgBox ("Il faut saisir l'adresse mail du contact 1 !")
TextBox17.SetFocus
Exit Sub
End If
Dim no_ligne As Integer, RS As String
'no_ligne = N° de ligne de la dernière cellule non vide de la colonne +1
no_ligne = Range("A65536").End(xlUp).Row + 1
'Insertion des valeurs sur la feuille
Cells(no_ligne, 1) = TextBox1.Value
Cells(no_ligne, 2) = TextBox2.Value
Cells(no_ligne, 3) = TextBox3.Value
Cells(no_ligne, 4) = TextBox5.Value
Cells(no_ligne, 5) = TextBox4.Value
Cells(no_ligne, 6) = TextBox6.Value
Cells(no_ligne, 7) = TextBox7.Value
Cells(no_ligne, 8) = TextBox12.Value
Cells(no_ligne, 9) = TextBox17.Value
Cells(no_ligne, 10) = TextBox8.Value
Cells(no_ligne, 11) = TextBox13.Value
Cells(no_ligne, 12) = TextBox18.Value
Cells(no_ligne, 13) = TextBox9.Value
Cells(no_ligne, 14) = TextBox14.Value
Cells(no_ligne, 15) = TextBox19.Value
Cells(no_ligne, 16) = TextBox10.Value
Cells(no_ligne, 17) = TextBox15.Value
Cells(no_ligne, 18) = TextBox20.Value
Cells(no_ligne, 19) = TextBox11.Value
Cells(no_ligne, 20) = TextBox16.Value
Cells(no_ligne, 21) = TextBox21.Value
'Après insertion, on remet les valeurs initiales
TextBox1.Value = ""
TextBox2.Value = ""
TextBox3.Value = ""
TextBox4.Value = ""
TextBox5.Value = ""
TextBox6.Value = ""
TextBox7.Value = ""
TextBox8.Value = ""
TextBox9.Value = ""
TextBox10.Value = ""
TextBox11.Value = ""
TextBox12.Value = ""
TextBox13.Value = ""
TextBox14.Value = ""
TextBox15.Value = ""
TextBox16.Value = ""
TextBox17.Value = ""
TextBox18.Value = ""
TextBox19.Value = ""
TextBox20.Value = ""
TextBox21.Value = ""
End Sub
[color=]"formules pour ma combobox3 de mon Userform1"/color(exploitation fiches clients)
Private Sub UserForm_Initialize()
Set f = Sheets("feuil1")
Set mondico = CreateObject("Scripting.Dictionary")
For Each c In Range(f.[A2], f.[A6500].End(xlUp))
mondico(c.Value) = c.Value
Next c
temp = mondico.items
Call Tri(temp, LBound(temp), UBound(temp))
Me.ComboBox3.List = temp
End Sub
Private Sub ComboBox3_Change()
Set f = Sheets("feuil1")
ComboBox4.Clear
Set mondico = CreateObject("Scripting.Dictionary")
For Each c In Range(f.[A2], f.[A6500].End(xlUp))
If c Me.ComboBox3 Then mondico(c.Offset(0, 4).Value) c.Offset(0, 4).Value
Next c
If mondico.Count > 0 Then
temp = mondico.items
Call Tri(temp, LBound(temp), UBound(temp))
Me.ComboBox4.List = temp
End If
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
________________________
Réponse exacte ? => "REPONSE ACCEPTEE" pour faciliter les recherches.
Pas d'aide en ligne installée ? => ne comptez pas sur moi pour simplement vous dire ce qu'elle contient. Je n'interviendrai qu'en cas de nécessité de développ
Désolé mais quand je met mon message dans Visual Basic 6 on me dit de le mettre en VBA et quand le met en VB 2005 ça va pas non plus, dans la liste des thèmes il n'y a pas VBA !!!!
ucfoutu
Messages postés18038Date d'inscriptionlundi 7 décembre 2009StatutModérateurDernière intervention11 avril 2018211 2 août 2012 à 14:56
dans la liste des thèmes il n'y a pas VBA
Ah bon ?
J'en déduis que je dois avoir la berlue lorsque je vois que ton autre discussion a dû être déplacée par un administrateur (qui te l'a de surcroît signalé) dans la sectioàn :
Forum > Visual Basic 6 > Langages dérivés > VBA
________________________
Réponse exacte ? => "REPONSE ACCEPTEE" pour faciliter les recherches.
Pas d'aide en ligne installée ? => ne comptez pas sur moi pour simplement vous dire ce qu'elle contient. Je n'interviendrai qu'en cas de nécessité de développ