OVH Cloud OVH Cloud

Tester la presence d'un noeud dans treeview

8 réponses
Avatar
Nemric
Bonjour et bonne année,
je souhaite tester la presence d'un noeud (node) dans un treeview sans
parcourir avec du code tous les items.
càd, simplement, verifier si le noeud (par ex) "catergorie" existe ou pas
dans ma collection de noeuds avec une ligne du genre (qui ne marche pas) ...
:

if notexist treeview.nodes("categorie") then
...
end if

Si vous avez un indice ...

Merci ...
Nemric

8 réponses

Avatar
François Picalausa
Hello,

Si tu as affecté une clé unique (Key) à catégorie, tu peux, en jouant sur la
gestion d'erreurs, retrouver ta clé.
Exemple:

On Error Resume Next
TreeView1.Nodes.Add , , "categorie", "Catégorie"
If TreeView1.Nodes("categorie") Is Nothing Then
MsgBox "Inexistant"
Else
MsgBox TreeView1.Nodes("categorie").Text
End If

--
François Picalausa

"Nemric" a écrit dans le message de news:
%
Bonjour et bonne année,
je souhaite tester la presence d'un noeud (node) dans un treeview sans
parcourir avec du code tous les items.
càd, simplement, verifier si le noeud (par ex) "catergorie" existe ou
pas dans ma collection de noeuds avec une ligne du genre (qui ne
marche pas) ...




if notexist treeview.nodes("categorie") then
...
end if


Avatar
Nemric
Salut,
j'ai touver une autre facon entre temps pour eviter d'avoir a tester le
presence du node.
cependant j'ai tester ta solution, qui ne fonctionee pas, il y a avant la
fonction "is nothing" l'erreur "element introuvable" sur
"treeview.nodes("categorie")" si elle n'existe pas.

merci quand même ;)

Nemric


Hello,

Si tu as affecté une clé unique (Key) à catégorie, tu peux, en jouant sur
la gestion d'erreurs, retrouver ta clé.
Exemple:

On Error Resume Next
TreeView1.Nodes.Add , , "categorie", "Catégorie"
If TreeView1.Nodes("categorie") Is Nothing Then
MsgBox "Inexistant"
Else
MsgBox TreeView1.Nodes("categorie").Text
End If

--
François Picalausa


Avatar
Zoury
Hug!

cependant j'ai tester ta solution, qui ne fonctionee pas, il y a avant la
fonction "is nothing" l'erreur "element introuvable" sur
"treeview.nodes("categorie")" si elle n'existe pas.



c'est le noeud catégorie qui n'existe pas ou le Treeview (treeview ou
treeview1) ?



--
Cordialement
Yanick
MVP pour Visual Basic

merci quand même ;)

Nemric


> Hello,
>
> Si tu as affecté une clé unique (Key) à catégorie, tu peux, en jouant


sur
> la gestion d'erreurs, retrouver ta clé.
> Exemple:
>
> On Error Resume Next
> TreeView1.Nodes.Add , , "categorie", "Catégorie"
> If TreeView1.Nodes("categorie") Is Nothing Then
> MsgBox "Inexistant"
> Else
> MsgBox TreeView1.Nodes("categorie").Text
> End If
>
> --
> François Picalausa




Avatar
Nemric
Salut et merci,
j'ai donné le bon nom treeview.nodes("X")
lorsqu'X existe c'est ok mais lorsqu'il n'existe pas il y a l'erreur
"'element introuvable"
ne t'en fait pas j'ai trouver autre chose de plus fiable ... par contre il
serait interrassant de savoir pourquoi ca marche pas comme on voudrais ...

Nemric
Avatar
Zoury
t'a bien pris l'exemple de François tel quel ?

car le On Error Resume Next permet justement de ne pas recevoir cette erreur
à l'écran, mais plutôt de pouvoir la gèrer dans le code.


ne t'en fait pas j'ai trouver autre chose de plus fiable ...



tiens tiens.. et c'est quoi ? (si ce n'est pas trop indiscret).


--
Cordialement
Yanick
MVP pour Visual Basic
Avatar
Nemric
Effectivement j'ai pas utiliser le "on error resume next" car j'ai remarqué
il y a un bon moment que cela fonctionne pour le premiere erreur mais pour
le deuxieme, l'erreur apparait belle et bien ;)
En même temps, c'etait plutôt une gestion d'erreur assez "peu recommander"
puisque je generer une erreur pour tester, avoir le num d'erreur
(err.number) et agir en consequence et la c'est vrai que au 2 eme coup,
l'erreur n'etait plus gerer ... en tout cas, je n'en ai plus besoin ...

Bref, le truc plus fiable est tout simplement une meilleur gestion du
treeview, mieu structurer, qui me mermet de na pas avoir a verifier la
présence du node puisque je sais a l'avance s'il existe ou pas ;) et ca
marche tres bien, en moin de lignes de code ...

Merci encore
Avatar
Zoury
Salut!

En même temps, c'etait plutôt une gestion d'erreur assez "peu recommander"
puisque je generer une erreur pour tester, avoir le num d'erreur



AMHA, ça, c'est une fausse croyance. Une "erreur" (j'aime le terme Exception
utiliser en .NET) n'est rien de plus que de l'information retourné au
programmeur. Dans certain cas il est plus rapide de tester une erreur que de
la prévenir. Mais ce sujet à été débattue en long et en large ici, et reste
toujours d'actualité il semblerait :O)

(err.number) et agir en consequence et la c'est vrai que au 2 eme coup,
l'erreur n'etait plus gerer



ah oui ? avais-tu réinitialiser l'objet Err ?
'***
If (Err.Number > 0) then
' faire de quoi ici
Err.Clear
End if
'***


Bref, le truc plus fiable est tout simplement une meilleur gestion du
treeview, mieu structurer



Effectivement, ;O)


--
Cordialement
Yanick
MVP pour Visual Basic
Avatar
Nemric
Bon plan le err.clear !
justement j'en ai besoin aujourd'hui, merci !
je suis assez d'accord sur le fait que l'erreur et un renvoi d'info,
d'ailleurs c'est ce que je dois faire pour savoir si je dois reinitialisé
une variable tableau ou pas en testant la presence de la derniere valeur ...
je passe les détails c'est pas le sujet ...

merci a tous