Liaisoncombobox et textbox

Résolu
azeuur31 Messages postés 12 Date d'inscription   Statut Membre Dernière intervention   -  
f894009 Messages postés 17417 Date d'inscription   Statut Membre Dernière intervention   -
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. f894009 Messages postés 17417 Date d'inscription   Statut Membre Dernière intervention   1 717
     
    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
    0
  2. ThauTheme Messages postés 1564 Statut Membre 160
     
    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...
    0
    1. f894009 Messages postés 17417 Date d'inscription   Statut Membre Dernière intervention   1 717
       
      Bonjour ThauTheme

      il a ecrit:
      "Ce nombre est utilisé pour limiter le nombre d'itération à 2 (nombre de TextBox) "
      0
    2. ThauTheme Messages postés 1564 Statut Membre 160
       
      Oui merci F, je navet pas vu...
      0
  3. azeuur31 Messages postés 12 Date d'inscription   Statut Membre Dernière intervention  
     
    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
    0
  4. azeuur31 Messages postés 12 Date d'inscription   Statut Membre Dernière intervention  
     
    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
    0
    1. f894009 Messages postés 17417 Date d'inscription   Statut Membre Dernière intervention   1 717
       
      Bonjour,

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