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 :

[VB6] Recuperer un index d'une listbox1 et l'utilisé dans une listbox2


Sujet :

VB 6 et antérieur

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Mai 2006
    Messages
    18
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2006
    Messages : 18
    Par défaut [VB6] Recuperer un index d'une listbox1 et l'utilisé dans une listbox2
    J’utilise le programme suivant, en faite je saisi un nombre dans un textbox puis je validé avec command1_click, j'aimerai que la valeur num se place dans une listebox2 en face du texte que j'ai selectionné sur une listbox1 (avant la saisi), c'est un peut un tableau avec 2 colonnes (listbox1 et listbox2)


    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
     
    'Saisi du nombre de rebus par défaut
    Private Sub Command1_Click()
    Dim a() As Integer
    Dim b As Integer
    Dim c As Integer
    Dim d As Integer
    List2.Clear
    b = Int(Text1.text)
    c = List1.ListIndex
    ReDim Preserve a(c)
    a(c) = b
    d = 0
    Do While (d < c)
    List2.a (a(d))
    d = d + 1
    Loop
    List2.AddItem Text1
     
    End Sub
    Le problème, c’est que si je sélectionne la 4e ligne dans la list1 par exemple, j’affiche bien le nom saisi dans la ligne correspondante de la list2, mais toute les lignes pressentes avant sont rempli par des 0
    Si je refais une saisi en sélectionnant la ligne 7 de la list1 par exemple, j’affiche bien le nombre saisi dans la 7e ligne de la list2, mais toute les valeurs précédentes sont remplacer par 0 aussi

    En faite, je pense que c’est l’instruction « «List2.AddItem (a(d)) » qui pose problème, car j’ai l’impression qu’avec cette ligne, je remplace toute les valeurs a chaque nouvelle saisi, car j'utilise additem

    Il existe peut etre une fonction qui permet de sauté une ligne dans une listbox (sans y insérer des valeurs, si oui, comment l’utiliser ?

    Je ne possède pas l’aide dans le logiciel, il est écris : « la collection MSDN n’existe pas, Veuillez réinstaller MSDN », le problème, c’est que MSDN n’est pas présent sur le cd que je possède

    Merci beaucoup pour votre aide,

  2. #2
    Membre averti
    Profil pro
    Inscrit en
    Mai 2006
    Messages
    18
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2006
    Messages : 18
    Par défaut
    En relisant le message, je me rend compte que j'ai oublier le plus important, *boujour

  3. #3
    Expert éminent


    Profil pro
    Inscrit en
    Juin 2003
    Messages
    14 008
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 14 008
    Par défaut
    Citation Envoyé par bvi67
    En relisant le message, je me rend compte que j'ai oublier le plus important, *boujour
    oui tu as aussi oublié les balises de codes ( bon je l'ai fait pour toi...), maintenant manque à tagger le titre [VB6],[VBA-E]...?

  4. #4
    Membre émérite
    Inscrit en
    Septembre 2005
    Messages
    617
    Détails du profil
    Informations forums :
    Inscription : Septembre 2005
    Messages : 617
    Par défaut
    Alors crée une nouvelle form , ajoute 2 listes et un controle texte et regarde ce que nous fait ce code... peu etre cela t'inspirera t il

    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 Form_Load()
    List1.AddItem "AAA"
    List1.AddItem "BBB"
    List1.AddItem "CCC"
    List2.AddItem "AAA"
    List2.AddItem "AAA"
    List2.AddItem "AAA"
    End Sub
     
    Private Sub List1_Click()
        Text1.Text = List2.List(List1.ListIndex)
        List2.Selected(List1.ListIndex) = True
    End Sub
     
    Private Sub Text1_Change()
        List2.List(List1.ListIndex) = Text1.Text
        List2.Selected(List1.ListIndex) = True
    End Sub

  5. #5
    Expert éminent


    Profil pro
    Inscrit en
    Juin 2003
    Messages
    14 008
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 14 008
    Par défaut
    Tu as aussi un probléme de "portée" de vairables et gestion de tableaux...je sais pas exactement ce que tu ve faire avec ton tableau a()... mais

    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 Command1_Click()
    Dim a() As Integer ' ==> Ici tu initialise le tableau il est vide ...
    Dim b As Integer
    Dim c As Integer
    Dim d As Integer
    List2.Clear
    b = Int(Text1.text)
    c = List1.ListIndex
    ReDim Preserve a(c) '==> ici tu redimensionne le tableau  en fonction de 
    'la position actuelle dans list1. (le tableau à maintenant une taille c .. et
    'est rempli de 0 , valeur initiale d'un entier en vb..)
    a(c) = b  '==> ici tu affecte le contenu de b en a(c).. ? valeur de Text1

  6. #6
    Membre averti
    Profil pro
    Inscrit en
    Mai 2006
    Messages
    18
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2006
    Messages : 18
    Par défaut
    ben c'est du rapide ca, j'essai ca des demain, :-)

    bbil, excuse moi pour la mise en page ..j'y penserai la prochaine fois,
    Vesta, j'oublirai pas de mettre resolu quand ca fonctionnera sur mon ecran,

    merci pour votre aide et la rapidité de vos reponses,

  7. #7
    Membre émérite
    Inscrit en
    Septembre 2005
    Messages
    617
    Détails du profil
    Informations forums :
    Inscription : Septembre 2005
    Messages : 617
    Par défaut
    De rien j'attend des nouvelles demain :p

    Merci pour le résolu :p qui sera la demain je l'espere

  8. #8
    Modérateur
    Avatar de AlainTech
    Homme Profil pro
    Consultant informatique
    Inscrit en
    Mai 2005
    Messages
    4 235
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 71
    Localisation : Belgique

    Informations professionnelles :
    Activité : Consultant informatique
    Secteur : Finance

    Informations forums :
    Inscription : Mai 2005
    Messages : 4 235
    Par défaut
    Quand tu reviens, mets un tag dans ton titre comme l'a demandé bbil...
    N'oubliez pas de cliquer sur quand vous avez obtenu ou trouvé vous-même la réponse à votre question.
    Si vous trouvez seul, pensez à poster votre solution. Elle peut servir à d'autres!
    Pensez aussi à voter pour les réponses qui vous ont aidés.
    ------------
    Je dois beaucoup de mes connaissances à mes erreurs!

  9. #9
    Membre averti
    Profil pro
    Inscrit en
    Mai 2006
    Messages
    18
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2006
    Messages : 18
    Par défaut
    Bonjour

    Vesta Le code que tu me propose ne fonctionne pas entièrement, j’ai des erreurs pendant l’exécution.

    J’ai effectuer des modifications sur le 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
    16
    17
    18
    19
    20
    21
     
    'Saisi du nombre de rebuts par defaut
    Private Sub Command1_Click()
    Dim a() As Integer
    Dim b As Integer
    Dim c As Integer
    Dim d As Integer
    e = List1.ListCount
    ReDim Preserve a(e)
    List2.Clear
    b = Text1.text
    c = List1.ListIndex
    a(c) = b
    d = 0
    Do While (d < c)
    List2.AddItem a(d)
    d = d + 1
    Loop
    List2.AddItem Text1
     
    End Sub

    J’ai bien compris que la ligne ‘redim preserve a(e)’ met la valeur 0 dans toute les lignes du tableau, c’est pas ce que je veux, mais comment faire pour dimensionné un tableau dans ce cas ?

    Pour 'a(c) = b ', je veux bien affecter la valeur de text1 dans le tableau a a l'emplacement c qui représente le n° de ligne selectionné dans list1

    A part les 0 (dans list2) dans les lignes avant celle sélectionné dans list1, a chaque nouveau click sur command1, toute les valeurs précédentes (les 0 et la valeur de text1 précédente) sont effacé, normal, car j’utilise ‘list2clear ‘, mais si je supprime la ligne, les valeurs suivantes se place a la suite, dans les 2 cas, c’est pas ce que je veux faire,

    Ce que je souhaite, c’est cliqué sur une ligne de list1 et d’y ajouté une valeur saisi dans text1, puis cliqué sur une autre ligne de list1 et ajouté une 2e valeur dans list2 (a l’emplacement qui correspond, la même ligne de list1)

    Toute les lignes doivent être rempli avant de valider le tableau, un 0 sur une ligne non saisi pourrai faire croire que la ligne a déjà été saisi, or ce n’est pas le cas, toute les lignes doivent être saisi manuellement via text1,

    Merci pour votre aide

  10. #10
    Membre émérite
    Inscrit en
    Septembre 2005
    Messages
    617
    Détails du profil
    Informations forums :
    Inscription : Septembre 2005
    Messages : 617
    Par défaut
    arf tien prend le je l'ai joint
    Fichiers attachés Fichiers attachés

  11. #11
    Expert éminent


    Profil pro
    Inscrit en
    Juin 2003
    Messages
    14 008
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 14 008
    Par défaut
    Citation Envoyé par bvi67
    J’ai bien compris que la ligne ‘redim preserve a(e)’ met la valeur 0 dans toute les lignes du tableau, c’est pas ce que je veux, mais
    non elle ne met pas 0 dans toutes les lignes du tableau, mais seulement dans les nouvelles "lignes" cependant le tableau étant vide au départ... toutes les "lignes" sont nouvelles...., pour conserver les valeurs d'un tableau entre 2 appels de fonctions .. il faut le déclarer en static...

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

Discussions similaires

  1. Réponses: 40
    Dernier message: 21/06/2007, 17h58
  2. Réponses: 22
    Dernier message: 11/06/2007, 23h24
  3. Réponses: 1
    Dernier message: 16/05/2007, 12h51
  4. [MySQL] récupérer dans une boucle chaque information MySQL dans une variable différente
    Par gtenthorey dans le forum PHP & Base de données
    Réponses: 3
    Dernier message: 06/05/2007, 22h34
  5. Réponses: 2
    Dernier message: 20/06/2006, 08h22

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