IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Voir le flux RSS

Pierre Fauconnier

Exclusivité XL 365: Programmez en VBA avec les nouvelles fonctions et oubliez les Dictionary et les arrays

Noter ce billet
par , 02/11/2020 à 21h16 (995 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?

Nom : 2020-11-02_195535.png
Affichages : 1655
Taille : 176,2 Ko


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:

Nom : 2020-11-02_201109.png
Affichages : 322
Taille : 27,8 Ko


2. Extraire les factures pour un client particulier peut être réalisé avec la fonction FILTRE

Nom : 2020-11-02_201228.png
Affichages : 351
Taille : 101,2 Ko



En VBA, on peut utiliser ces fonctions avec EVALUATE... Voici comment je chargerais la liste déroulante des clients pour afficher le userform

Code vba : Sélectionner tout - Visualiser dans une fenêtre à part
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

Code vba : Sélectionner tout - Visualiser dans une fenêtre à part
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

Envoyer le billet « Exclusivité XL 365: Programmez en VBA avec les nouvelles fonctions et oubliez les Dictionary et les arrays » dans le blog Viadeo Envoyer le billet « Exclusivité XL 365: Programmez en VBA avec les nouvelles fonctions et oubliez les Dictionary et les arrays » dans le blog Twitter Envoyer le billet « Exclusivité XL 365: Programmez en VBA avec les nouvelles fonctions et oubliez les Dictionary et les arrays » dans le blog Google Envoyer le billet « Exclusivité XL 365: Programmez en VBA avec les nouvelles fonctions et oubliez les Dictionary et les arrays » dans le blog Facebook Envoyer le billet « Exclusivité XL 365: Programmez en VBA avec les nouvelles fonctions et oubliez les Dictionary et les arrays » dans le blog Digg Envoyer le billet « Exclusivité XL 365: Programmez en VBA avec les nouvelles fonctions et oubliez les Dictionary et les arrays » dans le blog Delicious Envoyer le billet « Exclusivité XL 365: Programmez en VBA avec les nouvelles fonctions et oubliez les Dictionary et les arrays » dans le blog MySpace Envoyer le billet « Exclusivité XL 365: Programmez en VBA avec les nouvelles fonctions et oubliez les Dictionary et les arrays » dans le blog Yahoo

Mis à jour 03/11/2020 à 20h46 par Pierre Fauconnier

Catégories
VBA , Excel , MS Office , Excel 365

Commentaires

  1. Avatar de kilimanjaro
    • |
    • permalink
    Trés clair et trés efficace.
    et j'aime bien le "pensez Excel avant de penser VBA" cela me parle...

    Merci et bonne journée
  2. Avatar de MarcelG
    • |
    • permalink
    Bonjour,

    Si j'ai bien compris.
    La gestion de Combobox en cascades va très avantageusement être simplifiée.

    Merci.
  3. Avatar de Pierre Fauconnier
    • |
    • permalink
    Salut Marcel,


    Réponse tardive, mais oui, tu as bien compris. Il suffit de regarder le code que je fournis dans le billet pour se convaincre que c'est BEAUCOUP plus simple!