Boucle

Résolu
baltazar85 Messages postés 40 Date d'inscription mercredi 31 mai 2006 Statut Membre Dernière intervention 30 juin 2006 - 15 juin 2006 à 10:21
baltazar85 Messages postés 40 Date d'inscription mercredi 31 mai 2006 Statut Membre Dernière intervention 30 juin 2006 - 16 juin 2006 à 09:37
788121
 bonjour ,
tout le monde alors voila j'ai fait un bout de programme qui marche mais je vourdrais arriver a le ratraicir un peu car je trouve ca lourd.

Le but de ce bout de programme et d'envoyer a des maskedtextbox les coordonnées d'origine soit d'un textbox , soit d'un combobox ou encore d'un datetimepiker.

voici le code:
If

ComboBox2.Text = "montantNumérique" Then
MaskedTextBox1.Text = montantNumerique.Location.X
MaskedTextBox2.Text = montantNumerique.Location.Y

End
If
If ComboBox2.Text =
"montantLettre1"
Then
MaskedTextBox1.Text = montantLettre1.Location.X
MaskedTextBox2.Text = montantLettre1.Location.Y

End
If
If ComboBox2.Text =
"montantLettre2"
Then
MaskedTextBox1.Text = montantLettre2.Location.X
maskedTextBox2.Text = montantLettre2.Location.Y

End
If
If ComboBox2.Text =
"lieu"
Then
MaskedTextBox1.Text = lieu.Location.X
MaskedTextBox2.Text = lieu.Location.Y

End
If
If ComboBox2.Text =
"beneficiaire"
Then
MaskedTextBox1.Text = beneficiaire.Location.X
MaskedTextBox2.Text = beneficiaire.Location.Y

End
If
If ComboBox2.Text =
"date1"
Then
MaskedTextBox1.Text = date1.Location.X
MaskedTextBox2.Text = date1.Location.Y

End
If

Je voudrais savoir s'il n'existe pas une boucle pour faire la meme chose mais en beaucoup moins de ligne svp?

je pose cet question car en navigant sur ce site il me semble avoir vu une astuce de ce style mais je ne la retrouve pas

je vous remercie de vos reponse d'avance

17 réponses

Utilisateur anonyme
15 juin 2006 à 10:28
Boarf tu ne pourra pas rétrécir grand chose, mise a par tout tes IF que tu transforme en un SelonSelon : <?xml:namespace prefix o ns "urn:schemas-microsoft-com:office:office" /?>

Select case ComboBox2.TexT

            Case = "montantNumérique" 
                        Actions

            Case = "montantLettre1"
                        Actions

            …

            Case else

                        Actions

End select
3
Polack77 Messages postés 1098 Date d'inscription mercredi 22 mars 2006 Statut Membre Dernière intervention 22 octobre 2019 1
15 juin 2006 à 10:33
Je ne pense pas qu'une boucle t'aiderais. mais une salection oui. Je m'explique plutot que de faire des "if" sucsésif faire un "select case". Voila la bout de code :

Select Case ComboBox2.Text
    Case "montantNumérique":
        MaskedTextBox1.Text = montantNumerique.Location.X
        MaskedTextBox2.Text = montantNumerique.Location.Y
    Case "montantLettre1":
        MaskedTextBox1.Text = montantLettre1.Location.X
        MaskedTextBox2.Text = montantLettre1.Location.Y
    Case "montantLettre2":
        MaskedTextBox1.Text = montantLettre2.Location.X
        MaskedTextBox2.Text = montantLettre2.Location.Y
    Case "lieu":
        MaskedTextBox1.Text = lieu.Location.X
        MaskedTextBox2.Text = lieu.Location.Y
    Case "beneficiaire":
        MaskedTextBox1.Text = beneficiaire.Location.X
        MaskedTextBox2.Text = beneficiaire.Location.Y
    Case "date1":
        MaskedTextBox1.Text = date1.Location.X
        MaskedTextBox2.Text = date1.Location.Y
End Select

P.S.: Ton code serait plus rapide comme cas :

If ComboBox2.Text = "montantNumérique" Then
    MaskedTextBox1.Text = montantNumerique.Location.X
    MaskedTextBox2.Text = montantNumerique.Location.Y
ElseIf ComboBox2.Text = "montantLettre1" Then
    MaskedTextBox1.Text = montantLettre1.Location.X
    MaskedTextBox2.Text = montantLettre1.Location.Y
ElseIf ComboBox2.Text = "montantLettre2" Then
    MaskedTextBox1.Text = montantLettre2.Location.X
    MaskedTextBox2.Text = montantLettre2.Location.Y
ElseIf ComboBox2.Text = "lieu" Then
    MaskedTextBox1.Text = lieu.Location.X
    MaskedTextBox2.Text = lieu.Location.Y
ElseIf ComboBox2.Text = "beneficiaire" Then
    MaskedTextBox1.Text = beneficiaire.Location.X
    MaskedTextBox2.Text = beneficiaire.Location.Y
ElseIf ComboBox2.Text = "date1" Then
    MaskedTextBox1.Text = date1.Location.X
    MaskedTextBox2.Text = date1.Location.Y
End If

Plus rapide car si "ComboBox2.Text" est agale à "montantLettre1" alors les autre test ne seront pas fait (soit le même comportement que le "select case").

D'oh! Nuts!
Mmmmm...
 DONUTS
3
baltazar85 Messages postés 40 Date d'inscription mercredi 31 mai 2006 Statut Membre Dernière intervention 30 juin 2006
15 juin 2006 à 10:23
je suis en vb.net sous visual studio 2005 pour information

