Racourcir du code vb6

Résolu
gpinkie Messages postés 2 Date d'inscription samedi 26 février 2005 Statut Membre Dernière intervention 2 juin 2007 - 2 juin 2007 à 17:26
cs_cheyenne Messages postés 693 Date d'inscription samedi 18 mai 2002 Statut Membre Dernière intervention 17 avril 2017 - 2 juin 2007 à 22:11
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

mortalino Messages postés 6786 Date d'inscription vendredi 16 décembre 2005 Statut Membre Dernière intervention 21 décembre 2011 18
2 juin 2007 à 17:42
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
3
cs_DARKSIDIOUS Messages postés 15814 Date d'inscription jeudi 8 août 2002 Statut Membre Dernière intervention 4 mars 2013 130
2 juin 2007 à 17:33
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
0
gpinkie Messages postés 2 Date d'inscription samedi 26 février 2005 Statut Membre Dernière intervention 2 juin 2007
2 juin 2007 à 18:17
merci de votre aide


la solution de mortalino marche parfaitement mais celle de DarkSidious me mais un message d'erreur ( invalid qualifer)
0
mortalino Messages postés 6786 Date d'inscription vendredi 16 décembre 2005 Statut Membre Dernière intervention 21 décembre 2011 18
2 juin 2007 à 18:20
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
0

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

Posez votre question
cs_cheyenne Messages postés 693 Date d'inscription samedi 18 mai 2002 Statut Membre Dernière intervention 17 avril 2017 2
2 juin 2007 à 18:27
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 @+
0
mortalino Messages postés 6786 Date d'inscription vendredi 16 décembre 2005 Statut Membre Dernière intervention 21 décembre 2011 18
2 juin 2007 à 18:32
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
0
cs_cheyenne Messages postés 693 Date d'inscription samedi 18 mai 2002 Statut Membre Dernière intervention 17 avril 2017 2
2 juin 2007 à 19:47
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
0
mortalino Messages postés 6786 Date d'inscription vendredi 16 décembre 2005 Statut Membre Dernière intervention 21 décembre 2011 18
2 juin 2007 à 19:57
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
0
cs_cheyenne Messages postés 693 Date d'inscription samedi 18 mai 2002 Statut Membre Dernière intervention 17 avril 2017 2
2 juin 2007 à 20:06
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
0
Mikaels35 Messages postés 146 Date d'inscription dimanche 23 janvier 2005 Statut Membre Dernière intervention 17 novembre 2009 2
2 juin 2007 à 20:11
Autant utiliser Cstr qui ne met pas d'espace devant un nombre >0 !

@+
0
mortalino Messages postés 6786 Date d'inscription vendredi 16 décembre 2005 Statut Membre Dernière intervention 21 décembre 2011 18
2 juin 2007 à 20:13
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
0
mortalino Messages postés 6786 Date d'inscription vendredi 16 décembre 2005 Statut Membre Dernière intervention 21 décembre 2011 18
2 juin 2007 à 20:15
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
0
cs_cheyenne Messages postés 693 Date d'inscription samedi 18 mai 2002 Statut Membre Dernière intervention 17 avril 2017 2
2 juin 2007 à 20:36
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
0
jmfmarques Messages postés 7666 Date d'inscription samedi 5 novembre 2005 Statut Membre Dernière intervention 22 août 2014 27
2 juin 2007 à 20:58
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 ...
0
cs_cheyenne Messages postés 693 Date d'inscription samedi 18 mai 2002 Statut Membre Dernière intervention 17 avril 2017 2
2 juin 2007 à 22:11
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.
0
Rejoignez-nous