Manipuler un tableau a partir d'une listbox

cs_badano Messages postés 3 Date d'inscription mardi 24 avril 2012 Statut Membre Dernière intervention 24 avril 2012 - 24 avril 2012 à 19:50
ehjoe Messages postés 728 Date d'inscription samedi 4 avril 2009 Statut Membre Dernière intervention 30 mars 2014 - 25 avril 2012 à 11:00
bonjour
je veux savoir comment:
1- remplir un tableau d'entier a partir d'une listbox
2- vider un tableau d'entier dans une listbox
3- trier un tableau
merci d'avence svp c'est urgent :)

11 réponses

ucfoutu Messages postés 18038 Date d'inscription lundi 7 décembre 2009 Statut Modérateur Dernière intervention 11 avril 2018 211
24 avril 2012 à 20:29
Bonjour,*
sous VB6, donc ? (la présente section) ?
1) : par une boucle For ... to ... next
2) : idem
3) : tu peux trier la listbox (propriété sorted sous VB6) puis alimenter le tableau comme dit en 2)

Il n'y a pas de point 4), mais je l'ajoute :
4) l'urgence est la tienne seule.


________________________
Réponse exacte ? => "REPONSE ACCEPTEE" pour faciliter les recherches.
Pas d'aide en ligne installée ? => ne comptez pas sur moi pour simplement vous dire ce qu'elle contient. Je n'interviendrai qu'en cas de nécessité de développ
0
cs_badano Messages postés 3 Date d'inscription mardi 24 avril 2012 Statut Membre Dernière intervention 24 avril 2012
24 avril 2012 à 20:38
plus de détail svp , si tu peux m’écrire le code
0
NHenry Messages postés 15113 Date d'inscription vendredi 14 mars 2003 Statut Modérateur Dernière intervention 22 avril 2024 159
24 avril 2012 à 20:39
Bonjour,

badano, on ne te fournira pas de code, c'est à toi de chercher et d'expérimenter.

---------------------------------------------------------------------
[list=ordered][*]Pour poser correctement une question et optimiser vos chances d'obtenir des réponses, pensez à lire le règlement CS, celui-ci pour bien poser votre question ou encore celui-ci pour les PFE et autres exercices[*]Quand vous postez un code, merci d'utiliser la coloration syntaxique (3ième icône en partant de la droite : )
[*]En VB.NET pensez à activer Option Explicit et Option Strict (propriété du projet) et à retirer l'import automatique de l'espace de nom Microsoft.VisualVasic (onglet Références dans les propriétés du projet).
[*]Si votre problème est résolu (et uniquement si c'est le cas), pensez à mettre "Réponse acceptée" sur le ou les messages qui vous ont aidés./list
---
0
ucfoutu Messages postés 18038 Date d'inscription lundi 7 décembre 2009 Statut Modérateur Dernière intervention 11 avril 2018 211
24 avril 2012 à 20:41
si tu peux m’écrire le code

Ah ?
Non (pas mon genre) !
Je ne rechignerai toutefois pas à corriger ce que (au moins) tu auras bien voulu tenter.
Désolé de tendre à te forcer à travailler (si peu), mais c'est ainsi. Donnant (effort) donnant (récompense).

________________________
Réponse exacte ? => "REPONSE ACCEPTEE" pour faciliter les recherches.
Pas d'aide en ligne installée ? => ne comptez pas sur moi pour simplement vous dire ce qu'elle contient. Je n'interviendrai qu'en cas de nécessité de développ
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
ucfoutu Messages postés 18038 Date d'inscription lundi 7 décembre 2009 Statut Modérateur Dernière intervention 11 avril 2018 211
24 avril 2012 à 20:45
Et- ce d'autant que la conjonction des points 1) et 2) ne montre en aucun cas (pourquoi à la fois une listbox et un tableau dynamique) un besoin professionnel, mais plutôt un exercice de cours.


________________________
Réponse exacte ? => "REPONSE ACCEPTEE" pour faciliter les recherches.
Pas d'aide en ligne installée ? => ne comptez pas sur moi pour simplement vous dire ce qu'elle contient. Je n'interviendrai qu'en cas de nécessité de développ
0
cs_badano Messages postés 3 Date d'inscription mardi 24 avril 2012 Statut Membre Dernière intervention 24 avril 2012
24 avril 2012 à 21:43
ah les gars, calmez vous ! je suis débutant et voila se que je peux faire pour cet exercice


1)
Public Sub remplirtabentier(n As Integer, te() As Integer)
ReDim te(n) As Integer
Dim i As Integer
For i = 0 To n
te(i) = lstnumet.List(i)
Next i
End Sub

