Liaisoncombobox et textbox

Résolu
Maintenant, j'essaye de lier une combo et un textb.
Le principe est lorsque je remplis mon formulaire je choisi un item dans la combo et une donné s'affiche dans le text automatiquement avec une autre feuille de donné ou dans la colonne A il y a le désignation et colonne B le numéro

Voici ma compo que je n'arrive pas à faire fonctionné:

Dim C As Range
Dim i As Byte
Dim FirstAddress As String
Me.TextBox1 = ""

With Worksheets("Database")
'Cherche l'item dans la colonne A qui contient la valeur égale à celle de ComboBox1
Set C = .Columns("A").Find(Me.ComboBox1.Value, .Range("A1").End(xlDown), xlValues, xlWhole)
'Si cette item existe, alors ...
If Not C Is Nothing Then
'On note la valeur de cette première cellule
FirstAddress = C.Address
'On entre dans une boucle
Do
'On utilise la variable i pour noter le nombre d'incréments.
'Ce nombre est utilisé pour limiter le nombre d'itération à 2 (nombre de TextBox)
i = i + 1
'On affecte la valeur associée (colonne B) à la TextBox qui correspond à l'indice i
Me.Controls("Textbox" & i).Value = C.Offset(0, 1)
'On poursuit la recherche
Set C = Columns("A").FindNext(C)
'On reprend le traitement à condition que :
'- il existe une autre cellule qui contient une valeur égale à celle de ComboBox1
'- le nombre d'itération est inférieur à 2
'- la cellule trouvée est différente de la première
Loop While Not C Is Nothing And i < 2 And C.Address <> FirstAddress
End If
End With
End Select
End Sub
Jai fais la compo avec l'aide d'un référenciel trouvé vite fais

Merci d'avance

PS: je ne serai pas contre des explications de ce qui ne va pas ou si possible des cours en fin je m'en sers sur exel, mon entreprise n'utilise pas acces

