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

VB 6 et antérieur Discussion :

Ajouter un élément avec 2 listes VB6


Sujet :

VB 6 et antérieur

  1. #1
    Membre à l'essai
    Profil pro
    Inscrit en
    Avril 2008
    Messages
    18
    Détails du profil
    Informations personnelles :
    Localisation : France, Seine Maritime (Haute Normandie)

    Informations forums :
    Inscription : Avril 2008
    Messages : 18
    Points : 15
    Points
    15
    Par défaut Ajouter un élément avec 2 listes VB6
    Bonjour.
    J'ai un petit problème quand je fais un passage d'éléments entre deux listes.
    Je peux le faire seulement dans l'ordre de la liste.
    Quand je sélectione le deuxième élément de la liste il m'efface le premier élément et me l'ajoute 2 fois.
    Si je veux selectionner le 3ème élément, il m'effacera les 2 premiers éléments et me l'ajoutera 3 fois ... et ainsi de suite.

    Voilà mon code :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
    Private Sub ComAddAct_Click()
     
    For i = 0 To LstAcEx.ListCount - 1
    If LstAcEx.ListIndex >= 0 Then
        LstAjActeur.AddItem LstAcEx.Text
        LstAcEx.RemoveItem LstAjActeur.ListIndex = i
    End If
    Next
     
    End Sub
    Je ne vois pas ou est le problème. Si quelqu'un peur m'aider s'il vous plait.
    Merci d'avance de vos réponses.

  2. #2
    Membre expert Avatar de OhMonBato
    Homme Profil pro
    Inscrit en
    Mars 2007
    Messages
    2 660
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Morbihan (Bretagne)

    Informations professionnelles :
    Secteur : Industrie

    Informations forums :
    Inscription : Mars 2007
    Messages : 2 660
    Points : 3 685
    Points
    3 685
    Par défaut
    C'est ca que tu veux faire ?

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    If List1.ListIndex >= 0 Then
        List2.AddItem List1.Text
        List1.RemoveItem List1.ListIndex
    End If
    Pour VB6 : N'oubliez pas d'aller voir la FAQ et les Tutoriels
    Vous trouvez une reponse particulierement utile ? Votez pour !

  3. #3
    Membre à l'essai
    Profil pro
    Inscrit en
    Avril 2008
    Messages
    18
    Détails du profil
    Informations personnelles :
    Localisation : France, Seine Maritime (Haute Normandie)

    Informations forums :
    Inscription : Avril 2008
    Messages : 18
    Points : 15
    Points
    15
    Par défaut
    Oui c'est bien ca que je cherche a faire. Mais ca ne marche pas. le compilateur me dit qu'un argument ou appel de procédure est incorrect.
    Je crois que dérriere la propriété ListIndex, il attend un indice.

  4. #4
    Inactif  

    Profil pro
    Inscrit en
    Juillet 2007
    Messages
    4 555
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2007
    Messages : 4 555
    Points : 5 537
    Points
    5 537
    Par défaut
    Bonjour,

    Pas vraiment certains d'avoir compris tout (ça reste assez nébuleux ...)


    Mais cela ne fait rien :

    Voilà un exemple de ce type de manoeuvre.
    A toi de l'adapter à ton mystérieux mécanisme

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    Private Sub Command1_Click()
      If List1.ListIndex < 1 Then Exit Sub 'puisque tu dis vouloir commencer au 2ème !
        For i = 1 To List1.ListIndex + 1
          List2.AddItem List1.List(List1.ListIndex - 1)
        Next
        For i = 0 To List1.ListIndex
          List1.RemoveItem 0
        Next
    End Sub
    Edit :

    Qui peut s'exprimer également ainsi :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    Private Sub Command1_Click()
      If List1.ListIndex < 1 Then Exit Sub
        For I = 1 To List1.ListIndex + 1
          List2.AddItem List1.List(List1.ListIndex - 1)
          If I > List1.ListIndex Then List1.RemoveItem 0
        Next
     End Sub
    Mais celà t'oblige à bien te concentrer ...

  5. #5
    Membre à l'essai
    Profil pro
    Inscrit en
    Avril 2008
    Messages
    18
    Détails du profil
    Informations personnelles :
    Localisation : France, Seine Maritime (Haute Normandie)

    Informations forums :
    Inscription : Avril 2008
    Messages : 18
    Points : 15
    Points
    15
    Par défaut
    En fait il s'agit d'ajouter l'élément sélectionner dans la liste, dans une autre liste.
    Mais ce que tu m'as passé ucfoutu, ca reviend la meme chose de ce que j'ai marqué. Ton code fait la même erreur que moi. L'élément ajouté y est plusieur fois selon l'emplacement dans l'autre liste. Je vais essayer de réfléchir pourquoi ca fonctionne pas

  6. #6
    Inactif  

    Profil pro
    Inscrit en
    Juillet 2007
    Messages
    4 555
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2007
    Messages : 4 555
    Points : 5 537
    Points
    5 537
    Par défaut
    Ben...

    J'ai fait celà car tu as écrit ceci :

    Si je veux selectionner le 3ème élément, il m'effacera les 2 premiers éléments et me l'ajoutera 3 fois ... et ainsi de suite.
    Tu vois bien que tu n'était pas suffisamment précis !

    Recommence ton exposé de façon claire et très précise (au besoin avec 2 simulations d'exemple)

    Le reste prendra à peine 10 secondes ...

    On ne va pas jouer aux devinettes longtemps, hein ?

    Je ne le fais ici qu'une fois (juste pour le cas où ...) mais ne continuerai que si tout est exprimé sans laisser le moindre doute, c'est sûr :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    Private Sub Command1_Click()
      If List1.ListIndex < 1 Then Exit Sub
          List2.AddItem List1.List(List1.ListIndex - 1)
          For i = 0 To List1.ListIndex
             List1.RemoveItem 0
          Next
    End Sub

  7. #7
    Membre à l'essai
    Profil pro
    Inscrit en
    Avril 2008
    Messages
    18
    Détails du profil
    Informations personnelles :
    Localisation : France, Seine Maritime (Haute Normandie)

    Informations forums :
    Inscription : Avril 2008
    Messages : 18
    Points : 15
    Points
    15
    Par défaut
    C'était un exemple d''erreur, moi je voulais que si je sélectionne le 3 ème élément , alors cet élément s'ajoute dans une liste et qu'elle se retire de la liste d'origine.

    Je prend mon exemple : J'ajoute des acteurs dans une liste pour un film donné. Dans cette interface d'ajout, j'ai une liste existante d'acteur. (L'ajout d'acteur dans la base de donnée se fait via un autre formulaire qui grace a lui charge tous les acteurs dans la liste d'acteurs existants). J'ai 2 bouton : Le premier permet d'ajouter un acteur (et dans ce cas la il retire l'acteur de la liste existante).
    Le deuxième permet de retirer l'acteur en cas d'erreur, c'est l'inverse koi

  8. #8
    Inactif  

    Profil pro
    Inscrit en
    Juillet 2007
    Messages
    4 555
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2007
    Messages : 4 555
    Points : 5 537
    Points
    5 537
    Par défaut
    Il me semble que les nombreux exemples déjà donnés te permettent de faire face à ce que tu veux...
    Te reste à les comprendre, les analyser ... et à en faire ce que tu veux..
    N'attends pas de moi une soupe toute cuite, prête à être mangée sans la moindre réflexion...

    Bonne chance

    Edit :

    en voilà un dernier... el ultimo... the last ... et là, ma foi, si tu ne piges toujours pas comment fonctionnent les choses ===>> Bye ...

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    Private Sub Command1_Click()
          If List1.ListIndex < 1 Then Exit Sub
          List2.AddItem List1.List(List1.ListIndex)
          List1.RemoveItem List1.ListIndex
    End Sub

  9. #9
    Membre à l'essai
    Profil pro
    Inscrit en
    Avril 2008
    Messages
    18
    Détails du profil
    Informations personnelles :
    Localisation : France, Seine Maritime (Haute Normandie)

    Informations forums :
    Inscription : Avril 2008
    Messages : 18
    Points : 15
    Points
    15
    Par défaut
    Je comprend la syntaxe et le principe du traitement. C'est juste que je ne comprend pas pourquoi ca ne marche pas correctement. Merci comme même à toi de m'avoir aidé.

  10. #10
    Membre expert Avatar de OhMonBato
    Homme Profil pro
    Inscrit en
    Mars 2007
    Messages
    2 660
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Morbihan (Bretagne)

    Informations professionnelles :
    Secteur : Industrie

    Informations forums :
    Inscription : Mars 2007
    Messages : 2 660
    Points : 3 685
    Points
    3 685
    Par défaut
    As tu essaye un nouveau projet avec 2 listes toutes betes (tu mets 1,2,3,4,5 dans la premiere, a,b,c,d,e dans la deuxieme) et un bouton de commande et le code que je t'ai donne ?
    Est ce que ca marche (oui/non) ?
    Comme la reponse devrait etre oui, il te suffit de changer le nom des listes pour coller a ton code, point barre.
    Pour VB6 : N'oubliez pas d'aller voir la FAQ et les Tutoriels
    Vous trouvez une reponse particulierement utile ? Votez pour !

  11. #11
    Expert confirmé
    Avatar de zazaraignée
    Profil pro
    Étudiant
    Inscrit en
    Février 2004
    Messages
    3 174
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Février 2004
    Messages : 3 174
    Points : 4 085
    Points
    4 085
    Par défaut
    Si tu utilises des comboBox et que tu fais des sélections multiples dans celle-ci, n'utilises surtout pas la propriété Text. Dans ta boucle, recherche les élément dont la propriété Selected est à true. De mémoire. J'ai pas vérifié. Si ça marche pas, tu dis.

    [Edit] quand la mémoire fait défaut... ComboBox --> pas de multiSelect.
    voici mon test:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    Private Sub Command1_Click()
        Dim i As Integer
        For i = 0 To List1.ListCount - 1
            If List1.Selected(i) Then List2.AddItem List1.List(i)
        Next
        For i = List1.ListCount - 1 To 0 Step -1
            If List1.Selected(i) Then List1.RemoveItem i
        Next
    End Sub
    qui marche très bien. La première boucle, en ordre croissant, parcourt les éléments de la première liste pour ajouter à la seconde. La deuxième boucle, en ordre décroissant, retire les éléments sélectionnés de la liste. En ordre décroissant pour éviter les débordements (out of bound).

  12. #12
    Membre à l'essai
    Profil pro
    Inscrit en
    Avril 2008
    Messages
    18
    Détails du profil
    Informations personnelles :
    Localisation : France, Seine Maritime (Haute Normandie)

    Informations forums :
    Inscription : Avril 2008
    Messages : 18
    Points : 15
    Points
    15
    Par défaut
    Merci OhMonBato. Mais je ne comprend, j'ai essayé de le faire dans mon application , ca ne marchait pas; alors que sur un nouveau projet ca marche.
    Merci a tous de m'avoir aidé.

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

Discussions similaires

  1. [AC-2003] comment ajouter un élément dans une liste avec InputBox
    Par spacesheep dans le forum VBA Access
    Réponses: 6
    Dernier message: 02/10/2009, 13h33
  2. Réponses: 8
    Dernier message: 27/04/2007, 14h07
  3. Réponses: 12
    Dernier message: 12/03/2007, 16h58
  4. Correction pour ajouté un élément dans une liste
    Par Rifton007 dans le forum Général JavaScript
    Réponses: 2
    Dernier message: 27/01/2007, 11h09
  5. ajouter un élément dans une liste
    Par Le Mérovingien dans le forum Général JavaScript
    Réponses: 22
    Dernier message: 02/07/2006, 17h43

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