Variable global

Résolu
Claiyah Messages postés 580 Date d'inscription mercredi 20 août 2008 Statut Membre Dernière intervention 20 avril 2010 - 7 mai 2009 à 15:59
Claiyah Messages postés 580 Date d'inscription mercredi 20 août 2008 Statut Membre Dernière intervention 20 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

merci d'avance

Les yeux montrent la force de l'âme

6 réponses

cs_Jack Messages postés 14006 Date d'inscription samedi 29 décembre 2001 Statut Modérateur Dernière intervention 28 août 2015 79
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)
3
cs_Jack Messages postés 14006 Date d'inscription samedi 29 décembre 2001 Statut Modérateur Dernière intervention 28 août 2015 79
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)
3
Mayzz Messages postés 2813 Date d'inscription mardi 15 avril 2003 Statut Membre Dernière intervention 2 juin 2020 28
7 mai 2009 à 19:49
Salut,

Je me permet de dire encore plus facile : Les collections

'Constructeur
Dim Names As New Collection

'Ajour
Names.Add("Jacky")

'Récupération
Dim VarName As String = Names(0)

'Supression
Names.RemoveAt(0)

'Vidage
Names.Clear

Voila @+
0
cs_Jack Messages postés 14006 Date d'inscription samedi 29 décembre 2001 Statut Modérateur Dernière intervention 28 août 2015 79
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)
0

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

Posez votre question
Claiyah Messages postés 580 Date d'inscription mercredi 20 août 2008 Statut Membre Dernière intervention 20 avril 2010 3
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 ??

merci encore
Les yeux montrent la force de l'âme
0
Claiyah Messages postés 580 Date d'inscription mercredi 20 août 2008 Statut Membre Dernière intervention 20 avril 2010 3
9 mai 2009 à 16:59
merci jack

Les yeux montrent la force de l'âme
0
Rejoignez-nous