Compléter des textbox en fonction du résultat d'une combobox

Julie_

XLDnaute Nouveau
Bonsoir à tous,

Je suis déjà sur le forum depuis un certain temps mais il m'était impossible de répondre au fil de discussion ou en créer des nouveaux; donc je m'excuse d'avance pour la création de ce nouveau profil mais je n'ai eu d'autre choix. Milles excuses.

J'en viens à mon problème. J'ai un fichier excel avec 3 onglets. Dans le premier il y a un userform avec des combobox; des textbox... ce formulaire après avoir été complété enregistre les données dans le même onglet.
L'onglet 2 et l'onglet 3 ne me servent qu'à compléter les combobox puisque dans ces onglets se trouve des listes.


Dans mon formulaire j'ai donc 3 combobox (les 3 premières) liées en cascade. La source de ces combobox se trouve dans l'onglet 2. L'utilisateur peut choisir la combobox 1 ou la 2 ou la 3 pour faire son filtre. (un grand merci pour ce lien
qui m'a permis de faire cette première partie de mon travail).


Ensuite en fonction de la valeur de la combox 1; la textbox 1 et la textbox 2 doivent normalement se compléter automatiquement. Mais voila j'ai beau chercher et essayer plein de code rien ne fonctionne. Le problème c'est que si je ne range pas dans l'ordre numérique la première colonne de l'onglet "Effectif" les textbox se remplissent avec n'importe quoi. Si je mets dans l'ordre cela fonctionne seulement si je ne change pas de personne entre temps.

Je vous joins un fichier qui pourrait vous éclairer sur mon problème et qui pourrait également aider les personnes qui lutte avec les combobox en cascade.

Un grand merci d'avance.
Excellente soirée
 

Pièces jointes

  • Classeur test.xlsm
    39 KB · Affichages: 51
  • Classeur test.xlsm
    39 KB · Affichages: 68
  • Classeur test.xlsm
    39 KB · Affichages: 62

Robert

XLDnaute Barbatruc
Repose en paix
Re : Compléter des textbox en fonction du résultat d'une combobox

Bonsoir Julie et bienvenue, bonsoir le forum,]

En pièce jointe ton fichier modifié avec le code ci-dessous (voir les dernières lignes) :
Code:
Sub ListeCol(noCol)
Dim E As Object 'déclare la variable E (onglet Effectif)
Dim R As Range 'déclare la variable R (Recherche)

Set MonDico = CreateObject("Scripting.Dictionary")
For I = 1 To [bd].Rows.Count
    ok = True
    For n = 1 To [bd].Columns.Count
        If n <> noCol Then
            If Not Range("BD").Cells(I, n) Like Me("comboBox" & n) Then ok = False
        End If
    Next n
    If ok Then
        tmp = Range("BD").Cells(I, noCol)
        MonDico(tmp) = tmp
    End If
Next I
MonDico.Add "*", "*"
temp = MonDico.items
Call Tri(temp, LBound(temp), UBound(temp))
Me("ComboBox" & noCol).List = temp

Set E = Sheets("Effectif") 'définit l'onglet E
'définit la recherche R (recherche dans la colonne noCol de l'onglet E, la valeur de la combobox qui a été modifiée)
Set R = E.Columns(noCol).Find(Me.Controls("ComboBox" & noCol).Value, , xlValues, xlWhole)
If Not R Is Nothing Then 'condition : si il existe au moins une occurrence trouvée
    'condition 2 : si l'occurrence est unique
    If Application.WorksheetFunction.CountIf(E.Columns(noCol), Me.Controls("ComboBox" & noCol).Value) = 1 Then
        Me.TextBox1.Value = E.Cells(R.Row, 4) 'récupère la valeur correspondante dans la TextBox1
        Me.TextBox2.Value = E.Cells(R.Row, 5) 'récupère la valeur correspondante dans la TextBox2
    Else 'sinon (si par exemple, plusieurs fois le même prénom ou homonymie)
        Me.TextBox1.Value = "" 'vide l TextBox1
        Me.TextBox2.Value = "" 'vide l TextBox2
    End If 'fin de la condition 1
End If 'fin de la condition 2
End Sub
Le fichier :
 

Pièces jointes

  • Julie_v01.xlsm
    35.5 KB · Affichages: 84

Julie_

XLDnaute Nouveau
Re : Compléter des textbox en fonction du résultat d'une combobox

Bonjour Robert,
Merci beaucoup!!!! c'est parfait. Excatement ce dont j'avais besoin pour terminer mon fichier. et en plus avec les explications :D


Bonne fin de journée
 

Discussions similaires

Statistiques des forums

Discussions
314 629
Messages
2 111 345
Membres
111 109
dernier inscrit
djameldel