2)
Public Sub vidertabentier(n As Integer, te() As Integer)
ReDim te(n) As Integer
Dim i As Integer
For i = 0 To n
lstnumet.List(i) = t(i)
Next i
End Sub
0
Utilisateur anonyme
25 avril 2012 à 03:31
Bonjour,

3- trier un tableau

Tu le transfères dans Excel, tu le fais trier dans Excel, tu le récupères.

ou

Tu le transfères dans un tableau Word, tu le fais trier dans le tableau Word, tu le récupères.

ou tu mets ton

ListBox.sorted = true


Avec un peu de chance, tu devrais avoir des points pour l'originalité.


Je sais, je sais, c'est du cabotinage, mais il est tard.

Un dernier effort:

Fouille là-dedans, c'est en VBA et il faut adapter, mais ce n'est pas la mer à boire

Cela aussi c'est en VBA

Même chose avec un autre algorithme

Le tri-bulle classique


Il y en a encore d'autres sur le site de Frédéric Sigonneau. Écris tri dans le moteur de recherche. Il y en a qui sont déjà dans ma liste et d'autres.
0
ucfoutu Messages postés 18038 Date d'inscription lundi 7 décembre 2009 Statut Modérateur Dernière intervention 11 avril 2018 211
25 avril 2012 à 08:03
Bonjour, cmarcotte,
dès lors que (comme je l'ai mentionné plus haut) il n'est pas professionnel de stocker deux fois (un tableau + une listbox) les mêmes données, je n'hésiterais personnellement pas :
1) à le faire observer
2) à dire que puisque ainsi : autant trier la listbox (et au besoin la vider ensuite vers le tableau)
Je m'amuserais, quoi ...*
Toutefois :
vider un tableau d'entier dans une listbox

Or, une listbox contient des strings et gaffe, car "12" est par exemple < "2" alors que 12 > 2
Pas de panique ===>> "000012" est, lui, > "000002", par exemple ===>> je formaterais donc mes items en "00000000#" dans ma listbox avec sorted = True, puis les ré-afficherais avec Val (disparition des "0")

