Combobox multiples pour base de données

zeb33

XLDnaute Junior
Bonjour le forum,

A partir de différents fil, j'ai pu constitué une base de données.

Il me reste un souci, j'ai une combobox qui gère les noms, mais plusieurs personnes peuvent avoir le même nom avec différents prénom, il manque donc une combobox pour les prénoms. Mais j'ai aussi besoin de pouvoir chercher une personne par l' indice de promotion.

Ci joint fichier exemple
 

Pièces jointes

  • EXEMPLE.zip
    46.1 KB · Affichages: 45
  • EXEMPLE.zip
    46.1 KB · Affichages: 51
  • EXEMPLE.zip
    46.1 KB · Affichages: 47

ZZR09

XLDnaute Occasionnel
Re : Combobox multiples pour base de données

Bonjour Zeb33, le forum

je te propose deux solutions en VBA et une dans Excel:

1-liste des noms dans un combobox ==> choix de l'utilisateur ==> liste des noms et prénoms correspondant dans une listebox ==> double click = sélection de l'étudiant (affichage des renseignements).

2-liste des noms dans un combobox ==> choix de l'utilisateur ==> filtrage par nom et affichage des prénoms dans la seconde combobox ==> choix du prénom = sélection de l'étudiant(e) et affichage des renseignements.

3- intervenir sur le fichier excel: créer une colonne "Nom & Prénom" et dans les USF, utiliser ce champ dans la combobox de sélection. c'est la solution donnée en exemple ci joint. j'ai été obligé de supprimer les 3/4 des entrées afin que ça passe à moins de 48ko :eek:

en fait, c'est juste une question de choix :confused: . dis nous ce que tu préfères (il y a certainement d'autres solutions). je pense qu'on pourra satisfaire à ta demande. ;).

A te lire
 

Pièces jointes

  • liste.zip
    47.2 KB · Affichages: 57
  • liste.zip
    47.2 KB · Affichages: 62
  • liste.zip
    47.2 KB · Affichages: 66
Dernière édition:

BOISGONTIER

XLDnaute Barbatruc
Repose en paix
Re : Combobox multiples pour base de données

Bonjour,

Code:
Private Sub UserForm_Activate()
  Set MonDico = CreateObject("Scripting.Dictionary")
  MonDico.Add "*", "*"
  For Each c In Range("a2:" & Range("A2").End(xlDown).Address)
     If Not MonDico.Exists(c.Value) Then MonDico.Add c.Value, c.Value
  Next c
  Me.Promotion.List = MonDico.items
  Me.Promotion.ListIndex = 0
End Sub

Private Sub Promotion_Change()
  i = 0
  Me.Nom.Clear
  For Each c In Range(Sheets("annu").[A2], Sheets("annu").[A65000].End(xlUp))
    If c = Me.Promotion Or Me.Promotion = "*" Then
      Me.Nom.AddItem
      Me.Nom.List(i, 0) = c.Offset(0, 3) & " " & c.Offset(0, 4)
      Me.Nom.List(i, 1) = c.Row
      i = i + 1
    End If
   Next c
   Me.Nom.ListIndex = 0
End Sub

Private Sub Nom_Change()
   If Me.Nom.ListIndex <> -1 Then
     i = Val(Me.Nom.Column(1))
     If i <> 0 Then
        Me.N°_Dossier = Worksheets("Annu").Cells(i, 2).Value
        Me.N°_Identifiant = Worksheets("Annu").Cells(i, 3).Value
        Me.Adresse = Worksheets("Annu").Cells(i, 6).Value
        'Me.Pays = Worksheets("Annu").Cells(i , 7).Value
        Me.Tel = Worksheets("Annu").Cells(i, 8).Value
        Me.Tel.Value = Format(Tel.Value, "00"" ""00"" ""00"" ""00"" ""00")
        Me.Portable = Worksheets("Annu").Cells(i, 9).Value
        Me.Portable.Value = Format(Portable.Value, "00"" ""00"" ""00"" ""00"" ""00")
        Me.Date_de_Naissance = Worksheets("Annu").Cells(i, 10).Value
        Me.Liste = Worksheets("Annu").Cells(i, 11).Value
        Me.Note = Worksheets("Annu").Cells(i, 12).Value
   End If
 End If
End Sub

JB
 

Pièces jointes

  • Copie de EXEMPLE.zip
    44.9 KB · Affichages: 63
  • Copie de EXEMPLE.zip
    44.9 KB · Affichages: 65
  • Copie de EXEMPLE.zip
    44.9 KB · Affichages: 67
Dernière édition:

zeb33

XLDnaute Junior
Re : Combobox multiples pour base de données

Bonjour Boisgontier, le forum,

Bien vu l'idée de grouper nom et prénom, cela économise une combobox.
Pour le reste, cela semble bien fonctionner.

Je teste tout ça et j'essaye de comprendre comment marche ta solution.

Merci beaucoup


Zeb
 

Discussions similaires

Statistiques des forums

Discussions
312 749
Messages
2 091 626
Membres
105 009
dernier inscrit
aurelien76110