PS : desole pour l'écriture en gros en bas
0
Utilisateur anonyme
15 juin 2006 à 10:28
recopie pas le Selon en bleu dans ton code
0

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

Posez votre question
Utilisateur anonyme
15 juin 2006 à 10:29
arf ma réponse c'est pour du VB6, je ne connais pas encore le VB.NET donc je ne peux pas te dire si ca marchera
0
cs_drahcir Messages postés 745 Date d'inscription mardi 30 novembre 2004 Statut Membre Dernière intervention 15 septembre 2009 4
15 juin 2006 à 10:58
oui blinix, ça marche aussi en vb.net!!!
0
Utilisateur anonyme
15 juin 2006 à 11:16
Juste pour ton information, avec tes IF, ton processeur fais tous les if 1 par 1, donc ca prend de la mémoire, avec le SELECT, des qu'une solution marche, le programme termine le SELECT et continue le programme, donc tu y gagne en vitesse et en mémoire
(J'espere avoir été clair )
Comme l'a si bien dit Polack77 en fait
0
Polack77 Messages postés 1098 Date d'inscription mercredi 22 mars 2006 Statut Membre Dernière intervention 22 octobre 2019 1
15 juin 2006 à 11:18
Pense à valider la(les) réponse(s) qui t'on permit de régler
ton problème.





D'oh! Nuts!
Mmmmm...
 DONUTS
0
jrivet Messages postés 7392 Date d'inscription mercredi 23 avril 2003 Statut Membre Dernière intervention 6 avril 2012 60
15 juin 2006 à 11:24
Salut,

Je sais que c'est du Point NET

Mais en vb6 il est possible de passer en revue tout les controles d'une feuille (en esperant que date1, Montantlettre... soit des control)

Après il faut adapter la boucle au Langage .NET

Dim ctrl As Control 

For Each ctrl In Me.Controls 
    If ctrl.Name = ComboBox2.Text Then 
        MaskedTextBox1.Text = ctrl.Location.X 
        MaskedTextBox1.Text = ctrl.Location.Y 
    End If 
Next 
 

<small> Coloration syntaxique automatique [AFCK]</small>
       

@+, Julien
Pensez: Moteur de Recherche, Réponse Acceptée
0
baltazar85 Messages postés 40 Date d'inscription mercredi 31 mai 2006 Statut Membre Dernière intervention 30 juin 2006
15 juin 2006 à 11:40
a d'accord je pense que je vais prendre l'option select case pour gagner en rapiditer et en mémoire

merci pour vos reponse

jrivet
qu'est que t'appel des control?
un textbox ,combobox et datetimerpicker sans est?

ta solution je vais l'essayer la garder au cas ou  que j'en ai besoin plus tard
0
baltazar85 Messages postés 40 Date d'inscription mercredi 31 mai 2006 Statut Membre Dernière intervention 30 juin 2006
15 juin 2006 à 11:54
j'ai ragarder ton code jrivet et cela marche aussi en vb.net donc je vais la garder en solution mais je peux pas l'utiliser car les texbox ne doivent pas etre des control et je vais le mettre en réponse acceptée mais j'ai un seul souci c'est que je ne sais pas quel son tous les controle?
0
cs_drahcir Messages postés 745 Date d'inscription mardi 30 novembre 2004 Statut Membre Dernière intervention 15 septembre 2009 4
15 juin 2006 à 13:58
Les Texbox sont bien des "controls" de ton formulaire!!
0
baltazar85 Messages postés 40 Date d'inscription mercredi 31 mai 2006 Statut Membre Dernière intervention 30 juin 2006
15 juin 2006 à 14:37
je viens de remarquer qu'il y a une condition pour que ta solution marche jrivet c'est qu'il ne faut pas mettre les controls dans des groupbox sinon cela ne marche pas car il me trouve que les groupbox
0
jrivet Messages postés 7392 Date d'inscription mercredi 23 avril 2003 Statut Membre Dernière intervention 6 avril 2012 60
15 juin 2006 à 14:55
Re,

Oui effectivement il faut que la boucle parcours tout les conteneurs éventuels d'autres groupe. Mais nous n'étions pas censer savoir que tes controls étaient regroupés dans des autres.

après tout tu as ta réponse et c'est le principal

@+, Julien
Pensez: Moteur de Recherche, Réponse Acceptée
0
baltazar85 Messages postés 40 Date d'inscription mercredi 31 mai 2006 Statut Membre Dernière intervention 30 juin 2006
15 juin 2006 à 16:02
oui je sais je suis desolé j'avais oublier de le précisez et oui j'ai ma réponse mais ta solution me plaisait bien et par hasard tu aurais pas la solution pour parcourir tout les groupbox?

a++
0
jrivet Messages postés 7392 Date d'inscription mercredi 23 avril 2003 Statut Membre Dernière intervention 6 avril 2012 60
15 juin 2006 à 16:21
Re,

Non desole car en VB6 meme si ils appartiennent à une frame, les controls appartiennent quand meme à la feuille contenant les frame.

Peu être que en adaptant la boucle et en ajoutant des condition avec des TypeOF tu pourras t'en sortir

@+, Julien
Pensez: Moteur de Recherche, Réponse Acceptée
0
baltazar85 Messages postés 40 Date d'inscription mercredi 31 mai 2006 Statut Membre Dernière intervention 30 juin 2006
16 juin 2006 à 09:37
oki merci je verrai ca dans 2 semaines maxi et j'ajouterai la solution si je la trouve car la mon principal souci et d'arriver a finir mon prog pour mon stage qui se finit dans 2 semaines^^

merci a toi jrivet et au autre qui m'ont proposer des solutions et qui m'en ont donner de bonne.
0
Rejoignez-nous