avyrex1926
Messages postés360Date d'inscriptiondimanche 3 décembre 2006StatutMembreDernière intervention 3 janvier 2012
-
19 juil. 2009 à 23:47
avyrex1926
Messages postés360Date d'inscriptiondimanche 3 décembre 2006StatutMembreDernière intervention 3 janvier 2012
-
20 juil. 2009 à 12:50
Bonjour,
J'ai un probleme avec une macro.
Si j'entre une valeur dans mon ComboBox2 (liste de ma colonne B), il me donne des choix pour mon ComboBox3 relier a la colonne C . Une fois entrer mon choix dans mon ComboBox3, il devrait me donner la valeur de la colonne D, E, F etc selon les 2 critères de mes 2 ComboBox.
Ses donnes sont entrer dans le TextBox1, TextBox2 etc...
Exemple:
Dans mon fichier excel, il y a comme donnée:
Col.B Col.C Col.D Col.E
Poitras Marcel 11 André St-Basile
Poitras Pierre 12 André St-Basile
Tralala Luc
allo allo 11 bastogne beloeil
Si je choisis "Poitras", il va me donner comme choix dans mon ComboBox3 le nom "Marcel" et "Pierre".
Si je choisis "Pierre", dans le TextBox1 12 andré, TextBox2 St-Basile etc....
Sauf que mon code ne marche pas.
Dim i As Long, DerL As Long, r As Long, Opid1 As String, Opid2 As String
DerL = Sheets("Base de donnée").Cells(Rows.Count, 1).End(xlUp).Row
'Type de véhicule et nom du fournisseur
For i = 2 To DerL
Opid1 = CboxWBS.Text
Opid2 = CboxNetwork.Text
Set c = Sheets("Base de donnée").Range("b:b").Find(What:=Opid1, LookAt:=xlWhole)
Set d = Sheets("Base de donnée").Range("c:c").Find(What:=Opid2, LookAt:=xlWhole)
If Not c Is Nothing Then
On Error Resume Next
r = c.Row
s = d.Row
CboxCPM = Sheets("Base de donnée").Cells(r & s, 1)
TextBox1 = Sheets("Base de donnée").Cells(r & s, 6)
TextBox2 = Sheets("Base de donnée").Cells(r & s, 9)
TextBox3 = Sheets("Base de donnée").Cells(r & s, 10)
TextBox4 = Sheets("Base de donnée").Cells(r & s, 13)
DTPicker2 = Sheets("Base de donnée").Cells(r & s, 12).Value
'Label19 = DateDiff(Date - Sheets("Base de donnée").Cells(r, 12) + 365))
p = Sheets("Base de donnée").Cells(r, 12).Value + 365
Label19 = DateDiff("d", Date, p)
Label20 = "jour(s) restant avant expiration"
If Label19 > "365" Then
Label19 = "Expiré"
Label20 = "Vous devez renouvler l'antivirus"
Else
If Sheets("Base de donnée").Cells(r, 12).Value = vbNullString Then
DTPicker2.Enabled = False
Label19 = ""
Label20 = "Aucun antivirus n'a été installé sur cette ordinateur"
Else
End If
End If
End If
Next i
End Sub
avyrex1926
Messages postés360Date d'inscriptiondimanche 3 décembre 2006StatutMembreDernière intervention 3 janvier 20123 20 juil. 2009 à 00:22
Ce qui ne marche pas, c'est que si j'ai dans le comboBox2 le texte "Poitras", dans mon combobox3, que j'ai la valeur "Marcel" ou "Pierre", il me donne la première valeur seulement donc selui de "Marcel".
Flocreate
Messages postés300Date d'inscriptionlundi 17 juillet 2006StatutMembreDernière intervention27 mai 20123 20 juil. 2009 à 09:33
Bonjour,
Je te prie de m'excuser, mais je ne vois pas de lien entre le problème exposé et le code donné.
tu parle combobox et le code ne semble contenir que des TextBox a part CboxWBS.Text qui est en lecture.
Première suggestion :
Pour ajouter ton texte a ta combobox3 utilise tu .text = "toto" ou bien .Additem "Toto" ?
Le .text ecrit simblement dans le texteBox du combobox. Chaque utilisation ecrase l'ancienne valeur. En revanche, .AddItem ajoute le texte a la liste de la combobox.
Ceci-Dit, tu dis que tu as bien le premier texte et pas le second... En téhorie cela ne devrait pas venir de .text <> .AddItem
SecondeSuggestion :
avec : cbbox CB --> Colone B
cbbox CC --> Colone C
txtbox TD --> Colobe D
txtbox TE --> Colobe E
txtbox TF --> Colone F
WS le workcheets base de donnée
je te propose le code suivant, pour la methode CB.Change
'vider toutes les listes
CC.Clear
TD.text = ""
TE.text =""
TF.text = ""
Dim Offset as integer 'nb ligne a ne pas prendre en compte au debut du fichier
Offset = 1
Dim L as long ' Ligne active dans WS
L = 1 + Offset
'pour toutes les lignes non vides
While (WS.Cells(L,2).Text <> "") '2 --> Colone B
'filtre sur la colone B
if (WS.Cells(L,2).Text = CB.Text) then
'on pourrait ajouter algorythme pour empecher que un meme texte ne soit ajouter 2 fois.
CC.AddItem WS.Cells(L,3).Text
End If
L = L + 1 'passer a la ligne suivante
DoEvents 'evite les plantages ireversibles
'et permet au PC de respirer malgrès Excel
Wend
un code similaire dans CC.Change permet de recuperer les champs D E F ...
Cordialement
VB6, quand yen a plus yen a encore
Il y a tant a apprendre et seulement 24 heures dans une journée
avyrex1926
Messages postés360Date d'inscriptiondimanche 3 décembre 2006StatutMembreDernière intervention 3 janvier 20123 20 juil. 2009 à 11:56
Je crois que mon explication n'était pas apoint.
Mon premier combobox du nom: "CboxWBS" contient les nom de la colonne B, et le comboBox du nom: "CboxNetwork" contient le prenom qui va avec le nom, et ce prenom est dans la colonne C.
Alors je choisit un nom et un prenom, et selon les 2 valeurs des 2 combobox, il me donne la valeur de la colonne de la colonne F de la même ligne dans mon TextBox1, ensuite la valeur de la colonne I de la même ligne dans le textbox2 ainsi que la valeur de la colonne J dans le TextBox3.
avyrex1926
Messages postés360Date d'inscriptiondimanche 3 décembre 2006StatutMembreDernière intervention 3 janvier 20123 20 juil. 2009 à 12:50
J'essais d'une autre facon,
Je dois juste savoir comment ajouter mon combobox "CboxNetwork" dans ma selection de recherche:
Dim RECHERCHE As Range, Ligne As Long
'colonne C = numéro concatené
Set RECHERCHE = Columns("B:B").Find(CboxWBS)And Columns("C:C").Find(CboxNetwork)
If Not RECHERCHE Is Nothing Then
Ligne = RECHERCHE.Row
TextBox1 = Range("G" & Ligne)
TextBox2 = Range("J" & Ligne)
TextBox3 = Range("K" & Ligne)
End If