Liaisoncombobox et textbox

Résolu/Fermé
azeuur31 Messages postés 12 Date d'inscription mardi 30 octobre 2018 Statut Membre Dernière intervention 6 décembre 2018 - Modifié le 31 oct. 2018 à 12:44
f894009 Messages postés 17185 Date d'inscription dimanche 25 novembre 2007 Statut Membre Dernière intervention 15 avril 2024 - 1 nov. 2018 à 07:11
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

f894009 Messages postés 17185 Date d'inscription dimanche 25 novembre 2007 Statut Membre Dernière intervention 15 avril 2024 1 701
31 oct. 2018 à 14:33
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
ThauTheme Messages postés 1442 Date d'inscription mardi 21 octobre 2014 Statut Membre Dernière intervention 29 juillet 2022 160
31 oct. 2018 à 14:43
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
f894009 Messages postés 17185 Date d'inscription dimanche 25 novembre 2007 Statut Membre Dernière intervention 15 avril 2024 1 701
31 oct. 2018 à 14:45
Bonjour ThauTheme

il a ecrit:
"Ce nombre est utilisé pour limiter le nombre d'itération à 2 (nombre de TextBox) "
0
ThauTheme Messages postés 1442 Date d'inscription mardi 21 octobre 2014 Statut Membre Dernière intervention 29 juillet 2022 160
31 oct. 2018 à 14:48
Oui merci F, je navet pas vu...
0
azeuur31 Messages postés 12 Date d'inscription mardi 30 octobre 2018 Statut Membre Dernière intervention 6 décembre 2018
Modifié le 31 oct. 2018 à 15:34
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
azeuur31 Messages postés 12 Date d'inscription mardi 30 octobre 2018 Statut Membre Dernière intervention 6 décembre 2018
Modifié le 31 oct. 2018 à 15:33
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
f894009 Messages postés 17185 Date d'inscription dimanche 25 novembre 2007 Statut Membre Dernière intervention 15 avril 2024 1 701
1 nov. 2018 à 07:11
Bonjour,

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