Présence d'un objet sur une Form [Résolu]

Signaler
Messages postés
330
Date d'inscription
mercredi 6 décembre 2000
Statut
Membre
Dernière intervention
26 octobre 2017
-
Messages postés
330
Date d'inscription
mercredi 6 décembre 2000
Statut
Membre
Dernière intervention
26 octobre 2017
-
Bonjour,


J'ai plusieurs labels indexés dans une form.


QUESTION: Je souhaiterais pouvoir tester la présence d'un label dans ma form


Exemple:

Si Label1(12) existe then
msgbox "Existe
else
msgbox "n'Existte pas


Par avance merci.

18 réponses

Messages postés
18038
Date d'inscription
lundi 7 décembre 2009
Statut
Modérateur
Dernière intervention
11 avril 2018
229
Si ton groupe de contrôle est bien nommé Label1, aucun problème.
Si par contre tu es en Option Explicit, il te faut bien évidemment déclarer item ===>>
Private Function verifie_si_existe(toto As Object, i As Integer) As Boolean
  Dim item As Object '<<<<<<<=======
  For Each item In toto
   If item.Index i Then verifie_si_existe True
  Next
End Function


Testé chez moi ==>> OK

____________________
Réponse exacte ? => "REPONSE ACCEPTEE" pour faciliter les recherches d'autres forumeurs.
Pas d'aide en ligne installée ? ==> ne comptez pas sur moi pour simplement vous dire ce qu'elle contient
Messages postés
18038
Date d'inscription
lundi 7 décembre 2009
Statut
Modérateur
Dernière intervention
11 avril 2018
229
Ma réponse donnée samedi est donc bonne.
Je viens de la tester ===>>
Teste donc :
un Form avec un Label Label1 et sa propriété index = 0

Private Sub Form_Activate()
 Load Label1(4)
 Label1(4).Visible = True
 Label1(4).Move 0, Label1(0).Top + Label1(0).Height
 Dim i As Integer
 For i = 0 To 6
   MsgBox "label1(" & i & ")===>>>  " & verifie_si_existe(Label1, i)
 Next
End Sub
 
 Private Function verifie_si_existe(toto As Object, i As Integer) As Boolean
  Dim item As Object '<<<<<<<=======
  For Each item In toto
   If item.Index i Then verifie_si_existe True
  Next
End Function


True sera renvoyé pour Label1(0) et Label1(4) et false pour les autres.



____________________
Réponse exacte ? => "REPONSE ACCEPTEE" pour faciliter les recherches d'autres forumeurs.
Pas d'aide en ligne installée ? ==> ne comptez pas sur moi pour simplement vous dire ce qu'elle contient
Messages postés
14727
Date d'inscription
vendredi 14 mars 2003
Statut
Modérateur
Dernière intervention
29 septembre 2020
144
Bonjour,

Soit tu utilises Lable1.Count
Ou alors, passer par On Error.

