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 :

Insertion données dans Listbox multi colonnes


Sujet :

Macros et VBA Excel

  1. #1
    Candidat au Club
    Profil pro
    Inscrit en
    Août 2009
    Messages
    6
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2009
    Messages : 6
    Points : 2
    Points
    2
    Par défaut Insertion données dans Listbox multi colonnes
    Version excel : 2003


    Bonjour,

    J'ai deux listbox : 1 et 2, et ce que je cherche à faire est que quand je double clique sur un élément de Listbox1 (liste d'intitulés de prestations), le libellé de la prestation choisie ainsi que son prix s'affiche dans la Listbox2.

    J'ai paramètré ma listbox 2 ainsi : columncount=2. Est ce suffisant?

    de plus, j'ai un tableau de correspondance prix/prestations dans la feuille 2 demon classeur, sur la plage I2;J19 (I=prestations, J=prix).

    Voici mon code :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    Private Sub ListBox1_DblClick(ByVal Cancel As MSForms.ReturnBoolean)
        Dim strPresta As String
     
        ListBox2.Clear
        strPresta = ListBox1.Value
     
        Dim I As Integer
        For I = 2 To 19
            If Worksheets("Feuil2").Cells(I, 5).Value = strPresta Then
            ListBox2.Column(0, 0) = strPresta
            ListBox2.Column(0, 1) = Worksheets("Feuil2").Cells(I, 6).Value
        End If
        Next I
     
    End Sub
    Lorsque je l'exécute, on m'indique une erreur sur Column.Index.

    Je suis bloquée et j'espère que vous pourrez m'aider!

    Merci d'avance!

  2. #2
    Membre chevronné Avatar de Krovax
    Profil pro
    Inscrit en
    Juillet 2008
    Messages
    1 888
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : France

    Informations forums :
    Inscription : Juillet 2008
    Messages : 1 888
    Points : 2 168
    Points
    2 168
    Par défaut
    Bonjour
    Première chose utilise les balise code. Il y a un message sur le forum le tout premier intitulé Bienvenue sur le forum - Aide à l'utilisation des boutons
    Tu devrais le lire (lit aussi le deusi-ème message juste en dessous pour savoir comment préciser la version d'excel)

    Ensuite regarde le tuto sur les liste box. Tu n'a aucun item dans ta liste box 2 tu doit commencer par un aditem
    et on utilise pas column mais list

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    Private Sub ListBox1_DblClick(ByVal Cancel As MSForms.ReturnBoolean)
    Dim strPresta As String
    ListBox2.Clear
    strPresta = ListBox1.Value
    ListBox2.ColumnCount = 2
    Dim I As Integer
    For I = 2 To 19
    If Worksheets("Feuil2").Cells(I, 1).Value = strPresta Then
    ListBox2.AddItem strPresta
    ListBox2.List(0, 1) = Worksheets("Feuil2").Cells(I, 2).Value
    End If
    Next I
    End Sub
    « Il n'y a pas de recette miracle qui permet aux gens d’écrire des programmes corrects sans avoir à réfléchir. Il faut apprendre aux gens comment réfléchir »

  3. #3
    Candidat au Club
    Profil pro
    Inscrit en
    Août 2009
    Messages
    6
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2009
    Messages : 6
    Points : 2
    Points
    2
    Par défaut
    Merci beaucoup pour ton aide! (et tes conseils...)

    Ta solution me permet de ne plus avoir de code erreur.

    Cependant, j'ai bien mes libellés de prestations dans la 1ère colonne de ma listbox2 mais rien dans la deuxième!

    De plus, il faut à chaque fois que j'ajoute un élément sur une ligne différente de ma listbox2. Je suppose qu'il faut que je rajoute une boucle for pour ça mais à l'intérieur ou à l'extérieur de ma boucle existante?

    je cherche de mon côté mais si quelqu'un trouve une solution avant, n'hésitez pas!

  4. #4
    Membre chevronné Avatar de Krovax
    Profil pro
    Inscrit en
    Juillet 2008
    Messages
    1 888
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : France

    Informations forums :
    Inscription : Juillet 2008
    Messages : 1 888
    Points : 2 168
    Points
    2 168
    Par défaut
    Chez moi le code fonctionne sans problème met une pause au début et essaye en mode pas a pas avec des espion pour voir si tu as la bonne valeur dans la cellule Worksheets("Feuil2").Cells(I, 2).Value (que tu as le bon i)

    Et surtout que tu as bien remplacé le 2 par un 6 sur mon teste j'avais rempli la dolonne B pas la F pareille pour le test if. mais je suis persuadé que tu l'avais vu car tu n'as pas simplement copier le code que tu l'as lut, analysé a la lumière du tuto et ensuite seulement utilisé

    Pour la deuxième question iul te suffit de ne pas vider liste 2 et de remplacer le 0 par ListBox1.ListCount - 1
    Mais regarde le tutos tu devrais y arriver
    « Il n'y a pas de recette miracle qui permet aux gens d’écrire des programmes corrects sans avoir à réfléchir. Il faut apprendre aux gens comment réfléchir »

  5. #5
    Candidat au Club
    Profil pro
    Inscrit en
    Août 2009
    Messages
    6
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2009
    Messages : 6
    Points : 2
    Points
    2
    Par défaut
    C'est bon, ça marche nickel, merci encore de ton aide!

    Au final ça donne ça :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    Private Sub ListBox1_DblClick(ByVal Cancel As MSForms.ReturnBoolean)
        Dim strPresta As String
        Dim j As Integer
     
            strPresta = ListBox1.Value
            ListBox2.ColumnCount = 2
     
    For j = 2 To 19
    If Worksheets("Feuil2").Cells(j, 1).Value = strPresta Then
    ListBox2.AddItem strPresta
    ListBox2.List(ListBox2.ListCount - 1, 1) = Worksheets("Feuil2").Cells(j, 6).Value
    End If
    Next j
    End Sub

  6. #6
    Candidat au Club
    Profil pro
    Inscrit en
    Août 2009
    Messages
    6
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2009
    Messages : 6
    Points : 2
    Points
    2
    Par défaut
    En fait ça ne marche pas si bien que ça, car lorsque je choisis une prestation, la correspondance ne se fait pas bien, et le prix qui s'affiche dans la listbox2 n'est pas le bon!

    D'où cela peut il venir?

  7. #7
    Membre chevronné Avatar de Krovax
    Profil pro
    Inscrit en
    Juillet 2008
    Messages
    1 888
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : France

    Informations forums :
    Inscription : Juillet 2008
    Messages : 1 888
    Points : 2 168
    Points
    2 168
    Par défaut
    Essaye le mode pas a pas (une pause au début puis touche F8) regarde la valeur de j au moment ou il trouve, et la valeur de la cellule corespondante

    Je pense que tu devrais mettre
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    ListBox2.ColumnCount = 2
    dans l'initialize de ton userform pour le pas le répéter a chaque fois
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    Private Sub UserForm_Initialize()
    ListBox2.ColumnCount = 2
    end sub
    « Il n'y a pas de recette miracle qui permet aux gens d’écrire des programmes corrects sans avoir à réfléchir. Il faut apprendre aux gens comment réfléchir »

  8. #8
    Candidat au Club
    Profil pro
    Inscrit en
    Août 2009
    Messages
    6
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2009
    Messages : 6
    Points : 2
    Points
    2
    Par défaut
    Je n'ai pas tapé mon code dans un userform mais dans la feuille liée à ma feuille excel

Discussions similaires

  1. Afficher les TOP 10 dans une ListBox multi colonnes
    Par Hadi2015 dans le forum Macros et VBA Excel
    Réponses: 20
    Dernier message: 03/03/2015, 22h49
  2. listbox multi-colonnes & multiselect - Récupération données
    Par shadjire dans le forum Macros et VBA Excel
    Réponses: 10
    Dernier message: 02/07/2014, 14h59
  3. [XL-2010] Insertion données dans colonne ListBox
    Par fidecourt dans le forum Macros et VBA Excel
    Réponses: 4
    Dernier message: 30/12/2010, 14h34
  4. [VB6] comment saisir l'entête Listbox (multi colonnes)
    Par oumarsaw dans le forum VB 6 et antérieur
    Réponses: 7
    Dernier message: 07/04/2006, 16h21
  5. Aide userform( insertion données dans classeur)
    Par zouille dans le forum Macros et VBA Excel
    Réponses: 23
    Dernier message: 19/12/2005, 09h16

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