Ceci est une page optimisée pour les mobiles. Cliquez sur ce texte pour afficher la vraie page.

Microsoft 365 RowSource d'une Combobox

eric72

XLDnaute Accro
Bonjour à tous,
Je cherche à faire une recherchev en vba à partir d'une combobox et avec une liste qui se trouve dans "Source Communes.xlsx", voilà le code que j'ai écrit (mais sans succès)

Private Sub TxtCommuneFacturation_Change()
TxtCpFacturation.Value = Application.WorksheetFunction.VLookup(TxtCommuneFacturation.Value, "MaListe", 2, 0)
et
Private Sub UserForm_Initialize()
MaListe = "'[Source Communes.xlsx ]feuil1'!List_Communes"
Me.TxtCommuneFacturation.RowSource = MaListe
End Sub

le message est impossible de définir la propriété RowSource (je ne suis pas très doué!!!)
Je pense que l'erreur va vous sauter aux yeux, mais pas au miens...
Merci beaucoup pour votre aide toujours aussi précieuse.
Eric
 

Bernard_XLD

XLDnaute Barbatruc
Membre du Staff
re,

cela irait 1000 fois plus vite avec une liste de combobox alimentée par un tableau vb filtré par la valeur de la combobox.

mais là, c'est midi, pause déjeuner, à plus tard !

Bien cordialement, @+
 

eric72

XLDnaute Accro
Je suis d'accord mais j'ai aussi essayé en mettant ma liste des communes dans mon classeur et mettant la rowsource avec "List_Commune" et c'est aussi lent, d'ailleurs je ne peux pas joindre ce fichier car il fait 1162ko
Merci
 

eric72

XLDnaute Accro
j'ai suivi votre conseil et j'ai mis ma liste des communes dans mon classeur j'ai écrit ce code :
Private Sub UserForm_Initialize()
Dim feuille As Worksheet
Dim ligne As Integer
Dim derligne As Integer

Set feuille = ThisWorkbook.Sheets("Feuil1")
With feuille
derligne = .Range("a" & Rows.Count).End(xlUp).Row
For ligne = 2 To derligne
Me.TxtCommuneFacturation.AddItem .Range("a" & ligne).Value
Next ligne
End With

Set feuille = Nothing
End Sub

et là j'ai un message de dépassement de capacité, est ce que c'est limité???
Merci
Eric
 

patricktoulon

XLDnaute Barbatruc
re
bon alors
je te propose de laisser ton fichier list_comune fermé !!!!!
je te propose de virer le inialyse de ton usf client
je te propose d'utiliser le activate
je te propose de récupérer les nom et code postal
tout cà tres tres vite est sans ouvrir le fichier
tu est d'accords avec ça
ben voila
avec mon petit code ado sur tableaux structurés dans fichiers fermé qui va bien
VB:
Private Sub UserForm_Activate()
    Dim Bd$
    Bd = ThisWorkbook.Path & "\Source Communes.xlsm"
    Me.Repaint
    With CreateObject("ADODB.Connection")
        Sql = "select [Nom_commune],[Code_postal] from [Feuil1$]"
        .Open "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" & Bd & ";Extended Properties='Excel 12.0;HDR=Yes'"
        tablo = .Execute(Sql).GetRows
        .Close
        With TxtCommuneFacturation
            .ColumnCount = 2
            .Column = tablo
        End With
    End With
End Sub

c'est pas compliqué moins de 1 seconde pour récupérer ta liste de commune dans le fichier list-commune.xlsm

c'est pas beau la vie
ado mon amis est arrivé sans se préssé hehé hé
démonstration


t' a compris ou je casse tout !!!
libre a toi d'ouvrir ou pas ce fichier après mais pour ta combobox tu n'a pas besoins de l'ouvrir
 

patricktoulon

XLDnaute Barbatruc
maintenant si tu veux faire de l'intuitif tu recupere le getrows en le transposant
dans une variable globale module dans ton userform
et au change de la combo tu tri cette variable tableau
ca aussi il faut te montrer ?
 

patricktoulon

XLDnaute Barbatruc
ben ca met deux minutes par ce que ta liste est longue
on pourrait procéder autrement
ajouter le where in ( le text de la combo.value) dans la requête et la faire a chaque change
@Yeahou sait de quoi je parle
ca serait toujours plus rapide
et toujours le fichier fermé c'est magic!!!
 

eric72

XLDnaute Accro
Waouhhh c'est juste génial, en effet le temps de traitement est immédiat.
Si je peux abuser, peux tu me dire pourquoi dans mon userform "momie" s'affiche en dehors de la combobox "recherche"?
Merci 1000 fois pour cette solution, c'est MAGIQUE.
eRIC
 

eric72

XLDnaute Accro
Patricktoulon
est-il également possible de récupérer le code postal juste en sélectionnant la ville avec la même méthode ou faut-il passer par vlookup (mais sans ouvrir le fichier source, ca va être compliqué)!!!
Eric
 

Discussions similaires

Réponses
7
Affichages
789
Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…