IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Macros et VBA Excel Discussion :

Plage associative dans une ListBox


Sujet :

Macros et VBA Excel

  1. #1
    Membre habitué Avatar de danbo52
    Profil pro
    Inscrit en
    Octobre 2009
    Messages
    98
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2009
    Messages : 98
    Points : 125
    Points
    125
    Par défaut Plage associative dans une ListBox
    Bonjour,

    Question de gain de temps dans les routines VBA.

    Je souhaite charger une listbox le plus rapidement possible. J'entends par 'le plus rapidement possible', avec le moins de traitements de code possible (il est vrai, qu'un informaticien doit être un peu fénéant, cela l'oblige à optimiser son code).

    si...
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    UserForm.ListBox.Rowsource = "laFeuille!A1:B2"
    est connu, et fonctionne,

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    UserForm.ListBox.Rowsource = "laFeuille!A1:B2" & "laFeuille!C1:D2",
    ne fonctionnant pas. Existe-t-il une méthode qui s'assimilerait à cette forme associative de plages pour charger une listbox ? Je cherche à minimiser les lignes de code.

    Merci, si avis ou piste.

    Danbo52
    Hem ! J'ai souvent l'impression qu'on ne regarde que moi ! Hem !

  2. #2
    Membre émérite Avatar de Fvandermeulen
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Juillet 2007
    Messages
    1 869
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : Belgique

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Juillet 2007
    Messages : 1 869
    Points : 2 662
    Points
    2 662
    Par défaut
    Salut,
    Au lieu de RowSource tu peux utiliser AdItem, mais ça veut dire une boucle pour passer sur chaque cellule => pas certain que ce soit plus court en terme de code, voici toujours un exemple:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    Private Sub UserForm_Initialize()
    Dim MaPlage As Range, cel As Range
     
    Set MaPlage = Sheets("LaFeuille").Range("A1:b2", "C1:D2")
     
    For Each cel In MaPlage
        UserForm.ListBox.AddItem cel
    Next cel
     
    End Sub
    A+
    N'oubliez pas le si votre problème est solutionné.

  3. #3
    Membre habitué Avatar de danbo52
    Profil pro
    Inscrit en
    Octobre 2009
    Messages
    98
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2009
    Messages : 98
    Points : 125
    Points
    125
    Par défaut listbox chargement plages associatives
    Fvandermeulen, merci, mais je connais bien cela.

    Je pense à un constructeur pour réaliser ce travail, constructeur qui serait de la forme
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    userform.listbox.Rowsource = "Plage A" & "Plage B" & "Plage C"
    ...., qui éliminerait toutes les lignes au-delà de la plage à moindre lignes.

    Exemple:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    userform.listbox.Rowsource = "Plage!A1:B2" & "Plage!C1:D3" & "Plage!E1:F4"
    qui élimerait donc les parties au-delà de 2, car la plage l plus courte est plage!A1:B2

    Elle renverrait un résultat
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    userform.listbox.Rowsource = "Plage!A1:B2" & "Plage!C1:D2" & "Plage!E1:F2"
    Si je parviens à me faire comprendre.

    L'idée centrale c'est : moins de code !

    Mon travail consiste à remplir et vider des listbox dans le cadre d'un gestionnaire de devis-factures avec clients, fournisseurs, articles, stocks.

    Comme il y a de nombreuses routines pour remplir les listbox (toujours les mêmes), je réfléchisssais à cela en le soumettant aux neurones des praticiens.

    Voilà, voilà !
    Hem ! J'ai souvent l'impression qu'on ne regarde que moi ! Hem !

  4. #4
    Membre habitué Avatar de danbo52
    Profil pro
    Inscrit en
    Octobre 2009
    Messages
    98
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2009
    Messages : 98
    Points : 125
    Points
    125
    Par défaut ok quand même
    Je pars tout de même sur ton principe, mais j'me creuse la tête, j'ai l'obsession de la réduction de mon nombre de lignes.
    Je vais peut-être me construire une tiote fonction !
    Hem ! J'ai souvent l'impression qu'on ne regarde que moi ! Hem !

  5. #5
    Membre émérite Avatar de Fvandermeulen
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Juillet 2007
    Messages
    1 869
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : Belgique

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Juillet 2007
    Messages : 1 869
    Points : 2 662
    Points
    2 662
    Par défaut Si tu trouve...
    OK, si tu trouve, n'oublie pas de poster ta solution, ça m'intéresse...
    A+
    N'oubliez pas le si votre problème est solutionné.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [XL-2010] VBA : Recopier une plage filtrée dans une Listbox de formulaire
    Par Pipeti dans le forum Macros et VBA Excel
    Réponses: 6
    Dernier message: 09/06/2015, 18h36
  2. Clique droit dans une ListBox
    Par LoicH dans le forum C++Builder
    Réponses: 5
    Dernier message: 07/02/2005, 22h50
  3. [debutant] supprimer elements dans une listbox
    Par F.F. dans le forum C++Builder
    Réponses: 8
    Dernier message: 02/07/2004, 11h38
  4. [WIN32]tabulation dans une listbox
    Par stoluup dans le forum MFC
    Réponses: 2
    Dernier message: 09/06/2004, 10h11
  5. Icône a coté du texte dans une ListBox
    Par joce3000 dans le forum C++Builder
    Réponses: 6
    Dernier message: 05/12/2003, 02h25

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo