Liste en cascade avec saisi semi-intuitive

YaGo

XLDnaute Junior
Bonjour,

Je me permet de revenir vers vous car malgré avoir fait plusieurs recherches sur internet et le forum, je n'arrive toujours pas a faire fonctionner ma combobox comme je le souhaiterais...

Ci-dessous la demande effectuer sur mon dernier post.

J'ai réalisé un code pour le système de saisi semi-intuitif mais celui-ci selectionne la première valeur sans me proposer les autres qui suivent et qui commencent par les même caractère.

De plus, j'ai rajouté le système de combobox cascade. Or dans mon fichier excel, la valeur pour le 2ème ComboBox ne se situe pas en face de la valeur sélectionner dans le 1er ComboBox.

Comme dans l'exemple ci-dessous, je souhaiterai sélectionner 2-Documention dans le 1er ComboBox puis 1-Heures dans le 2ème ComboBox puis heures fabrication dans le 3ème ComboBox

Exemple: Regarde la pièce jointe 329692

Code:
Private Sub ListActivity_Change()
    ListSection.Clear
    Set Dico1 = CreateObject("Scripting.Dictionary")
    Set Dico2 = CreateObject("Scripting.Dictionary")
    tmp = UCase(ListActivity) & "*"
    For i = LBound(TabTotal) To UBound(TabTotal)
        If UCase(i) Like tmp Then If Not IsNumeric(TabTotal(i, 1)) Then Dico1(TabTotal(i, 1)) = ""
        If TabTotal(i, 1) = ListActivity Then Dico2(TabTotal(i, 2)) = ""
    Next
    ListActivity.List = Dico1.keys
    ListActivity.DropDown
    ListSection.List = Dico2.keys
End Sub

Pouvez-vous m'indiquez la démarche à suivre?
Merci bien

Merci d'avance pour votre aide.
 

BOISGONTIER

XLDnaute Barbatruc
Repose en paix
Re : Liste en cascade avec saisi semi-intuitive

Bonsoir,

saisie intuitive

Cascade Intuitif 3 niveaux.gif

En PJ, une exemple de saisie intuitive (type Google) en cascade 3 niveaux dans un formulaire .

JB
 

Pièces jointes

  • DVSaisieIntuitiveFormCascade3choix.zip
    252.1 KB · Affichages: 37
Dernière édition:

YaGo

XLDnaute Junior
Re : Liste en cascade avec saisi semi-intuitive

Bonsoir BOISGONTIER,

D'abord merci pour ton aide, j'ai réussi à obtenir une liste en cascade sur 3 niveaux avec saisi semi-intuitive.

Or concernant mon fichier, il me reste toujours un problème non résolu...
Je souhaiterais avoir la possibilité de sélectionner dans ma 2ème combobox la valeur qui ne se situe pas directement en face.
Un exemple vaut mieux qu'un long discours...

Comme dans l'exemple ci-dessous, je voudrais sélectionner 2-Documention dans le 1er ComboBox puis 1-Heures dans le 2ème ComboBox puis heures fabrication dans le 3ème ComboBox (actuellement je ne peux sélectionner que les valeurs situer sur la même ligne)
explication.jpg

Ci-joint mon fichier excel si besoin.

Cordialement,

YaGo
 

Pièces jointes

  • explication.jpg
    explication.jpg
    11.3 KB · Affichages: 38
  • explication.jpg
    explication.jpg
    11.3 KB · Affichages: 41
Dernière édition:

YaGo

XLDnaute Junior
Re : Liste en cascade avec saisi semi-intuitive

Quelqu'un peut-il m'éclairer en m'indiquant s'il faut créer une deuxième base de données avec la bonne mise en forme?
Ou est-il possible d'adapter le code en fonction?
Merci
 

Paf

XLDnaute Barbatruc
Re : Liste en cascade avec saisi semi-intuitive

Bonjour

quelques modifications à tester:

à modifier
Code:
Private Sub UserForm_Initialize()
    Dim LastRowTab As Integer, LastRowCurrency As Integer, Dico1
    Dim i As Integer
    Set Dico1 = CreateObject("Scripting.Dictionary")
    LastRowTab = Sheets("Tableau").Range("A6").End(xlDown).row  'Dernière ligne de la base de données
    TabTotal = Sheets("Tableau").Range("A6:S" & LastRowTab) 'Mise en place des valeurs dans le tableau
    
    For i = LBound(TabTotal) To UBound(TabTotal) 'Suppression des doublons et cases vides
        If Not IsNumeric(TabTotal(i, 1)) Then Dico1(TabTotal(i, 1)) = ""
    Next
    
    
    ListActivity.List = Dico1.keys 'Ajout des données dans les combobox
   
End Sub

à rajouter et à adapter pour ListDescription
Code:
Private Sub ListActivity_Click()
 Dim Dico2
 Set Dico2 = CreateObject("Scripting.Dictionary")
    For i = LBound(TabTotal) To UBound(TabTotal) 'Suppression des doublons et cases vides
    MsgBox TabTotal(i, 1) & "  numeric : " & IsNumeric(TabTotal(i, 1))
        If Left(ListActivity, 1) = Left(TabTotal(i, 1), 1) And IsNumeric(TabTotal(i, 1)) Then Dico2(TabTotal(i, 2)) = ""
    Next
    ListSection.List = Dico2.keys
End Sub

Si dans la colonne Section, on trouvait toujours 1, il n'y aurait pas lieu d'utiliser ce code, un simple
ListSection.additem "1" suffirait

Les modifications sont basées sur les données du classeur joint, si ces données devaient différer (texte par exemple ) il faudrait revoir .

A+

Edit : Supprimer Private Sub ListSection_Change()
 
Dernière édition:

YaGo

XLDnaute Junior
Re : Liste en cascade avec saisi semi-intuitive

Bonjour,
J'ai effectué une partie de ton code Paf avec quelque changement.

J'ai remplacé le ListActivity_Click par ListActivity_Change afin de garder la saisi semi-intuitive.
Et le code marche sans enlever Private Sub ListSection_Change().

Malgré cela, il me reste toujours un point qui me gène dans mon code vba.
Je voudrais rajouté la possibilité à l'utilisateur de compléter s'il le souhaite seulement la description ou la section et la description.

Or je ne peux le faire qu'une fois, c'est-à-dire que lorsque je supprime la sélectionner dans la combobox section puis souhaite à nouveau en sélectionner une autre, la liste n’apparaît plus... (idem avec la combobox description)
De plus, la saisi intuitive ne marche plus si je n'ai pas rempli la combobox précédente.

Je ne sais pas si je suis très clair donc je vous met le fichier en pièce jointe afin d'effectuer le test par vous même.
 
Dernière édition:

Discussions similaires

Statistiques des forums

Discussions
312 317
Messages
2 087 189
Membres
103 493
dernier inscrit
Vidal Salvador