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
 

patricktoulon

XLDnaute Barbatruc
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
le code postal tu l'a déjà puisque je récupère les deux colonne dans le fichier fermé
et en sélectionnant un item dans ta liste tu fait par exemple
with TxtCommuneFacturation
msgbox .list(.listindex,1)
end with

le message t'affichera bien le code postal
voila pas la peine de retourner chercher la donnée tu l'a déja 🤣 🤣
et si par estetique tu ne veux pas voir la colonne des codes postals dans la combo ben a la fin du activate tu fait TxtCommuneFacturation.columnwidths="150;0"
 

patricktoulon

XLDnaute Barbatruc
regarde
VB:
Private Sub TxtCommuneFacturation_Change()
'TxtCpFacturation.Value = Application.WorksheetFunction.VLookup(TxtCommuneFacturation.Value, Workbooks("Source Communes.xlsm").Sheets("Feuil1").Range("List_Communes"), 2, 0)
'TxtCommuneFacturation.Value = Application.Proper(TxtCommuneFacturation.Value)
'Dim objPlageRecherche As Range
'Set objPlageRecherche = Workbooks("Source Communes.xlsm").Worksheets("Feuil1").Range("a2:b37000")
'TxtCpFacturation.Value = Application.WorksheetFunction.VLookup(TxtCommuneFacturation.Value, objPlageRecherche, 2)
With TxtCommuneFacturation
If .ListIndex > -1 Then TxtCpFacturation = .List(.ListIndex, 1)
End With
End Sub

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
            .ColumnWidths = "150;0"

        End With
    End With
End Sub

demo7.gif
 

Discussions similaires

Réponses
7
Affichages
746