par , 02/11/2020 à 20h16 (1055 Affichages)
Salut.
Vous souhaitez utiliser un tableau structuré comme celui qui suit pour alimenter une liste déroulante des clients sans doublons (par ordre alphabétique) pour récupérer rapidement les factures du client choisi au sein d'un userform?
Jusqu'il y a peu, les réponses à une demande de programmation d'un userform pour sélectionner un client puis ses factures amenait assez invariablement à proposer l'utilisation d'un dictionary et une manipulation d'arrays (tableaux de données en VBA). En pensant Excel avant de penser VBA, on pouvait se passer de ces manipulations "de programmeur" et tirer parti des outils d'Excel, notamment les tableaux structurés et la suppression des doublons. Mais la démarche nécessitait souvent de passer par des tableaux intermédiaires.
Je vous propose de simplifier RADICALEMENT votre code avec Excel 365!
Pour cela, vous allez vous appuyer sur les nouvelles fonctions suivantes:
1. Extraire la liste triée des clients sans doublons. En Excel, on peut y arriver ainsi:
2. Extraire les factures pour un client particulier peut être réalisé avec la fonction FILTRE
En VBA, on peut utiliser ces fonctions avec EVALUATE... Voici comment je chargerais la liste déroulante des clients pour afficher le userform
1 2 3 4 5 6
| Sub test()
With UserForm1
.cboCustomers.List = Evaluate("SORT(UNIQUE(t_Factures[Client]))")
.Show
End With
End Sub |
A la modification du combobox, on rafraichirait le listbox en utilisant aussi EVALUATE
1 2 3 4 5 6 7
| Private Sub cboCustomers_Change()
UpdateLboInvoices
End Sub
Sub UpdateLboInvoices()
lboInvoices.List = Evaluate("FILTER(t_Factures[Facture],t_Factures[Client]=""" & cboCustomers.Value & """)")
End Sub |
On se rend compte ici de la facilité avec laquelle on peut maintenant alimenter des combobox et des listbox...
Et vous, ça vous parle, ces nouvelles techniques exclusives XL 365?
Les avez-vous essayées?
Les avez-vous adoptées?
Plus que jamais: Lorsque vous codez en VBA pour Excel, PENSEZ EXCEL AVANT DE PENSER VBA
Bon travail avec Excel et VBA