Problème de code
Bonjour
Je suis sur un projet mais je rencontre un problème
Lorsque je sélectionne Antony dans le Combobox1 , j'ai aussi la ligne de Argenteuil qui apparais dans mes textbox.
Voici mon code
Private Sub ComboBox1_Change()
Dim vrech As Range
'je recherche dans la colonne B la valeur de la combo
Set vrech = Sheets("bdd-SST").Columns("A:A").Find(Me.ComboBox1.Value, LookIn:=xlValues, LookAt:=xlWhole)
'si je trouve une valeur alors j'affiche la valeur correspondante de la
'colonne A dans le textbox
TextBox1.Value = vrech.Offset(0, 3).Value '
TextBox2.Value = vrech.Offset(0, 4).Value
TextBox3.Value = vrech.Offset(1, 3).Value
TextBox4.Value = vrech.Offset(1, 4).Value
TextBox5.Value = vrech.Offset(2, 3).Value
TextBox6.Value = vrech.Offset(2, 4).Value
TextBox7.Value = vrech.Offset(3, 3).Value
TextBox8.Value = vrech.Offset(3, 4).Value
TextBox9.Value = vrech.Offset(4, 3).Value
TextBox10.Value = vrech.Offset(4, 4).Value
TextBox11.Value = vrech.Offset(5, 3).Value
TextBox12.Value = vrech.Offset(5, 4).Value
TextBox13.Value = vrech.Offset(6, 3).Value
TextBox14.Value = vrech.Offset(6, 4).Value
If Not vrech Is Nothing Then
End If
End Sub
Private Sub CommandButton1_Click()
Unload Me
End Sub
Private Sub UserForm_Initialize()
Set f = Sheets("bdd-SST")
Set Mondico = CreateObject("Scripting.Dictionary")
a = f.Range("A2:A" & f.[A65000].End(xlUp).Row) ' tableau a(n,1) pour rapidité
For i = LBound(a) To UBound(a)
If a(i, 1) <> "" Then Mondico(a(i, 1)) = ""
Next i
Me.ComboBox1.List = Mondico.keys
End SubJe ne suis pas très doués mais j'apprend
Bonjour
Lorsque je sélectionne Antony dans le Combobox1 , j'ai aussi la ligne de Argenteuil qui apparais dans mes textbox.
Heu non. Je ne vois pas de souci
Par contre vous pourriez remplacer les textbox par une listbox. Ce serait plus simple surtout si vous avez plus de personne sur le site Anthony par exemple
Rem : Est-ce que votre application sera uniquement utilisée sous Windows ou peut-elle être utilisée sous Excel MAC le cas échéant
EDIT : oups si je vois le souci. désolé pour mon premier message
Bonjour Dan.
Deja merci de ton aide
Mois j'en vois un
ALBANO ne devrais pas apparaitre.
Par contre vous pourriez remplacer les textbox par une listbox
les donnés recueilli irons sur une autre feuille donc je pensais que ce serais plus simple avec des textbox.
Rem : Est-ce que votre application sera uniquement utilisée sous Windows ou peut-elle être utilisée sous Excel MAC le cas échéant
Uniquement sur Windows
Oui j'ai édité mon post précédent
Avant d'aller plus loin, ma question est de savoir ce que vous allez faire si vous avez plus de 6 personnes sur le site Anthony. Mettons que vous en avez 20.... vous allez faire autant de textbox ?
re
"Avant d'aller plus loin, ma question est de savoir ce que vous allez faire si vous avez plus de 6 personnes sur le site Anthony"
C'est une base de donné qui bouge tout les mois .
Sur Antony ce mois-ci il y a 6 SST le mois prochain ça pourra être 12 ou 4
Le fichier envoyer est un brouillon j'ai prévu de rajouté des Textbox en tout il y en aura 20 environ.
En tout cas merci
re
Le fichier envoyer est un brouillon j'ai prévu de rajouté des Textbox en tout il y en aura 20 environ.
Waouh, c'est un peu compliqué çà ou plus lourd .. Quand vous dites 20, cela veut dire 10 noms ?
A mon avis, la listbox serait bien plus utile. Le tout est de voir ce que vous voulez au final. C'est d'ailleurs la première chose à faire sans quoi vous risquez de devoir refaire.
Mais bon dans le cas actuel, procédez comme ceci
1. Au dessus de votre code Combobox1_change, ajoutez ceci
Dim f As Worksheet2. Remplacez le code Combobox1_change par celui ci-dessous
Private Sub ComboBox1_Change()
Dim vrech As Range
Dim prem As String
With Sheets("bdd-SST").Range("A1:A" & Range("A" & Rows.Count).End(xlUp).Row)
Set vrech = .Find(Me.ComboBox1.Value, LookIn:=xlValues)
If Not vrech Is Nothing Then
prem = vrech.Address
i = 1
Do
If vrech = ComboBox1.Value Then
Controls("Textbox" & i) = Sheets("bdd-SST").Cells(vrech.Row, 4).Value
Controls("Textbox" & i + 1) = Sheets("bdd-SST").Cells(vrech.Row, 5).Value
End If
i = i + 2
Set vrech = .FindNext(vrech)
Loop While Not vrech Is Nothing And vrech.Address <> prem
End If
End With
End SubRem :
- à noter que puisque vous utilisez VBA on peut se passer de la colonne D et adapter le code en conséquence pour reprendre les noms et prénoms
- Il faut aussi prévoir un code qui efface les textbox à chaque changement de la combo... là vous ajoutez ce code dans l'USF
Private Sub Effacer_Click()
Dim ctl As MSForms.Control
For Each ctl In Me.Controls
Select Case TypeName(ctl)
Case "TextBox": ctl.Text = vbNullString
'Case "ComboBox": ctl.ListIndex = -1
End Select
Next ctl
End Subensuite vous ajoutez ceci dans le code Combobox1_change, juste en dessous de Dim prem as string -->
Call Effacer_Clickre
Fil cloturé sans commentaire ?
Re
Super un gros Merci pour ton aide .
J'ai cliquer trop Vite