Racourcir du code vb6

Résolu
Signaler
Messages postés
2
Date d'inscription
samedi 26 février 2005
Statut
Membre
Dernière intervention
2 juin 2007
-
Messages postés
693
Date d'inscription
samedi 18 mai 2002
Statut
Membre
Dernière intervention
17 avril 2017
-
bonjour a tous je voudrais raccourcire mon code Vb mais je n'y arrive pas , si quelqu'un pouvais m’aider
Merci pour toute réponse
If Label1.Caption = "1" Then
Image1.Visible = False
Image2.Visible = False
Image3.Visible = False
Image4.Visible = False
Image5.Visible = False
Image6.Visible = False
Image7.Visible = False
Image8.Visible = False
Image9.Visible = False
Image10.Visible = False
Image11.Visible = False
Image12.Visible = False
Image14.Visible = False
Image15.Visible = False
Image16.Visible = False
Image17.Visible = False
Image18.Visible = False
Image19.Visible = False
Image20.Visible = False
Image21.Visible = False
Image22.Visible = False
Image23.Visible = False
Image24.Visible = False
Image25.Visible = False
Image26.Visible = False
Image27.Visible = False
Image28.Visible = False
Image29.Visible = True
Label1.Caption = "29"



Label5.Visible = True
Label6.Visible = True
Label7.Visible = True
Text4.Visible = True
Text5.Visible = True
Text6.Visible = True
Exit Sub
Else

15 réponses

Messages postés
6786
Date d'inscription
vendredi 16 décembre 2005
Statut
Membre
Dernière intervention
21 décembre 2011
18
Salut,

solution de secours :

For i = 1 to 29
    Me.Controls("Image" & Str$(i)).Visible = False
Next i
~
<small>[code.aspx?ID=39466 Mortalino] ~
Colorisation automatique</small>

Mais la soluce de DarkSidious est à préférer 

@++

