Adaptation Application.Transpose(liste)

Bonjour à tous,

J'essaye d'utiliser ce code de Boisgontierjacques pour une combobox avec recherche dynamique :

Le code à insérer de Jacques et adapté à mes variables :

Private Sub ComboBoxDemandeur_Change()
Dim a()
  a = Application.Transpose([liste]) 'liste est une liste nommée dans sa feuille qui correspond à une formule DECALER...
Me.ComboBoxDemandeur.List = a
    If Me.ComboBoxDemandeur.ListIndex = -1 And IsError(Application.Match(Me.ComboBoxDemandeur, a, 0)) Then
        Me.ComboBoxDemandeur.List = Filter(a, Me.ComboBoxDemandeur.Text, True, vbTextCompare)
        Me.ComboBoxDemandeur.DropDown
    Else
        ActiveCell = Application.Proper(Me.ComboBoxDemandeur)
    End If

End Sub

Mon code d'initialisation du formulaire :

Private Sub UserForm_Initialize()
    Dim x As Byte
    For x = 17 To 74 'Parcours des colonnes pour générer ma liste
        ComboBoxDemandeur.AddItem Sheets("Feuille1").Cells(5, x)
        ComboBoxBesoinDe.AddItem Sheets("Feuille1").Cells(5, x)
    Next x

    lastline = Sheets("Feuille1").Range("C65536").End(xlUp).Row
    For x = 6 To lastline
        With ComboBoxProjet
            .AddItem Sheets("Feuille1").Range(Colonne_LibelleFeuille1 & x) 'Colonne_LibelleFeuille1 contient le nom de la colonne correspondant aux libellés
        End With
    Next x

End Sub

Ma question est : comment exploiter sont transpose(liste) dans mon cas qui n'a pas de liste mais les libelles des colonne 17 à 74 ?

Merci pour votre aide !

Bonjour,

peux-tu poster un fichier ?

Voici un exemple en PJ, j'ai tenté un truc mais qui ne fonctionne pas car j'ai du mal à comprendre la subtilité Array/Liste.

Le code s'applique à la premiere liste déroulante, le reste n'est pas codé.

Initialisation ok

Pour la saisie, fais ceci

Dim choix, dico

Private Sub ComboBoxDemandeur_Change()

    choix = Sheets("BRP").Range("Q5:BV5").Value
    Set dico = CreateObject("Scripting.Dictionary")
    For Each Item In choix
        If UCase(Item) Like "*" & UCase(Me.ComboBoxDemandeur) & "*" Then dico(Item) = ""
    Next
    Me.ComboBoxDemandeur.List = dico.keys
    Me.ComboBoxDemandeur.DropDown
    ActiveCell.Value = Me.ComboBoxDemandeur

End Sub

tu auras une saisie "intuitive"

Génial ça fonctionne ! Merci

Peux tu m'expliquer ce que fait le code pour que je puisse me l'approprier et monter en compétence :) ?

Alors,

Je reprends la liste du possible

choix = Sheets("BRP").Range("Q5:BV5").Value

Ensuite, je compare chaque terme (item) avec ce qui est entré dans le combobox en ajoutant avant et après un * pour dire que ce qui est entré peut se trouver n'importe où

If UCase(Item) Like "*" & UCase(Me.ComboBoxDemandeur) & "*" Then

en mettant en majuscule c'est plus sûr !

Si c'est ok, alors je mets le choix possible (item) dans un dictionnaire (ce qui évite les doublons, mais normalement il n'y en a pas mais c'est plus pratique pour la suite). Cette écriture permet juste de mettre une nouvelle clé dans le dictionnaire appelé ici dico

dico(Item) = ""

Enfin, je mets tous les termes possibles (les clés du dictionnaire) correspondant aux lettres tapées dans le combobox dans la liste du combobox

Me.ComboBoxDemandeur.List = dico.keys
Rechercher des sujets similaires à "adaptation application transpose liste"