VB6 et les tableaux

TomIlliev Messages postés 86 Date d'inscription vendredi 27 décembre 2002 Statut Membre Dernière intervention 13 octobre 2016 - 16 juil. 2006 à 20:13
mortalino Messages postés 6786 Date d'inscription vendredi 16 décembre 2005 Statut Membre Dernière intervention 21 décembre 2011 - 17 juil. 2006 à 02:54
Bonjour à tous et toutes... (c'est les vacances!!!)

j'ai vb6 mais pas de doc en français, j'aimerai savoir si il existe une instruction permetant de supprimer un élément dans un tableau.

merci d'avance
Tomilliev

9 réponses

nhervagault Messages postés 6063 Date d'inscription dimanche 13 avril 2003 Statut Membre Dernière intervention 15 juillet 2011 36
16 juil. 2006 à 21:00
Salut

regarde ce source il doit y avoir le code
http://www.vbfrance.com/codes/CLASSE-TABLE-HACHAGE_31324.aspx
que tu cherches
voila
TomIlliev Messages postés 86 Date d'inscription vendredi 27 décembre 2002 Statut Membre Dernière intervention 13 octobre 2016 2
17 juil. 2006 à 00:26
Merci nhervagault, j'ai jeté un oeil sur le code que tu m'as indiqué, ça à l'air d'une usine à gaz!

En fait je voulez savoir si il exsite une instruction en vb6 pour supprimer un élément de tableau.

J'ai écris une petite routine pour le faire avec l'instruction redim preserve

Private Sub Supprimer(Tbl,ByVal Index As Integer)

'Cette sub permet de supprimer un item  en faisant remonter les 'items suivant l'index d'un cran puis en raccourcissant le tableau

'd'un élément.

Dim i As Integer      
      For i = Index To UBound(Tbl) - 1
        Tbl(i) = Tbl(i + 1)
      Next i

   If  Ubound(Tbl)=0 Then 
     Erase  tbl
    Else    
     ReDim Preserve Tbl(UBound(Tbl) - 1)
   End if
     
End Sub

A+
Tomilliev
PCPT Messages postés 13272 Date d'inscription lundi 13 décembre 2004 Statut Membre Dernière intervention 3 février 2018 47
17 juil. 2006 à 01:25
salut,

ton code va générer une erreur s'il y a une suppression après un erase...

pour ta demande, le plus adapté serait peut être l'utilisation d'une collection

pose 2 boutons et une listbox sur une form

Option Explicit 
Dim mCol As New Collection 
Dim ii   As Integer 
'
Private Sub Form_Load() 
    Command1.Caption =  "ajouter" 
    Command2.Caption = "supprimer" 

    mCol.Add "item 1" 
    mCol.Add "item 2" 
    mCol.Add "item 3" 
    mCol.Add "item 4" 
    mCol.Add "item 5" 
    ii = 5 

    Call WriteRows 
End Sub 
Private Sub Form_Unload(Cancel As Integer) 
    Set mCol = Nothing 
End Sub 
'
'
Private Sub Command1_Click() 
    ii = ii + 1 
    mCol.Add "item " & ii 
    WriteRows 
End Sub 
Private Sub Command2_Click() 
    If  LenB (List1.Text) > 0 Then 
        mCol.Remove List1.ListIndex + 1 
        Call WriteRows 
    End If 
End Sub 
'
Private Sub WriteRows() 
    Dim i As Integer 
    List1.Clear 

    For i  = 1 To mCol.Count 
        List1.AddItem mCol.Item(i) 
    Next i 
End Sub

<small> Coloration
syntaxique automatique [AFCK]</small>
       

++
PCPT   [AFCK]

<hr size="2" width="100%" />Prenez un instant pour répondre à ce sondage svp
TomIlliev Messages postés 86 Date d'inscription vendredi 27 décembre 2002 Statut Membre Dernière intervention 13 octobre 2016 2
17 juil. 2006 à 02:19
Salut PCPT

Je n'ai pas l'habitude peut-être à tort de me servir des collections.
De plus mon projet devrais être complétement remanié c'est un projet UserControle avec une collection de Label pour simuler un menu sans prétention. J'en avais parlé sur le forum au début du mois (ici) pour transmettre un tableau une property de contrôle.
j'ai résolu le problême en passant des chaines séparées par un carractère de séparation.

Ca marche pas trop mal je le posterai sur le sîte si tu veux ou d'autre le tester.

C'est assez chiant de pouvoir afficher une collection de label  dans un controle en mode création et de gérer l'ajout, la modification, la suppréssion d'éléments sur une page de propriété.
 D'où ma question...
Enfin quand on aime on compte pas...
Allez a+
Tomilliev
au fait le code fonctionne

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

Posez votre question
PCPT Messages postés 13272 Date d'inscription lundi 13 décembre 2004 Statut Membre Dernière intervention 3 février 2018 47
17 juil. 2006 à 02:28
ah oui en effet, ici :
http://www.vbfrance.com/infomsg_CONTROLE-ACTIVEX-TABLEAU_771694.aspx

laissé sans suite d'ailleurs....
beh tout dépend du nombre de contrôles (labels) mais j'ai dans l'idée que pour ce cas de figure, la collection serait plus rapide et consommerait moins de ressources qu'un tableau.
celà dit (si tu le fais et que tu trouves la solution), je ne sais pas si on peut ajouter des objets indéxés à une collection...

bref, tu as les cartes en main

++
<hr size="2" width="100%" />Prenez un instant pour répondre à ce sondage svp
mortalino Messages postés 6786 Date d'inscription vendredi 16 décembre 2005 Statut Membre Dernière intervention 21 décembre 2011 18
17 juil. 2006 à 02:31
Salut PCPT,

Ton code est parfait, par contre, si, par le grand hasard des choses et par rapport à ses besoins, ces données sont importées (et s'il y a donc les m^mes Items) par ex :
    mCol.Add "item 1
    mCol.Add "item 1"
il me semble que cela provoque une erreur (c'est pour cela que je l'utilise pour les doublons)

Donc il faut qu'il soit s^r de ne pas avoir ces satanés doublons dans sa liste, et il peut utiliser ce code.

J'essaie d'ailleurs de trouver la solution à ce problème car j'ai besoin de récupérer la valeur en double....(tiens, merci pour le topic, ça me file une idée   merci de vos 2 réponses)


Bon courage TomIlliev
@ ++<?xml:namespace prefix o ns "urn:schemas-microsoft-com:office:office" /??> 

      Mortalino
Le mystérieux chevalier, "Provençal, le Gaulois"
mortalino Messages postés 6786 Date d'inscription vendredi 16 décembre 2005 Statut Membre Dernière intervention 21 décembre 2011 18
17 juil. 2006 à 02:32
Ouah, j'ai mis 15 minutes pour écrire ça ??  MDR
@ ++<?xml:namespace prefix o ns "urn:schemas-microsoft-com:office:office" /??> 

      Mortalino
Le mystérieux chevalier, "Provençal, le Gaulois"
PCPT Messages postés 13272 Date d'inscription lundi 13 décembre 2004 Statut Membre Dernière intervention 3 février 2018 47
17 juil. 2006 à 02:43
re Mortalino,

dans le form load :
ii = 2

F5, click 3fois sur Ajouter

supprime la 6e ligne.
pas d'erreur....

regarde bien, on supprime par l'index et non par le caption, les doubons n'ont alors aucun importance (voir WriteRows)
@ dans 3/4H
<hr size="2" width="100%" />Prenez un instant pour répondre à ce sondage svp
mortalino Messages postés 6786 Date d'inscription vendredi 16 décembre 2005 Statut Membre Dernière intervention 21 décembre 2011 18
17 juil. 2006 à 02:54
(je tiendrais pas autant  )

Exact ! Bah en fait je viens de test et effectivement par l'index c'est nickel !

Bien vu.
@ ++<?xml:namespace prefix o ns "urn:schemas-microsoft-com:office:office" /??> (1/2 heures max )

      Mortalino
Le mystérieux chevalier, "Provençal, le Gaulois"
Rejoignez-nous