Problème de code

11sst-test.xlsm (24.65 Ko)

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 Sub

Je 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

image

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 Worksheet

2. 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 Sub

Rem :
- à 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 Sub

ensuite vous ajoutez ceci dans le code Combobox1_change, juste en dessous de Dim prem as string -->

Call Effacer_Click

re

Fil cloturé sans commentaire ?

Re

Super un gros Merci pour ton aide .

J'ai cliquer trop Vite

Rechercher des sujets similaires à "probleme code"