Liste intuitive en userform +récupération résultat à multiple valeurs

Bonjour cher forum :)

je suis entrain de préparer petite interface qui me permet de lister un ensemble des conditions d'attribution d'accord à un médicament choisie d'une liste déroulante intuitive

exemple (ci-joint) , si je choisie médicament X il doit me charger liste des cdt 1 et cdt 2 et cdt 3 (dans une frame) qui seront imprimées par la suite pour faciliter l'étude administrative du dossier.

mes points de blocage:

1- lors de validation du choix de la liste déroulante avec l'"entrée" uns msg d'erreur : erreur d'exécution 5 , le filtrage des valeurs non-double non plus

2- je sais pas comment charger (dans un frame) les conditions du médicament choisie dans le combobox ( en excel "normal" y'a la fonction indirect, mais en vba )

3- comment puis-je imprimer l'ensemble des information affichées , l'envoyer à l'imprimante

5version-forum.xlsm (111.50 Ko)

Bonjour

Une solution VBA

5version-forum.xlsm (129.20 Ko)

merci pour votre contribution scraper

dés le demarrage de la form, un message d'erreur ; erreur d'execution 1004 - la methode RANGE de l'objet Global a echoué

Correction : fonctionnement avec le bouton démarrage

2version-forum2.xlsm (127.70 Ko)

j'ai compris vos modifications et ça marche nikel pour le chargement de la liste combobox sans doublon

très bien

sauf pourquoi à la validation du choix avec le curseur ou "entrée" , un message d'erreur s'affiche en orientant vers :

Private Sub ComboBox2_Change()
 If Me.ComboBox2 <> "" And IsError(Application.Match(Me.ComboBox2, a, 0)) Then
  Me.ComboBox2.List = Filter(a, Me.ComboBox2.Text, True, vbTextCompare)
 Me.ComboBox2.DropDown
End If
End Sub

Bonsoir,

ci-jointe une proposition complète en modifiant votre tableau des conditions et en nommant ce tableau ainsi que votre BD.

4version-forum1.xlsm (111.92 Ko)

très heureux par votre excellente simple intervention efficace THEV

g perdu espoir hier soir , donc j'au dû changer totalement la stratégie en adaptant d'autres codes, plus complexes

mais super, je note votre réponse comme solution qui sert aux autres internautes :*

je partage avec vous l'état actuel du fichier,(qui peut servir aux membres) et que j'optimise continuellement,

je vise maintenant à:

1/ charger le Combobox liste médicaments de la base sans doublon

2/ dans la listbox , extracter les critères (selon clé DCI) de la feuille "crt" à partir d'une cellule qui contient tt les critères séparées par un séparateur ( par exemple "/")

2phase-2-essai.zip (282.00 Ko)

Code fonctionnel pour extracter les valeurs delimitées par "/" d'une cellule spécifique et l'ajouter en cascade dans une ListBox.

Dim cellVal As String, splitVal() As String, i As Integer

cellVal = Sheets("crt").Range("B2").Value ' remplacer avec localité de votre cellule
splitVal = Split(cellVal, "/") ' separer,delimité votre chaine en utilisant le separeteur "/"

For i = LBound(splitVal) To UBound(splitVal)
ListBox_Cdt.AddItem splitVal(i) ' ajouter chaque element trouvé à la listbox
Next i

reste à l'adapter pour qu'il remplace la cellule spécifique au fonction du medicament selectionné et afficher dynamiquement les résultat en changeant le medicament selectionné

je vise rechercher le texte "TxtBx_DCI" dans la colonne A de la feuille "crt" et renvoie chaque donnée de la cellule située en colonne B, délimitée par "/", dans une ListBox nommée "ListBox_Cdt"

le code :

Dim ws As Worksheet
Dim rng As Range
Dim cell As Range
Dim data As String

    ' Spécifie la feuille "crt"
    Set ws = ThisWorkbook.Sheets("crt")

    ' Réinitialise la ListBox
    ListBox_Cdt.Clear

    ' Recherche le texte "TxtBx_DCI" dans la colonne A
    Set rng = ws.Range("A1:A" & ws.Cells(ws.Rows.Count, "A").End(xlUp).Row)

    For Each cell In rng
        ' Vérifie si la cellule contient le texte recherché
        If InStr(1, cell.Value, "TxtBx_DCI", vbTextCompare) > 0 Then
            ' Récupère la donnée de la cellule située en colonne B
            data = cell.Offset(0, 1).Value

            ' Vérifie si la donnée est délimitée par "/"
            If InStr(1, data, "/", vbTextCompare) > 0 Then
                ' Ajoute la donnée à la ListBox
                ListBox_Cdt.AddItem Trim(Split(data, "/")(0))
            End If
        End If
    Next cell

mais il me renvoie rien de tt :'(

1phase-2-essai.zip (289.69 Ko)

la solution, recherche , extraction suite séparateur et insertion en list box:

Dim MySheet As Worksheet
Dim MyRange As Range
Dim Cell As Range
Dim FindString As String
Dim SplittedData As Variant
Dim i As Integer

Set MySheet = ThisWorkbook.Sheets("crt")
Set MyRange = MySheet.Range("A:A")
FindString = TxtBx_DCI.Text

For Each Cell In MyRange
    If Cell.Value = FindString Then
        SplittedData = Split(MySheet.Cells(Cell.Row, 2).Value, "/")

        ListBox_Cdt.Clear
        For i = LBound(SplittedData) To UBound(SplittedData)
            ListBox_Cdt.AddItem SplittedData(i)
        Next i
    End If
Next Cell
Rechercher des sujets similaires à "liste intuitive userform recuperation resultat multiple valeurs"