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 :

Extraire éléments d'une listbox


Sujet :

Macros et VBA Excel

  1. #1
    Membre confirmé
    Homme Profil pro
    Inscrit en
    Avril 2011
    Messages
    123
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Avril 2011
    Messages : 123
    Par défaut Extraire éléments d'une listbox
    Bonjour à tous,
    j'aurai besoin d'aide pour mon programme vba ...

    mon soucis :
    j'ai une listbox qui se remplit par l'intermédiaire d'une combobox. Le problème est que je voudrais extraire toute les informations de la listbox dans la feuille excel et sans selection dans la listbox ...


    Peut-être une fonction prédéfinie de vba permettrai de faire cela ?

    Merci d'avance pour votre aide

  2. #2
    Expert confirmé
    Homme Profil pro
    Inscrit en
    Août 2010
    Messages
    3 453
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Août 2010
    Messages : 3 453
    Par défaut
    Bonjour,

    Regarde si ça convient :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    'de A1 à Ax
    Range(Cells(1, 1), Cells(ListBox1.ListCount, 1)) = ListBox1.List
    Hervé.

  3. #3
    Membre confirmé
    Homme Profil pro
    Inscrit en
    Avril 2011
    Messages
    123
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Avril 2011
    Messages : 123
    Par défaut
    Bonsoir, et merci pour ta réponse !
    donc j'ai essayé et ça copie bien le contenu de la listbox mais est -il possible de tout insérer dans la cellule active ?

    Et j'ai une dernière question concernant la listbox qui n'a aucun rapport avec l'extraction des données... Je me suis rendu compte que l’utilisateur pouvait faire des doublons dans la listbox il y a-t-il un moyen de supprimer les doublons et d'afficher une msgbox pour informer l'utilisateur que l'élément existe déjà ?

    Merci par avant pour ton aide Theze !

  4. #4
    Membre extrêmement actif
    Avatar de NVCfrm
    Homme Profil pro
    Administrateur Système/Réseaux - Developpeur - Consultant
    Inscrit en
    Décembre 2012
    Messages
    1 037
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Autre

    Informations professionnelles :
    Activité : Administrateur Système/Réseaux - Developpeur - Consultant
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Décembre 2012
    Messages : 1 037
    Billets dans le blog
    5
    Par défaut
    Bonsoir ric009.
    Ta listbox comme tu l'as dit se remplit avec une combobox je suppose qui ne contient pas une liste.
    Dans ce cas à chaque ajout d'élément nouveau, ajoute un item à combobox sur la valeur texte dans une condition évaluant Combobox.ListIndex>=0
    Dans la condition vrai ne pas effectuer d'ajout de liste à combobox ou listbox et dans la condition fause ajouter un item.

    Le plus simple serait dans un gestionnaire d'erreur (on error resume next) affecter la propriété text de la listbox.text par la valeur combobox.text.
    Si erreur le texte n'existe pas dans la listbox, effacer l'erreur et poursuivre.
    Si pas d'erreur le texte existe.

    Cordialement.

  5. #5
    Membre confirmé
    Homme Profil pro
    Inscrit en
    Avril 2011
    Messages
    123
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Avril 2011
    Messages : 123
    Par défaut
    bonsoir NVCfrm,

    je ne comprends pas trop l'intérêt de ta listindex de la combobox ... je pense que tu n'as peut être pas compris le fonctionnement de ma listbox ... je te joins donc le fichier excel pour un échange plus claire.
    Donc je cherche juste à extraire les informations de la listbox dans la cellule active et dans le cas où l'utilisateur ajoute un doublon de le prévenir par un msgbox et de supprimer le dernier ajout...

    Cordialement.
    Ric009
    Fichiers attachés Fichiers attachés

  6. #6
    Membre extrêmement actif
    Avatar de NVCfrm
    Homme Profil pro
    Administrateur Système/Réseaux - Developpeur - Consultant
    Inscrit en
    Décembre 2012
    Messages
    1 037
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Autre

    Informations professionnelles :
    Activité : Administrateur Système/Réseaux - Developpeur - Consultant
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Décembre 2012
    Messages : 1 037
    Billets dans le blog
    5
    Par défaut
    salut rico!

    très simple essayes ceci:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    On Error Resume Next
    If ListBox1.ListCount Then
        ListBox1.Value = ComboBox1.Text
        If Err Then
            Err.Clear
            ListBox1.AddItem (ComboBox1)
            ListBox1.Value = ListBox1.ListCount - 1
        Else
            MsgBox "Ce nom a déjà été ajouté à la liste!", vbExclamation, "Tentative de doublon"
        End If
    Else
        ListBox1.AddItem (ComboBox1)
        ListBox1.Value = ListBox1.ListCount - 1
    End If
    cordialement

  7. #7
    Membre confirmé
    Homme Profil pro
    Inscrit en
    Avril 2011
    Messages
    123
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Avril 2011
    Messages : 123
    Par défaut
    tout d'abord merci pour ta réponse !
    mais j'ai mis le code à la suite de mon code du bouton ajouter ("+") et aucun résultat seulement la msgbox s'affiche.. (Ce nom a déjà été ajouté à la liste!) j'ai par la suite essayé l'évènement erreur mais aucun résultat ... peut être que je m'y prends mal ?
    et j'aurai une question par rapport à ton code ... que signifie la première condition, il ne manque pas un élément ... ?

    merci par avance pour ton aide !

  8. #8
    Membre extrêmement actif
    Avatar de NVCfrm
    Homme Profil pro
    Administrateur Système/Réseaux - Developpeur - Consultant
    Inscrit en
    Décembre 2012
    Messages
    1 037
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Autre

    Informations professionnelles :
    Activité : Administrateur Système/Réseaux - Developpeur - Consultant
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Décembre 2012
    Messages : 1 037
    Billets dans le blog
    5
    Par défaut
    Bonsoir.

    Qu'est ce que le Bouton + est censé faire?

    je crois que je ne saisis pas ce que tu veux exactement.

    je ne comprends pas trop l'intérêt de ta listindex de la combobox ... je pense que tu n'as peut être pas compris le fonctionnement de ma listbox ... je te joins donc le fichier excel pour un échange plus claire.
    Donc je cherche juste à extraire les informations de la listbox dans la cellule active et dans le cas où l'utilisateur ajoute un doublon de le prévenir par un msgbox et de supprimer le dernier ajout...
    Dans le lien de fichier , il y avait ce code que j'ai extrait dans un Bloc note avant de supprimer définitivement le fichier.

    Voici le texte de ton code qui semble indicatif de ce que tu veux faire avec ton bouton.

    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
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    Private Sub CommandButton1_Click()
     
    End Sub
     
    Private Sub CommandButton2_Click()
     
    Dim numero_de_ligne As Integer
    Dim nom As String
     
     
    numero_de_ligne = ComboBox1.ListIndex
     
    If numero_de_ligne > -1 Then
        nom = ComboBox1.List(numero_de_ligne)
        ListBox1.AddItem (nom)
     
    ElseIf ComboBox1.Value <> "" Then
        nom = ComboBox1.Value
        ListBox1.AddItem (nom)
     
    End If
     
     
    End Sub
     
    Private Sub UserForm_Initialize()
     
    Feuil2.Activate
    Range("A2").Select
    While ActiveCell.Value <> ""
    ComboBox1.AddItem (ActiveCell.Value)
    ActiveCell.Offset(1, 0).Select
    Wend
     
    End Sub
    je cites:
    mon soucis :
    j'ai une listbox qui se remplit par l'intermédiaire d'une combobox. Le problème est que je voudrais extraire toute les informations de la listbox dans la feuille excel et sans selection dans la listbox
    qui a été bien repondu par Theze.

    et ta réponse à ce dernier:

    donc j'ai essayé et ça copie bien le contenu de la listbox mais est -il possible de tout insérer dans la cellule active ?

    Et j'ai une dernière question concernant la listbox qui n'a aucun rapport avec l'extraction des données... Je me suis rendu compte que l’utilisateur pouvait faire des doublons dans la listbox il y a-t-il un moyen de supprimer les doublons et d'afficher une msgbox pour informer l'utilisateur que l'élément existe déjà ?
    Je viens de voir...voudrais tu concaténer? ce passage n'est pas très explicite.

    mais est -il possible de tout insérer dans la cellule active ?
    Tout? toute la liste? Il faut explicitement dire convertir le tableau en un texte séparé par ceci ou cela.
    je vois également à présent que ton code pour charger la combobox se limite à activecell dans une boucle conditionnelle.
    Je me reserves de donner une réponse quelconque avant une clarification compréhensible pour moi.

  9. #9
    Membre confirmé
    Homme Profil pro
    Inscrit en
    Avril 2011
    Messages
    123
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Avril 2011
    Messages : 123
    Par défaut
    je veux juste :
    -extraire les informations de la listbox dans la cellule active sous forme de texte
    -et lorsque l'utilisateur ajoute une couleur à la listbox je veux que si la couleur est déjà présente dans la listbox qu'il supprime le dernier ajout et informe l'utilisateur..

    comprends-tu ce que j'essai de faire ...?

    cordialement
    ric009

  10. #10
    Expert confirmé
    Homme Profil pro
    Inscrit en
    Août 2010
    Messages
    3 453
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Août 2010
    Messages : 3 453
    Par défaut
    Bonjour,

    Remplace tout le code de la Form par celui-ci :
    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
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
     
    Private Sub CommandButton2_Click()
     
        Dim I As Integer
     
        If ComboBox1.ListIndex <> -1 Then
     
            For I = 0 To ListBox1.ListCount - 1
     
                If ListBox1.List(I) = ComboBox1.Text Then
     
                    MsgBox "le nom '" & ComboBox1.Text & "' a déjà ajouté à la liste !"
                    Exit Sub
     
                End If
     
            Next I
     
            ListBox1.AddItem (ComboBox1.Text)
     
        End If
     
    End Sub
     
    Private Sub UserForm_Initialize()
     
        'rempli le Combo avec la liste de A2 à Ax
        With Worksheets("Feuil2")
     
            ComboBox1.RowSource = .Range(.Cells(2, 1), .Cells(.Rows.Count, 1).End(xlUp)).Address
     
        End With
     
    End Sub
    Hervé.

  11. #11
    Membre confirmé
    Homme Profil pro
    Inscrit en
    Avril 2011
    Messages
    123
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Avril 2011
    Messages : 123
    Par défaut
    merci pour votre aide ! cela fonctionne très bien !

    juste petit soucis ... je n'arrive pas à faire en sorte que listbox1.list fasse apparaître tous les éléments de la listbox dans la cellule active... peut être une option existante de la listbox .. une idée ?

    cordialement.
    ric009

  12. #12
    Expert confirmé
    Homme Profil pro
    Inscrit en
    Août 2010
    Messages
    3 453
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Août 2010
    Messages : 3 453
    Par défaut
    Bonjour,

    En supposant que l'inscription dans la cellule active se fasse sur l'évènement Click d'un bouton (ici, CommandButton3) :
    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
    16
    17
     
    Private Sub CommandButton3_Click()
     
        Dim Texte As String
        Dim I As Integer
     
        'concatène les mots avec un retour à la ligne
        For I = 0 To ListBox1.ListCount - 1
     
            Texte = Texte & ListBox1.List(I) & vbCrLf
     
        Next I
     
        'inscit dans la cellule active en supprimant le dernier retour à la ligne
        ActiveCell = Left(Texte, Len(Texte) - 1)
     
    End Sub
    Hervé.

  13. #13
    Membre confirmé
    Homme Profil pro
    Inscrit en
    Avril 2011
    Messages
    123
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Avril 2011
    Messages : 123
    Par défaut
    Merci Hervé t'es un maître du VBA !

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

Discussions similaires

  1. Extraire des éléments d'une listbox
    Par nats76 dans le forum Général JavaScript
    Réponses: 0
    Dernier message: 09/11/2012, 11h45
  2. Débutant : extraire des éléments d'une Listbox
    Par DUDE007 dans le forum Interfaces Graphiques
    Réponses: 2
    Dernier message: 05/03/2011, 16h53
  3. Commentaire au clic d'un élément d'une listbox
    Par hijodelanoche dans le forum Composants VCL
    Réponses: 7
    Dernier message: 02/12/2005, 18h46
  4. [Débutant] regroupement d'éléments dans une listBox
    Par fast&furious dans le forum Access
    Réponses: 2
    Dernier message: 15/10/2005, 16h05
  5. [VB.NET] Enregistrement des éléments d'une listBox
    Par Hoegaarden dans le forum Windows Forms
    Réponses: 9
    Dernier message: 18/05/2004, 15h48

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