<hr size="2" width="100%" />( Nouveau forum : Exclusivement Office & VBA
Messages postés
15814
Date d'inscription
jeudi 8 août 2002
Statut
Modérateur
Dernière intervention
4 mars 2013
131
Créer un groupe de contrôle, c'est fait pour cà !

même nom pour tout tes contrôles Image, avec un numéro d'index, et du coup cà donne :
dim i As Integer
for i = 1 to 29
    Image(i).Visible = False
next i
Messages postés
2
Date d'inscription
samedi 26 février 2005
Statut
Membre
Dernière intervention
2 juin 2007

merci de votre aide


la solution de mortalino marche parfaitement mais celle de DarkSidious me mais un message d'erreur ( invalid qualifer)
Messages postés
6786
Date d'inscription
vendredi 16 décembre 2005
Statut
Membre
Dernière intervention
21 décembre 2011
18
Oui, car il faut créer un groupe de contrôles..
En gros, tu places un contrôle image nommée MyImage.
Tu le copies, et quand tu fais coller, il te propose de créer un groupe de contrôles. Tu dis Oui, et ils sont indexés (MyImage(0), MyImage(1), etc..)

@++

<hr size="2" width="100%" />( Nouveau forum : Exclusivement Office & VBA
Messages postés
693
Date d'inscription
samedi 18 mai 2002
Statut
Membre
Dernière intervention
17 avril 2017
2
Bonjour,

For i =  1 to 29
    Me.Controls("Image" &  Trim$(
Str$(i))).Visible  = False
Next i

Trim$ te permet de supprimer l'espace devant le nombre converti en chaîne, c'est sûrement pour cela que tu récupères un message d'erreur. (du moins je présume...)

Oui, c'est sûr il est quand mêm préférable de créer un groupe de contrôle.

Bonne prog @+
Messages postés
6786
Date d'inscription
vendredi 16 décembre 2005
Statut
Membre
Dernière intervention
21 décembre 2011
18
Salut,

i est une valeur numérique.. Que vient faire l'espace la-dedans ???
Trim est inutile (la preuve, ma méthode fonctionne comme je l'avais indiqué). Son problème est avec le groupe de contrôles

@++

<hr size="2" width="100%" />( Nouveau forum : Exclusivement Office & VBA
Messages postés
693
Date d'inscription
samedi 18 mai 2002
Statut
Membre
Dernière intervention
17 avril 2017
2
Bonjour Mortalino,

Essayes ceci :    a = 10:  Print Len(Str(a))
et tu obtiens bien une chaine de 3 caractères, avec un espace devant !

Print "ZOZO" & str(a) devient ZOZO 10

Bonne soirée
Messages postés
6786
Date d'inscription
vendredi 16 décembre 2005
Statut
Membre
Dernière intervention
21 décembre 2011
18
Bah merci du tuyau, je m'incline..
Je viens de jeter un oeil à l'aide en ligne, et effectivement Str rajoute un espace aux valeurs positives.

@++

<hr size="2" width="100%" />( Nouveau forum : Exclusivement Office & VBA
Messages postés
693
Date d'inscription
samedi 18 mai 2002
Statut
Membre
Dernière intervention
17 avril 2017
2
Re Mortalino,

Je dirais même plus, l'espace est réservé pour le signe négatif.

Donc dans ton exemple tu as toujours Image 1, Image 2 au lieu de Image1...

Me trompes-je ?, Rassures-moi car sinon il va falloir que je révise pas mal de choses, hi.

Bien cordialement de Cheyenne
Messages postés
146
Date d'inscription
dimanche 23 janvier 2005
Statut
Membre
Dernière intervention
17 novembre 2009
1
Autant utiliser Cstr qui ne met pas d'espace devant un nombre >0 !

@+
Messages postés
6786
Date d'inscription
vendredi 16 décembre 2005
Statut
Membre
Dernière intervention
21 décembre 2011
18
C'est bon, laisse tomber les révisions, tu as 20/20

For i = 1 to 29
    Me.Controls("Image" & Str$(i)).Visible = False
Next i

>> objets Introuvables..
Avec MsgBox, l'espace est présent. Donc ton Trim est justifié

@++

<hr size="2" width="100%" />( Nouveau forum : Exclusivement Office & VBA
Messages postés
6786
Date d'inscription
vendredi 16 décembre 2005
Statut
Membre
Dernière intervention
21 décembre 2011
18
Mikaels35 : Oui, c'est certain
Alors dans ce cas je pousse même le vice plus loin : autant ne rien utiliser. Bien que i soit numérique, Me.Controls("Image" & i)   fonctionne très bien

@++

<hr size="2" width="100%" />( Nouveau forum : Exclusivement Office & VBA
Messages postés
693
Date d'inscription
samedi 18 mai 2002
Statut
Membre
Dernière intervention
17 avril 2017
2
OUF, tu me rassures, Mortalino, je range les bouqins, hi...

Hé bien oui, Mickael35, le Cstr ! pourquoi n'y ai-je pas pensé. Oh là, je vieillis moi (60 ans), c'est pas bon signe tout ça.

Allez, bon weke-end à tous

Cheyenne
Messages postés
7668
Date d'inscription
samedi 5 novembre 2005
Statut
Membre
Dernière intervention
22 août 2014
27
Hé ! Cheyenne !
T'es encore bien jeune pour parler de sénilité !
Ca va pas la tête ?
J'ai connu un vieux dont la disparition a été très douloureuse pour moi (à 90 ans, il me battait, y compris en mathématiques très poussées - du niveau maths spe - alors qu'il avait interrompu sa scolarité à 11 ans sans même avoir obtenu son certificat d'études primaires et que sa formation dans ce domaine résultaot uniquement de ses lectures, y compris celles de mes cours...)
Soicxante ans, dis-tu ? T'es encore un galopin, va ...
Messages postés
693
Date d'inscription
samedi 18 mai 2002
Statut
Membre
Dernière intervention
17 avril 2017
2
Hé ! jmfmarques !

En fait j'étais vexé de ne pas avoir pensé à la fonction Cstr, alors j'ai essayé de m'en sortir par une pirouette.
Je n'ai pas quand même été jusqu'à mettre entre cause la sénélité, mais simplement, pour 'blaguer', de ses prémices.

J'ai bien noté, parmi une de tes nombreuses et pertinentes interventions, la façon de calculer un âge. Où, diable, es-tu allé chercher celà, c'est très astucieux.  

Le galopin te salue bien et te souhaite une bonne nuit.

Au plaisir.