Claiyah
Messages postés580Date d'inscriptionmercredi 20 août 2008StatutMembreDernière intervention20 avril 2010
-
7 mai 2009 à 15:59
Claiyah
Messages postés580Date d'inscriptionmercredi 20 août 2008StatutMembreDernière intervention20 avril 2010
-
9 mai 2009 à 16:59
bonjour
j'ai une variabe global: toutvar
dans laquel j'ajoute des noms, pour ajouter un nom je fait : toutvar = toutvar & nom
je cherche comment supprimer un nom qui existe dans la variable s.v.p
cs_Jack
Messages postés14006Date d'inscriptionsamedi 29 décembre 2001StatutModérateurDernière intervention28 août 201579 7 mai 2009 à 16:36
Salut
En fait, ton problème est de repérer un nom sans te tromper.
Exemple : Si dans ta chaine tu as "tototitikikijujutitine" et que tu veux supprimer "titi", tu risques aussi de supprimer le "titi" de "titine" situé à la fin.
Donc, il faut impérativement installer un séparateur entre chaque nom afin d'être sûr que le mot soit entier.
Par exemple, un "|" ou un vbTab, c'est à dire un caractère facile à détecter ET qui ne risque pas d'apparaitre dans ta liste :
toutvar = toutvar & leNom & vbTab
Ensuite, quand tu veux supprimer un des noms, il te suffira de trouver
vbTab & "leNom" & vbTab
et de le remplacer par
vbTab
avec, par exemple, l'instruction Replace
toutvar = Replace(toutvar, vbTab & "leNom" & vbTab, vbTab)
Cela amène d'autres considérations : Pour pouvoir trouver cette chaine, il faut qu'il y ait un vbTab au tout début de ta chaine (penser à le mettre lors de l'initialisation de ta chaine), ainsi qu'à la fin.
Sinon, il y a plus facile que de jongler avec les chaines : Les tableaux
Vala
Jack, MVP VB NB : Je ne répondrai pas aux messages privés
<hr />Le savoir est la seule matière qui s'accroit quand on la partage (Socrate)
cs_Jack
Messages postés14006Date d'inscriptionsamedi 29 décembre 2001StatutModérateurDernière intervention28 août 201579 9 mai 2009 à 05:58
VBA n'a jamais été un monstre de rapidité.
A toi de tester si ça tient la route.
Tester qu'une donnée est dans ta chaine peut se faire rapidement :
If Instr(1, maChaineComplète, maChaineQueJeCherche) > 0 Then
MsgBox "maChaineQueJeCherche est dans maChaineComplète"
End If
Vala
Jack, MVP VB NB : Je ne répondrai pas aux messages privés
<hr />Le savoir est la seule matière qui s'accroit quand on la partage (Socrate)
cs_Jack
Messages postés14006Date d'inscriptionsamedi 29 décembre 2001StatutModérateurDernière intervention28 août 201579 8 mai 2009 à 00:31
Les collections ont des avantages, mais sont beaucoup plus lentes que les tableaux.
Mais c'est vrai que dans ce genre d'appli, ça pourrait être intéressant (si pas besoin de trop jongler avec les enregistrements, notamment la supprssion qui est assez longue).
Vala
Jack, MVP VB NB : Je ne répondrai pas aux messages privés
<hr />Le savoir est la seule matière qui s'accroit quand on la partage (Socrate)
Vous n’avez pas trouvé la réponse que vous recherchez ?
Claiyah
Messages postés580Date d'inscriptionmercredi 20 août 2008StatutMembreDernière intervention20 avril 20103 8 mai 2009 à 13:07
exactement jack j'ai besoin d'un code tres rapide parceque ma variable peut se remplir et vider plus que 20 fois par secondes
a ce que je sais le parcours d'une variable est rapide c'est pour sa que je veut l'utilisé.
et aussi une autre question svp, jack pour ta solution elle est bonne et je vais l'accepter mais je veut savoir un truc stp:
'remplir la variable
toutvar = toutvar & leNom & vbTab
et vérifier si un nom existe dans la variale ou extraire un nom de la variabe ?
j'utilise nam = split(trouvar,vbtab) pui une boucle
for i = 0 to ubound(nam)
if nam(i) = newname then ...
else...
end if
ce n'est pas un peut long vue le nombre d'ajout et suppression par seconde ??