[Clos]2 combobox avec liaisons [Résolu/Fermé]

- - Dernière réponse : NHenry
Messages postés
14319
Date d'inscription
vendredi 14 mars 2003
Statut
Modérateur
Dernière intervention
11 décembre 2018
- 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
            
Afficher la suite 

5 réponses

Meilleure réponse
Messages postés
18039
Date d'inscription
lundi 7 décembre 2009
Statut
Contributeur
Dernière intervention
11 avril 2018
3
Merci
Tapez le texte de l'url ici.
Et une fois de plus dans la section :
Forum > VB.NET et VB 2005



________________________
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

Merci ucfoutu 3

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

Codes Sources a aidé 103 internautes ce mois-ci

Commenter la réponse de ucfoutu
0
Merci
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 !!!!
Commenter la réponse de tumble
Messages postés
18039
Date d'inscription
lundi 7 décembre 2009
Statut
Contributeur
Dernière intervention
11 avril 2018
0
Merci
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
Commenter la réponse de ucfoutu
0
Merci
Ah oui exact j'avais pas fait attention, j'avais compris que je devais le faire

toutes mes confuses!
Commenter la réponse de tumble
Messages postés
14319
Date d'inscription
vendredi 14 mars 2003
Statut
Modérateur
Dernière intervention
11 décembre 2018
Commenter la réponse de NHenry

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.