Bien sûr : le prof serait furieux de cet échappatoire (adieu l'algo qu'il attendait). Mais voilà : cela lui ferait les pieds et je n'hésite pas à me montrer diable face à la bêtise (2 fois les données !!!)
________________________
Réponse exacte ? => "REPONSE ACCEPTEE" pour faciliter les recherches.
Pas d'aide en ligne installée ? => ne comptez pas sur moi pour simplement vous dire ce qu'elle contient. Je n'interviendrai qu'en cas de nécessité de développ
0
ehjoe Messages postés 728 Date d'inscription samedi 4 avril 2009 Statut Membre Dernière intervention 30 mars 2014 4
25 avril 2012 à 08:40
'
' Bonjour badano,
'
' Voici le code testé, rajoute les objets
'
Option Explicit On
Public Class Form1
  Dim tableauDentiers(20) As Integer ' commence à 0 mais j n'utilise pas, donc commence à 1

  Sub Form1_Load(sender As System.Object, e As System.EventArgs) Handles MyBase.Load
    ' pour tester -> remplissage de listBox1 avec des nombres entiers positifs
    Dim i As Integer
    Dim hasard As Integer
    ListBox1.Items.Clear()
    For i = 1 To 20
      Randomize()
      hasard = Int((2012 - 1 + 1) * Rnd() + 1)
      ListBox1.Items.Add(hasard)
    Next i
  End Sub

  Sub Form1_Shown(sender As Object, e As System.EventArgs) Handles Me.Shown
    Dim i As Integer ' remplissage du tableau d'entier
    Dim j As Integer
    Dim trans As Integer
    Dim t As String = ""
    For i = 1 To 20
      tableauDentiers(i) = 0
    Next i
    For i = 0 To 19
      tableauDentiers(i + 1) = ListBox1.Items(i)
    Next i
    '
    ' vide ( COPIE ) le tableau d'entiers dans listbox2
    ListBox2.Items.Clear()
    For i = 1 To 20
      ListBox2.Items.Add(tableauDentiers(i))
    Next i
    '
    ' tri le tableau d'entiers par ordre croissant
    ' la listBox pzut trier en mettant la propriété sorted = True
    ' ListBox2.Sorted = True
    For i = 1 To 20
      For j = 1 To 19
        If tableauDentiers(j) > tableauDentiers(j + 1) Then
          trans = tableauDentiers(j)
          tableauDentiers(j) = tableauDentiers(j + 1)
          tableauDentiers(j + 1) = trans
        End If
      Next j
    Next i
    For i = 1 To 20
      t = t & tableauDentiers(i) & vbLf
    Next i
    MsgBox(t)
  End Sub
  '
  ' Cordialement, Joe
  '
End Class
0
ucfoutu Messages postés 18038 Date d'inscription lundi 7 décembre 2009 Statut Modérateur Dernière intervention 11 avril 2018 211
25 avril 2012 à 10:23
Bonjour, EhJoe,
un code tout fait, mais en VB.Net ?
Si vb.Net : même pas besoin d'une boucle for, EhJoe !
pour passer de listbox à array ===>> puisque tu te mets en VB.Net
Dim arr1()
ReDim arr1(ListBox1.Items.Count - 1)
ListBox1.Items.CopyTo(arr1, 0)

et je ne serais pas du tout surpris de ce que l'inverse (de array vers Listbox) existe également et si oui, ressemblerait à :
ListBox1.DataSource =  ListArray

Ouais. Mais badano est sous VB6
Et comme il est débutant et en exercice de cours, nous ne lui avons parlé que de boucles, en s'abstenant d'aller à du beaucoup plus rapide (environ 4 fois plus rapide), y compris depuis VB6, pour son point 2) (à l'aide d'une fonction de l'Api de Windows).
Il est à faire un exercice de cours.

________________________
Réponse exacte ? => "REPONSE ACCEPTEE" pour faciliter les recherches.
Pas d'aide en ligne installée ? => ne comptez pas sur moi pour simplement vous dire ce qu'elle contient. Je n'interviendrai qu'en cas de nécessité de développ
0
ehjoe Messages postés 728 Date d'inscription samedi 4 avril 2009 Statut Membre Dernière intervention 30 mars 2014 4
25 avril 2012 à 11:00
Bonjour Jacques,

Ah je ne savais pas que c'était en vb6...
J'ai fait le code parce que j'ai vu qu'il y avait déjà des réponses...

Oui j'aurais pu utiliser Dim et Redim mais comme c'était un exemple je l'ai rentré en constante.

Par contre le copyTo je ne connaissais pas.

Pour le tri bulle, c'est pour le sport, car avec les objets en (invisible) on peut trier assez vite dans un liste en programmation objet...
D'ailleurs la question était bizarre car, pourquoi trier en bulle le tableau alors qu'il suffisait de balancer le résultat dans la liste 2 avec sortie = vraie, on avait le tri, sans doute ne le savait-il pas...

Bon, alors je laisse la question

Cordialement, Joe.
0
Rejoignez-nous