VB.Net Remplir un Tableau à partir d'un Combobox [Résolu]

Signaler
Messages postés
532
Date d'inscription
lundi 5 juin 2006
Statut
Membre
Dernière intervention
6 octobre 2012
-
Messages postés
840
Date d'inscription
mercredi 22 octobre 2003
Statut
Membre
Dernière intervention
7 janvier 2009
-
Salut...


Je cherche un moyen pour remplir un tableau à partir d'un Combobox


J'essais un truc du genre dans une boucle
     Dim Tableau as String ()
            Dim i As Integer = 0
            For i = 0 To Combobox.Items.Count - 1
                cbxCopie.Items.Add(Combobox.GetItemText(Combobox.Items.Item(i)))
                If i = 0 Then
                    ReDim Tableau(i)
                Else
                    ReDim Preserve Tableau(i)
                End If
                Tableau = Combobox.Items.Item(i)
            Next


Mais ca génère un erreur...


Comment on fait pour mettre mon combobox dans un Tableau


Merci de votre aide

8 réponses

Messages postés
389
Date d'inscription
dimanche 7 avril 2002
Statut
Membre
Dernière intervention
23 septembre 2016
2
Salut,
Essaye plutot Tableau(i)=Combobox.Items.Item(i)
@+
Megafan
Messages postés
532
Date d'inscription
lundi 5 juin 2006
Statut
Membre
Dernière intervention
6 octobre 2012
1
Salut


C'est vrai j'avais oublié le (i) dans Tableau(i)
Mais j'ai encore un bug


Dans mon tableau les ligne qui s'ajoute valent "System.Data.DataRowView"
il ne va;ent pas le texte que j'ai dans mon Combobox ????


Tu vois pourquoi ca fais ça???
Messages postés
389
Date d'inscription
dimanche 7 avril 2002
Statut
Membre
Dernière intervention
23 septembre 2016
2
de plus ton if i=0 jusqu'au end if
ca sert pas a grand chose
avant ton for, dimensionne ton tableau genre redim tableau (combobox.items.count -1)
@+
Megafan
Messages postés
532
Date d'inscription
lundi 5 juin 2006
Statut
Membre
Dernière intervention
6 octobre 2012
1
OK j'ai trouvé


Tableau(i) = Combobox.GetItemText(Combobox.Items.Item(i))




merci de ton aide
Messages postés
389
Date d'inscription
dimanche 7 avril 2002
Statut
Membre
Dernière intervention
23 septembre 2016
2
De rien
@+ Megafan
Messages postés
840
Date d'inscription
mercredi 22 octobre 2003
Statut
Membre
Dernière intervention
7 janvier 2009
9
Salut,
Pfou, vous faites ça compliqué

Si les items dans ta ComboBox sont des Strings :

    Dim Tableau(-1) As String
    Combobox.Items.CopyTo(tab, 0)

Ou si ce n'est pas des Strings :

    Dim Tableau(Combobox.Items.Count - 1) As String
    For each Item As TrucChose In Combobox.Items
        Tableau(i) = Item.ToString
    Next

Et voilà...
Messages postés
3172
Date d'inscription
dimanche 15 février 2004
Statut
Membre
Dernière intervention
9 avril 2017
30
Kevin.Ory, je pense que tu as codé un oeu trop vite
Dim Tableau(-1) As String 
D'ou sort ce -1 ?

    For each Item As TrucChose In Combobox.Items
        Tableau(i) = Item.ToString
    Next
Si tu ne définis pas i et si tu ne l'incrémente pas, ca ne va pas faire le résultat attendu.
__________
  Kenji
Messages postés
840
Date d'inscription
mercredi 22 octobre 2003
Statut
Membre
Dernière intervention
7 janvier 2009
9
Dim Tableau(-1) As String déclare un tableau de longueur 0
Hé oui, il faut le savoir... j'avais bien trimé pour trouver ça à l'époque

Par contre, effectivement ça ne fonctionne pas mon code Pourtant

je suis sûr que ça fonctionne dans un cas semblable, lorsque on ne peut pas connaitre le nombre d'éléments avant d'avoir le tableau, mais je ne sais plus quoi (appels d'API je pense).
Donc il faut effectivement déclarer le tableau à la bonne taille, le code devient donc:


    Dim Tableau(Combobox.Items.Count - 1) As String
    Combobox.Items.CopyTo(tab, 0)

Et pour la deuxième remarque, tu as tout à fait raison, je devrais mieux relire mon code avant de poster
J'avais d'abord fais avec une incrémentation de i, puis j'ai mal cru que je pouvais simplifier avec un For Each. Donc voici le code avec l'incrémentation de i:

    Dim Tableau(Combobox.Items.Count - 1) As String
    For i As Integer = 0 To Combobox.Items.Count - 1
        Tableau(i) = Combobox.Items(i).ToString
    Next

Dsl, et merci de m'avoir repris Charles