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 :

Problème ListBox VBA [XL-2003]


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre chevronné Avatar de jackborogar
    Homme Profil pro
    Etudiant Ingénierie Financière
    Inscrit en
    Avril 2012
    Messages
    290
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Etudiant Ingénierie Financière
    Secteur : Finance

    Informations forums :
    Inscription : Avril 2012
    Messages : 290
    Par défaut Problème ListBox VBA
    Bonjour,

    Je suis devant un problème depuis quelques minutes et je ne comprends pas d'où peux venir l'erreur. J'ai testé plusieurs choses...rien à faire!

    Tout d'abord dans mon userform j'ai deux listbox (ListBox1 & ListBox2).
    J'ai bien un multiselect "fmmultiselectmulti" pour chacun.
    Je rempli mon premier listbox.
    Un bouton entre les deux permets de de prendre la valeur du listbox1 pour l'ajouter dans le listbox2 en le supprimant dans mon listbox1.

    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
    If ListBox1.ListIndex = -1 Then Exit Sub
     
       ' For i = 1 To ListBox1.ListCount - 1
     
           ' If ListBox1.Selected(i) = True Then
            MsgBox (ListBox1.Text)
            ListBox2.AddItem ListBox1.Text
            'ListBox2.AddItem ListBox1.List(i)
            ListBox1.RemoveItem ListBox1.ListIndex
     
         '   End If
     
        'Next i
     
    End Sub
    Le soucis est le suivant: Dans mon msgbox pour testé le code, il s'affiche rien du tout. Par contre on s'aperçoit que dans mon listbox2 un ajout a été fait sans valeur (ce qui valide mon msgbox) puisqu'on peut le sélectionner.

    Pourquoi n'affiche t-il pas la valeur de mon listbox1 sélectionné?

    Cordialement,

  2. #2
    Membre chevronné Avatar de jackborogar
    Homme Profil pro
    Etudiant Ingénierie Financière
    Inscrit en
    Avril 2012
    Messages
    290
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Etudiant Ingénierie Financière
    Secteur : Finance

    Informations forums :
    Inscription : Avril 2012
    Messages : 290
    Par défaut
    J'ai trouvé mon erreur. Le code proposé précédemment fonctionne mais que pour un mode "Single" (selection un choix par un choix). Pour avoir une sélection en "Multi" et avoir un code qui fonctionne :

    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
    im i As Integer
     
    If ListBox1.ListIndex = -1 Then Exit Sub
     
    For i = ListBox1.ListCount - 1 To 0 Step -1
     
    If ListBox1.Selected(i) = True Then
     
    ListBox2.AddItem ListBox1.List(i)
     
    ListBox1.RemoveItem i
     
    End If
     
    Next i

    Cdt,

  3. #3
    Inactif  

    Homme Profil pro
    cuisiniste
    Inscrit en
    Avril 2009
    Messages
    15 374
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : cuisiniste
    Secteur : Bâtiment

    Informations forums :
    Inscription : Avril 2009
    Messages : 15 374
    Billets dans le blog
    8
    Par défaut heu
    bonjour

    Une solution comme ca vite fait testée avec 2 listbox(listbox1,listbox2)
    Ne gere pas le multiselect !!!

    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
     
     
     
    Private Sub ListBox1_Click()
     Dim tablo()
     ligne = ListBox1.ListIndex
    ListBox2.AddItem ListBox1
    For i = 0 To ListBox1.ListCount - 1
    If i = ligne Then
    Else
    ReDim Preserve tablo(i)
     tablo(i) = ListBox1.List(i)
    End If
    Next
    ListBox1.Clear
    For Each elem In tablo
    If elem <> "" Then ListBox1.AddItem elem
    Next
    End Sub
    Je regarde pour le multiselect

    au plaisir
    mes fichiers dans les contributions:
    mail avec CDO en vba et mail avec CDO en vbs dans un HTA
    survol des bouton dans userform
    prendre un cliché d'un range

    si ton problème est résolu n'oublie pas de pointer : : ça peut servir aux autres
    et n'oublie pas de voter

  4. #4
    Inactif  

    Homme Profil pro
    cuisiniste
    Inscrit en
    Avril 2009
    Messages
    15 374
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : cuisiniste
    Secteur : Bâtiment

    Informations forums :
    Inscription : Avril 2009
    Messages : 15 374
    Billets dans le blog
    8
    Par défaut re
    rebonjour

    Et voila une version qui gère le multiselectedextented
    Ce que tu souhaite selon moi
    Pour le gérer on va utiliser l'évènement mouseup de la listbox
    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
    Private Sub ListBox1_MouseUp(ByVal Button As Integer, ByVal Shift As Integer, ByVal X As Single, ByVal Y As Single)
        Dim elements()
     
        For i = 0 To ListBox1.ListCount - 1
            If ListBox1.Selected(i) Then
                ListBox2.AddItem ListBox1.List(i)
            Else
     
                ReDim Preserve elements(j)
                elements(j) = ListBox1.List(i)
            j = j + 1
            End If
        Next i
        ListBox1.Clear
        ListBox1.List = elements
    End Sub
    au plaisir
    mes fichiers dans les contributions:
    mail avec CDO en vba et mail avec CDO en vbs dans un HTA
    survol des bouton dans userform
    prendre un cliché d'un range

    si ton problème est résolu n'oublie pas de pointer : : ça peut servir aux autres
    et n'oublie pas de voter

  5. #5
    Membre chevronné Avatar de jackborogar
    Homme Profil pro
    Etudiant Ingénierie Financière
    Inscrit en
    Avril 2012
    Messages
    290
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Etudiant Ingénierie Financière
    Secteur : Finance

    Informations forums :
    Inscription : Avril 2012
    Messages : 290
    Par défaut
    Je viens seulement de voir ton EDIT !! J'ai pas tout compris, je vais donc rechercher et tater sur mon code.

    Merci pour ton aide précieux,

    Cdt,

  6. #6
    Inactif  

    Homme Profil pro
    cuisiniste
    Inscrit en
    Avril 2009
    Messages
    15 374
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : cuisiniste
    Secteur : Bâtiment

    Informations forums :
    Inscription : Avril 2009
    Messages : 15 374
    Billets dans le blog
    8
    Par défaut re
    bonsoir
    le dernier petit bout de code utilise le relâchement de la souris.
    La sélection et continu grâce au mode de la listebox(extented).
    Dès que tu lâche la souris une boucle se met en route sur la variable "I".
    Si la ligne de la listbox est sélectionné on l'ajoute dans la listbox2, si il ne l'ai pas on ajoute le mot dans la variable tableau
    Des que la boucle est passée a la dernière ligne de la listbox1 celle ci est vidée et remplie avec le tableau qui comporte tout les éléments sauf ce qui ont été sélectionnées


    Pour ne pas oublier ,dans le activate de l'userform tu peut mettre
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    listbox1.multiselect=2 'ce qui corespond a "fmMultiSelectExtented"
    tout simplement car j'ai essayé ta facon est j'ai une erreur de gestion control
    au plaisir
    mes fichiers dans les contributions:
    mail avec CDO en vba et mail avec CDO en vbs dans un HTA
    survol des bouton dans userform
    prendre un cliché d'un range

    si ton problème est résolu n'oublie pas de pointer : : ça peut servir aux autres
    et n'oublie pas de voter

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

Discussions similaires

  1. [XL-2007] Problème récupèration de données dans listBox VBA
    Par paulob dans le forum Excel
    Réponses: 6
    Dernier message: 07/05/2015, 16h50
  2. Problème listbox vba
    Par fabrice2205 dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 11/06/2008, 19h39
  3. [VBA-E]Problème Listbox et path
    Par captaine93 dans le forum Macros et VBA Excel
    Réponses: 10
    Dernier message: 10/11/2006, 11h00
  4. Problème de VBA de passage de 2000 à 2002
    Par Oberown dans le forum Access
    Réponses: 9
    Dernier message: 10/05/2006, 14h51
  5. problème avec VBA
    Par Delph dans le forum Langage
    Réponses: 2
    Dernier message: 19/08/2002, 13h15

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