XL 2013 doublon liste cascade combobox

ccpapy

XLDnaute Impliqué
bonjour,
je profite du confinement pour améliorer un petit fichier.
j'aimerai qu 'en effectuant une recherche grâce un combobox , un textbox s'affiche ou devienne invisible si il y a des doublons laissant place à un 2ème combobox me permettant de choisir parmi les doublons.
le petit fichier joint sera plus parlant
merci
 

Pièces jointes

  • liste.xlsm
    22.3 KB · Affichages: 14

_Thierry

XLDnaute Barbatruc
Repose en paix
Bonsoir @ccpapy , le forum

Voici une version qui le fait, mais vu vite fait pour le bouton modif il faudra revoir, car il ne prend pas en compte le choix du prénom qui pourrait être fait dans la ComboBox2 maintenant qu'elle s'affiche... Donc à revoir ...

Bien à toi, à vous
@thierry
one-world-together-at-home.JPG>>> Ca va commencer sur France 2 :p
 

Pièces jointes

  • XLD_ccpapy_liste.xlsm
    24.3 KB · Affichages: 6

ccpapy

XLDnaute Impliqué
bonjour à tous.
@Thierrry
merci de t'intéresser à mon problème
je travaille sur ton approche depuis une heure :rolleyes:
je bloque totalement.
ma première étape était d'avoir les valeurs du textbox2 correspondant au 2ème prénom quand on choisit dans la combobox2
après de multiples essais avec "Private Sub ComboBox2_Change" , je n'arrive à rien :(

sur mon fichier d'origine, j'avais contourné tous ces problèmes en évitant les doublons = je rajoutais les 2 premières lettres du prénom au nom quand je rentrais une personne dans la base

je me crée donc des soucis à vouloir faire une amélioration qui n'est pas strictement nécessaire
foutu confinement ! qu'est-ce qu'on ne ferait pas pour faire passer le temps :p

prenez soin de vous tous le forum
je retourne à mes tests et encore merci
 

job75

XLDnaute Barbatruc
Bonjour ccpapy, _Thierry, le forum,

Voyez le fichier joint, le code de l'UserForm utilise 2 Dictionary :
VB:
Dim d As Object, dd As Object 'mémorise les variables

Private Sub ComboBox1_Change()
With ComboBox2
    If ComboBox1.ListIndex = -1 Then .Text = "": .Clear: Exit Sub
    .List = Split(Mid(d(ComboBox1.Text), 2), Chr(1))
    If .ListCount = 1 Then .ListIndex = 0: Exit Sub
    .Text = ""
    .SetFocus
End With
CreateObject("wscript.shell").SendKeys "%{DOWN}" 'déroule la liste
End Sub

Private Sub Modifier_Click()
Dim lig&
If ComboBox1.ListIndex = -1 Then ComboBox1.DropDown: Exit Sub
If ComboBox2.ListIndex = -1 Then ComboBox2.DropDown: Exit Sub
If TextBox1 = "" Then TextBox1.SetFocus: Exit Sub
If TextBox2 = "" Then TextBox2.SetFocus: Exit Sub
lig = dd(ComboBox1 & Chr(1) & ComboBox2)
With Sheets("Feuil1")
    .Cells(lig, 1) = TextBox1
    .Cells(lig, 2) = TextBox2
End With
Unload Me
End Sub

Private Sub Annuler_Click()
Unload Me
End Sub

Private Sub UserForm_initialize()
Dim tablo, i&, x$, y$
Set d = CreateObject("Scripting.Dictionary")
d.CompareMode = vbTextCompare 'la casse est ignorée
Set dd = CreateObject("Scripting.Dictionary")
dd.CompareMode = vbTextCompare 'la casse est ignorée
tablo = Sheets("Feuil1").[A1].CurrentRegion.Resize(, 2) 'matrice, plus rapide
For i = 2 To UBound(tablo)
    x = tablo(i, 1)
    y = x & Chr(1) & tablo(i, 2)
    d(x) = d(x) & Chr(1) & tablo(i, 2) 'mémorise le prénom
    dd(y) = i 'mémorise la ligne
Next
ComboBox1.List = d.keys 'liste sans doublon
End Sub
A+
 

Pièces jointes

  • liste(1).xlsm
    28 KB · Affichages: 5
Dernière édition:

ccpapy

XLDnaute Impliqué
re,
@job75
merci pour ton aide. une précision sur mon problème
les colonnes A et B ne changent pas donc pas de nouveau nom et prénom dans l'usf
par contre, dans les textbox, je récupère les valeurs des colonnes C,D et E
et ce sont ces valeurs qui peuvent être modifiées
j'essaye d'adapter mais je plante lamentablement à un point que je passe par le gestionnaire de tâches pour fermer excel ... MDR
 

_Thierry

XLDnaute Barbatruc
Repose en paix
Bonjour Papy, Job75

Une autre approche sans dico, et qui s'adapte assez vite à l'ajout de champs. On peut tout modifier, même le Nom et les Prénoms... et donc sur A, B, C, D & E.

J'ai eu à revoir un tout petit peu la façon de penser du UserForm, mais le résulat sur la feuille est respecté.... Je ne sais pas si ça conviendra...

Bien à vous
@+Thierry
 

Pièces jointes

  • XLD_ccpapy_liste_v00.xlsm
    31 KB · Affichages: 5

ccpapy

XLDnaute Impliqué
@Thierrry
stop !
impeccable, avec ça, je vais m'en sortir
j'ai commencé à rajouter une ligne pour éviter le bug quand on efface le combobox1
maintenant, je vais mettre tout ça sur mon fichier d'origine.
ça devrait aller
merci à vous 2
bon dimanche ( pluvieux :( ) à vous tous
 

ccpapy

XLDnaute Impliqué
@job75
désolé pour la précision
j'ai fini mon fichier mais je garde quand même ta solution pour l'étudier et essayer de comprendre un peu mieux le processus .
j'ai supprimé les lignes pour permettre de modifier et laisser les textbox vides
encore une précision zappée ;)
et si j'osais, je dirai " good job " pour ce fichier :p
 

Discussions similaires

Statistiques des forums

Discussions
312 196
Messages
2 086 100
Membres
103 116
dernier inscrit
kutobi87