Valeur des textbox selon 2 combobox

avyrex1926 Messages postés 360 Date d'inscription dimanche 3 décembre 2006 Statut Membre Dernière intervention 3 janvier 2012 - 19 juil. 2009 à 23:47
avyrex1926 Messages postés 360 Date d'inscription dimanche 3 décembre 2006 Statut Membre Derniè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


Merci pour votre aide

4 réponses

avyrex1926 Messages postés 360 Date d'inscription dimanche 3 décembre 2006 Statut Membre Dernière intervention 3 janvier 2012 3
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".
0
Flocreate Messages postés 300 Date d'inscription lundi 17 juillet 2006 Statut Membre Dernière intervention 27 mai 2012 3
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
0
avyrex1926 Messages postés 360 Date d'inscription dimanche 3 décembre 2006 Statut Membre Dernière intervention 3 janvier 2012 3
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.
0
avyrex1926 Messages postés 360 Date d'inscription dimanche 3 décembre 2006 Statut Membre Dernière intervention 3 janvier 2012 3
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
0
Rejoignez-nous