---------------------------------------------------------------------
[list=ordered][*]Pour poser correctement une question et optimiser vos chances d'obtenir des réponses, pensez à lire le règlement CS, celui-ci pour bien poser votre question ou encore celui-ci pour les PFE et autres exercices[*]Quand vous postez un code, merci d'utiliser la coloration syntaxique (3ième icône en partant de la droite : )
[*]En VB.NET pensez à activer Option Explicit et Option Strict (propriété du projet) et à retirer l'import automatique de l'espace de nom Microsoft.VisualVasic (onglet Références dans les propriétés du projet).
[*]Si votre problème est résolu (et uniquement si c'est le cas), pensez à mettre "Réponse acceptée" sur le ou les messages qui vous ont aidés./list
---
Mon site
Messages postés
330
Date d'inscription
mercredi 6 décembre 2000
Statut
Membre
Dernière intervention
26 octobre 2017

label1.count --> ne répond pas à la question ---> Si Label1(12) existe then

On error ne marche pas si l'objet n'existe pas

------------------------------------------------------------------------------------------

Vous pouvez toujours faire un essai pour vérifier (il faut 3 ou quatre instructions dans un projet)
Messages postés
14727
Date d'inscription
vendredi 14 mars 2003
Statut
Modérateur
Dernière intervention
29 septembre 2020
144
Bonjour,

Tu as essayé quel code ?
(voir le point 2 de ma signature)

---------------------------------------------------------------------
[list=ordered][*]Pour poser correctement une question et optimiser vos chances d'obtenir des réponses, pensez à lire le règlement CS, celui-ci pour bien poser votre question ou encore celui-ci pour les PFE et autres exercices[*]Quand vous postez un code, merci d'utiliser la coloration syntaxique (3ième icône en partant de la droite : )
[*]En VB.NET pensez à activer Option Explicit et Option Strict (propriété du projet) et à retirer l'import automatique de l'espace de nom Microsoft.VisualVasic (onglet Références dans les propriétés du projet).
[*]Si votre problème est résolu (et uniquement si c'est le cas), pensez à mettre "Réponse acceptée" sur le ou les messages qui vous ont aidés./list
---
Mon site
Messages postés
18038
Date d'inscription
lundi 7 décembre 2009
Statut
Modérateur
Dernière intervention
11 avril 2018
229
Tu as donc mal utilisé Label1.count.

Mais voilà une solution simple, également :
Private Sub Command1_Click()
 MsgBox verifie_si_existe(Label1, 1) '<<<=== ou Label1 est le nom du groupe et 1 (par exemple) l'index à vérifier.
End Sub

Private Function verifie_si_existe(toto As Object, i As Integer) As Boolean
  For Each Item In toto
   If Item.Index i Then verifie_si_existe True
  Next
End Function


____________________
Réponse exacte ? => "REPONSE ACCEPTEE" pour faciliter les recherches d'autres forumeurs.
Pas d'aide en ligne installée ? ==> ne comptez pas sur moi pour simplement vous dire ce qu'elle contient
Messages postés
330
Date d'inscription
mercredi 6 décembre 2000
Statut
Membre
Dernière intervention
26 octobre 2017

Pas de chance, ça ne marche pas chez Moi -> Microsoft VB6

MsgBox verifie_si_existe(Label1, 15)

Erreur de Compilation --> Variable non Définie (Sur Label1)
Messages postés
330
Date d'inscription
mercredi 6 décembre 2000
Statut
Membre
Dernière intervention
26 octobre 2017

J'ai ajouté la déclaration dans la procédure. J'ai toujours le même message d'erreur

Erreur de Compilation --> Variable non Définie (Sur Label1)

--> MsgBox verifie_si_existe(Label1, 15)

------------------------------------------------------------------------------------------
J'ai supprimé Option Explicit et, après celà, j'ai le messsage

Un objet est Requis --> MsgBox verifie_si_existe((Label1), 15)
Messages postés
14727
Date d'inscription
vendredi 14 mars 2003
Statut
Modérateur
Dernière intervention
29 septembre 2020
144
Bonjour,

Comment s'appelle ton groupe de Label ?

---------------------------------------------------------------------
[list=ordered][*]Pour poser correctement une question et optimiser vos chances d'obtenir des réponses, pensez à lire le règlement CS, celui-ci pour bien poser votre question ou encore celui-ci pour les PFE et autres exercices[*]Quand vous postez un code, merci d'utiliser la coloration syntaxique (3ième icône en partant de la droite : )
[*]En VB.NET pensez à activer Option Explicit et Option Strict (propriété du projet) et à retirer l'import automatique de l'espace de nom Microsoft.VisualVasic (onglet Références dans les propriétés du projet).
[*]Si votre problème est résolu (et uniquement si c'est le cas), pensez à mettre "Réponse acceptée" sur le ou les messages qui vous ont aidés./list
---
Mon site
Messages postés
728
Date d'inscription
samedi 4 avril 2009
Statut
Membre
Dernière intervention
30 mars 2014
4
Bonjour Cjvg,

C'est toi qui crées les objets ou ton programme via un utilisateur, alors tu pourrais être en mesure de savoir ce que tu fais, par exemple en mettant dans une liste les noms de ces derniers...

Cordiakelent, Joe.
Messages postés
330
Date d'inscription
mercredi 6 décembre 2000
Statut
Membre
Dernière intervention
26 octobre 2017

Ce matin j'ai deux nouveaux messages dans ma boite à lettre mais aucune nouvelle réponse sur le site ?...
Messages postés
728
Date d'inscription
samedi 4 avril 2009
Statut
Membre
Dernière intervention
30 mars 2014
4
Suite,

En bas, sous les messages tu as des boutons, tu es sur la page deux, vas sur la une pour lire...

Cordialement, Joe.
Messages postés
330
Date d'inscription
mercredi 6 décembre 2000
Statut
Membre
Dernière intervention
26 octobre 2017

Bonjour,

Je n'ai pas sur la page 1 les messages correspondants aux mails que j'ai reçus ce matin.

Ce n'est pas la première fois que ça se produit

Merci.
Messages postés
330
Date d'inscription
mercredi 6 décembre 2000
Statut
Membre
Dernière intervention
26 octobre 2017

Bonjour,

Dans ce programme je génére des objets avec l'instruction "Load Label(Iobjet)" et, dans certains cas, je les supprime avec l'instruction "Unload label(Iobjet)".
J'ai, comme vous le suggérez mis à jour une zone de travail contenant la liste de tous les objets actifs.

Je souhaitais pour des raisons personnelles supprimer cette liste et la remplacer en utilisant la technique qui me pose problème comme cela est indiqué dans ma question initiale.

Merci encore
Messages postés
330
Date d'inscription
mercredi 6 décembre 2000
Statut
Membre
Dernière intervention
26 octobre 2017

???????????????????????????????????????????????????????????????????????????????????????????

J'ai reçu deux Mails Hiers au soir Datés du Samedi 31/03 20h23 et du Dimanche 1/04 9h45

J'ai eu les réponses sur le Site aujourd'hui 1er Avril en début d'après midi

???????????????????????????????????????????????????????????????????????????????????????????
Messages postés
18038
Date d'inscription
lundi 7 décembre 2009
Statut
Modérateur
Dernière intervention
11 avril 2018
229
Ton premier message mentionne un groupe de contrôles indexés. Le groupe étant nommé Label1
Pour mémoire :
Si Label1(12) existe then
msgbox "Existe
else
msgbox "n'Existte pas

Et tu dis maintenant :
Dans ce programme je génére des objets avec l'instruction "Load Label(Iobjet)"

Peux-tu s'il te plait nous éclairer avec plus de précisions sur la situation exacte ?
Qu'as-tu exactement in fine (à la suite des load) ? Noms et indexes si groupes indexés.

____________________
Réponse exacte ? => "REPONSE ACCEPTEE" pour faciliter les recherches d'autres forumeurs.
Pas d'aide en ligne installée ? ==> ne comptez pas sur moi pour simplement vous dire ce qu'elle contient
Messages postés
330
Date d'inscription
mercredi 6 décembre 2000
Statut
Membre
Dernière intervention
26 octobre 2017

Label1(1) - label1(2) - label1(3) - label1(4) .......... label1(?)

A l'exécution j'en ajoute et je vais peut-être retirer le 8 ou le 12 ou un autre.
Messages postés
330
Date d'inscription
mercredi 6 décembre 2000
Statut
Membre
Dernière intervention
26 octobre 2017

La procédure fonctionne parfaitement.

J'ai même refait un autre essai avec la première procédure que vous avez donnée. Tout comme la dernière, elle fonctionne également parfaitement.

Je ne sais pas comment j'ai procédé la première fois. A l'exécution elle tombait bien erreur
comme je l'ai indiqué plus haut.

Mea-culpa

Encore Merci