4 réponses

  1. Bonjour,

    une autre facon de coder:

    Private Sub ComboBox1_Change()
        If ComboBox1 <> "" Then Call Remp_Textbox
    End Sub
    
    Sub Remp_Textbox()
        With Worksheets("Database")
            Set plage = .Range("A1:A" & .Range("A" & .Rows.Count).End(xlUp).Row)    'Plage de cellules non vides
            Nb = Application.CountIf(plage, CLng(ComboBox1))    'nombre de fois val combobox1 trouvees
            If Nb > 2 Then      'si >2 =2
                Nb = 2
            ElseIf Nb = 0 Then
                MsgBox "Pas trouve.....!!!"
                Exit Sub
            End If
            'recherche val combobox1
            Lig = 1
            For n = 1 To Nb
                Lig = .Columns(1).Find(ComboBox1, .Cells(Lig, 1), , xlWhole).Row    'ligne ok
                Me.Controls("Textbox" & n).Value = .Range("B" & Lig)    'remplissage des deux Textbox
            Next n
        End With
    End Sub
    1. Bonjour Azeuur, bonjour le forum,

      Pas clair tout ça !... Pour chaque occurrence trouvée, tu affiches la valeur en colonne B dans une TextBox(i) et tu incrémentes i. Comment peux-tu savoir à l'avance combien de texboxes il te faudra ? Pourquoi en début de code tu ne vides que la TextBox1 et pas les autres ?
      Je pense que ce qu'il te faut, ce ne sont pas plusieurs texboxes mais soit une nouvelle ComboBox soit une ListBox. Ensuite, pour chaque occurrence trouvée tu rajoute dans la liste la valeur en colonne B...
      1. Bonjour ThauTheme

        il a ecrit:
        "Ce nombre est utilisé pour limiter le nombre d'itération à 2 (nombre de TextBox) "
      2. Oui merci F, je navet pas vu...
    2. Ok merci et pour l'incrémenter dans mon programme déjà mis en place avec un formulaire, ou est ce que je l'implante car si je met ta premières ligne , j'ai un doublon. dsl j'apprend depuis la semaine dernière
      1. Dim Désignation
        Dim Intervention

        Private Sub ComboBox1_Change()

        Select Case ComboBox1.Value

        Case 0 'Mixte informatique
        Désignation = "Mixte informatique"
        Case 1 'Sanitaires Mixte informatique IT
        Désignation = "Sanitaires Mixte informatique IT"
        Case 2 'Sanitaires Homme CH1
        Désignation = "Sanitaires Homme CH1"
        ......
        End Select
        End Sub

        Private Sub ComboBox2_Change()
        Select Case ComboBox2.Value
        Case 0 'Débouchage des toilettes
        Intervention = "Débouchage des toilettes"
        Case 1 'Débouchage des douches
        Intervention = "Débouchage des douches"
        Case 2 'Autre
        Intervention = "Autre"
        ...
        End Select
        End Sub

        Private Sub Image2_Click()
        Dim nbligne, Nnbligne
        Dim Sel, NSel

        Unload UserForm1
        'Sauve le fichier
        ActiveWorkbook.Save
        'Selection la case A de la dernière ligne
        Nnbligne = Range("K1").Value
        NSel = "A" & Nnbligne
        Range(NSel).Select
        End Sub

        Private Sub Image1_Click()

        Sheets("Classement par nom").Select
        Dim nbligne, Nnbligne
        Dim Sel, NSel
        Dim Val, NbreInter

        If (ComboBox1.Value <> "" And ComboBox2.Value <> "" And TextBox1.Value <> "" And TextBox2.Value <> "" And TextBox3.Value <> "") Then

        nbligne = Range("K1").Value
        Nnbligne = nbligne + 1
        Sel = "A" & nbligne & ":G" & nbligne
        Range(Sel).Select
        Selection.Copy

        Sel = "A" & Nnbligne
        Range(Sel).Select
        ActiveSheet.Paste

        Sel = "A" & nbligne
        NSel = "A" & Nnbligne
        Val = Range(Sel).Value
        Range(NSel).Value = Val + 1
        NbreInter = Val + 1

        NSel = "B" & Nnbligne
        Range(NSel).Value = Désignation

        NSel = "F" & Nnbligne
        Range(NSel).Value = Intervention

        NSel = "D" & Nnbligne
        Range(NSel).Value = Range("D2").Value

        'remplie les valeurs renseignées
        Dim commentaire

        commentaire = TextBox1.Value 'N_° de la désignation
        NSel = "C" & Nnbligne
        Range(NSel).Value = commentaire

        commentaire = TextBox2.Value 'Date
        NSel = "D" & Nnbligne
        Range(NSel).Value = commentaire

        commentaire = TextBox3.Value 'N_° de la fiche
        NSel = "G" & Nnbligne
        Range(NSel).Value = commentaire

        'Désignation
        NSel = "B" & Nnbligne
        Range(NSel).Value = Désignation

        'Intervention
        NSel = "F" & Nnbligne
        Range(NSel).Value = Intervention

        'Efface les commbox et les textbox
        ComboBox1.Value = ""
        ComboBox2.Value = ""

        TextBox1.Value = ""
        TextBox2.Value = ""
        TextBox3.Value = ""

        Else
        MsgBox "Toutes les cases ne sont pas renseignées"
        End If

        End Sub

        Private Sub UserForm_Activate()

        'ComboBox1
        ComboBox1.AddItem "Sanitaires Mixte informatique" 'ListIndex = 0
        ComboBox1.AddItem "Sanitaires Mixte informatique IT" 'ListIndex = 1
        ...
        'Use drop-down list
        ComboBox1.Style = fmStyleDropDownList
        'Combo box values are ListIndex values
        ComboBox1.BoundColumn = 0

        'ComboBox2
        ComboBox2.AddItem "Débouchage des toilettes" 'ListIndex = 0
        ComboBox2.AddItem "Débouchage des douches" 'ListIndex = 1
        ...
        'Use drop-down list
        ComboBox2.Style = fmStyleDropDownList
        'Combo box values are ListIndex values
        ComboBox2.BoundColumn = 0

        End Sub
        1. Bonjour,

          Puisque vous avez choisi les messages prives. Informe le reste du monde ou vous faites peut-être une demande des deux cote!!!