cs_Xneo
Messages postés48Date d'inscriptionjeudi 15 janvier 2004StatutMembreDernière intervention18 janvier 2007
-
7 mai 2005 à 13:39
ScSami
Messages postés1488Date d'inscriptionmercredi 5 février 2003StatutMembreDernière intervention 3 décembre 2007
-
8 mai 2005 à 19:38
Voila, en VB6 j'ai un tableau dynamique de String!
J'aimerai en fait parcourir le tableau, et si dans le tableau je trouve une case qui est égale avec une string que j'aurai choisi, je voudrais supprimé la case en fait, mais que le tableau se décale automatiquement, pour pas qu'il y est un trou au milieu par exemple! Possible ? merci davance...
cs_Jack
Messages postés14006Date d'inscriptionsamedi 29 décembre 2001StatutModérateurDernière intervention28 août 201579 7 mai 2005 à 15:34
Salut
Oui, c'est possible
Il suffit d'utiliser une Collection au lieu d'un tableau.
Avantage : Tu gères tes 'cases' par leur contenu, c'est à dire que tu vas pouvoir faire des recherches en un clin d'oeil
Inconvénient : Plus long (en temps machine) à gérer les Remove par exemple.
Vala
Jack, MVP VB
NB : Je ne répondrai pas aux messages privés
Le savoir est la seule matière qui s'accroit quand on la partage. (Socrate)
Neo.balastik
Messages postés796Date d'inscriptionjeudi 17 mai 2001StatutMembreDernière intervention 5 mai 20097 7 mai 2005 à 15:35
Salut ;O)
Ou tu utilises 2 tableaux...
Sur ton form : 2 ListBox, un bouton de commande et colle ceci :
Private Tab1(1 To 100) As String
Private Tab2() As String
Private Sub Command1_Click()
Dim MyStr As String
Dim Counter As Long
Dim i As Long
'Chaîne à rechercher
MyStr = "String50"
For i = 1 To UBound(Tab1)
If Tab1(i) <> MyStr Then
Counter = Counter + 1
ReDim Preserve Tab2(Counter)
Tab2(Counter) = Tab1(i)
Me.List2.AddItem Tab2(Counter)
End If
Next i
End Sub
Private Sub Form_Load()
Dim i As Long
'Remplissage du tableau initial
For i = 1 To UBound(Tab1)
Tab1(i) = "String" & Trim$(Str$(i))
Me.List1.AddItem Tab1(i)
Next i
ScSami
Messages postés1488Date d'inscriptionmercredi 5 février 2003StatutMembreDernière intervention 3 décembre 200724 7 mai 2005 à 16:53
Moi j'aime bien la solution de Néo même s'il faut bien reconnaitre que celle de Lupus est clairement la plus efficace.
Cependant, j'aimerais bien que Jack nous donne un petit exemple de sa
solution... Car en effet, si l'utilisation des tableaux est bien
pratiques, ce genre de problèmes est récurrent!
Vous n’avez pas trouvé la réponse que vous recherchez ?
'transformation du tableau
' en 3 lignes
s = Join(t, ";")
s = Replace(s, ";toto1;", ";")
t = Split(s, ";")
'ou
' en 1 ligne
't = Split(Replace(Join(t, ";"), ";toto1;", ";"), ";")
'affichage des résultats
For i = LBound(t) To UBound(t)
MsgBox t(i)
Next
Tite explik : je convertis le tableau en chaine (chaque item étant séparé par un ";" mais on peut choisir autre chose), je remplace l'enregistrement (ou case ou quelque soit le nom qu'on lui donne) par un ";" (dans l'exemple ";toto1;"). Et enfin, je réinjecte le résultat dans le tableau.
Inconvénient : ça ne marche QUE pour des tableaux dynamiques à 1 dimension.
Je n'ai pas calculé la vitesse d'exécution entre ma 1ère solution et celle-ci. A voir....
------------------------------------------------------------------
Dresseur de puces, .... normal pour un loup !?
cs_CanisLupus
Messages postés3757Date d'inscriptionmardi 23 septembre 2003StatutMembreDernière intervention13 mars 200621 7 mai 2005 à 20:18
Je t'appuie ScSami, j'aimerais aussi connaître une solution avec des Collections car mon museau n'a rien reniflé de ce côté en ce qui concerne les tableaux dynamiques en mémoire.
PS : je n'ai pas encore la rage et si je bave, c'est d'admiration devant quelqu'un(e) qui trouve une astuce que je ne connais pas ! Et je bave souvent !!!
--------------------------------------------------------
Dresseur de puces, .... normal pour un loup !?
ScSami
Messages postés1488Date d'inscriptionmercredi 5 février 2003StatutMembreDernière intervention 3 décembre 200724 8 mai 2005 à 05:15
Pardonne moi pour la rage mon Loup ,
mes écris dépassent parfois mes pensées... Ah... si seulement ça
pouvait aussi être vrai quand je programme... ce serait génial!
En fait, je voulais dire : "Comme quoi, on peut avoir des puces, des poils et de la classe!" ;-))
J'espère ne pas t'avoir offensé, sinon, je m'en excuse platement.
Je crois que notre NéaGates, à défaut de notre Jack, nous a fournit un
très bonne exemple d'utilisation des collections comme alternative aux
tableaux.. Je vais m'empresser de tester tout ça... En tous les cas,
moi, chien ou loup, perso, je bave d'admiration devant cette
démonstration qui me sera plus qu'utile...
ScSami
Messages postés1488Date d'inscriptionmercredi 5 février 2003StatutMembreDernière intervention 3 décembre 200724 8 mai 2005 à 05:34
Dites les gars, j'ai juste une petite question là qui me trotte dans la tête depuis un bout de temps...
Pourquoi parlez-vous de "formulaire" ??? Une "Form", certes, au sens de
"document" peut se traduire ainsi. Mais en français, tout comme dans la
MSDN, on parle d'une "fenêtre"!!! J'dis une connerie ou pas??? Alors,
est-ce une lubie de oldschooler ou alors une mauvaise interprétation de
cette vilaine langue qu'est celle du trop connu Shakespeare ??? Mais
peut-être est-ce une interprétation prenant en compte un mystèrieux
facteur technique ???
S'il vous plait, éclairez ma lenterne... parce que tout seul, dans le
noir, entouré d'être aussi féroces que voraces que sont les BillGates
et autres Loups (garou qui sait!) et enfants éventreurs, ben moi,
j'suis pas rassuré sur mes connaissances ;-)
Neo.balastik
Messages postés796Date d'inscriptionjeudi 17 mai 2001StatutMembreDernière intervention 5 mai 20097 8 mai 2005 à 10:53
ScSami> Form, Formulaire, Fenêtre c'est juste une question de vocabulaire, tant que l'on sait qu'on à les pieds dans VB6 et de quoi on parle! Selon moi, le terme de formulaire est plus adapté à Access, ce site n'étant strictement pas limité à VB, certaines questions viennent d'utilisateurs Access, qui eux, connaissent plus le terme formulaire. On parlera aussi de UserForm pour Word et Excel et sans doute aussi pour les autres produits de la suite Office.
Ceci dit, l'IDE de VB6 en anglais parlera de "Forms" tandis que celui en français adoptera le terme de "Feuilles".
Toutefois, en programmation VB, l'objet Form sera utilisé et Forms pour une collection de Forms.
Personnellement, tous ces différents termes ne m'empêchent pas de dormir...
cs_CanisLupus
Messages postés3757Date d'inscriptionmardi 23 septembre 2003StatutMembreDernière intervention13 mars 200621 8 mai 2005 à 13:22
D'abord, merci Guy pour ta démo avec une collection. Il faudra que je teste la rapidité d'exécution. A vu de museau, ça ne doit pas être le plus performant mais ça peut être utile parfois.
D'autre part, je te rejoins sur les Forms. Ca peut s'appeler autrement, du moment que chacun sache ce que ça recouvre. Reste encore le problème du sexe de cet objet. Perso, j'ai l'habitude de dire UN Form (si form est l'abréviation de formulaire ou la contraction de UN OBJET FORM) mais bon UN ou UNE .... je ne suis pas puriste dans ce cas (du moment que j'arrive à faire la différence ailleurs ).
--------------------------------------------------------
Dresseur de puces, .... normal pour un loup !?
ScSami
Messages postés1488Date d'inscriptionmercredi 5 février 2003StatutMembreDernière intervention 3 décembre 200724 8 mai 2005 à 19:38
Le sexe... j'y avait pas pensé!!! C'est
vrai ça... c'est une question pertinente... Perso, je préfère mettre le
plus de féminin que possible dans les termes informatiques parfois si
machos voire phallocratiques! Donc, je préfère dire "une form" même si
cela peut porter à confusion ("une forme"). Ceci dit, je crois que
l'anglophinie d'apparence si pragmatique n'a justement pas le charme
qu'apporte parfois si gracieusement le genre de nos langues latines...
Soutenons cependant l'effort de CS de promouvoir la francophonie si
rare sur le net. Mais ce n'est que mon point du vu... Pi de toutes
façons, on s'en fout complètement puisqu'on parlera tous chinois dans
moins de 50 ans!
Non mais c'est vrai qu'on s'en fout un peu du moment que l'on sait de
quoi on parle. Mais je tein à remercier Néo (et pas Néa... sorry ;-)
pour ces précisions. En effet, ignorant l'appellation donnée aux
fenêtres sous Access, je ne comprenais pas le pourquoi de "formulaire".
Mais maintenant, mes lanternes sont allumées et ma vision est plus
claire, merci.
CanisLupus, tu sais, tu as bien de la chance d'arriver à faire la différence ailleurs parce que parfois, c'est pas évident ;-)