Faire varier une variables dans une boucle.

Théo - 16 juin 2015 à 10:53
cs_Le Pivert Messages postés 7903 Date d'inscription jeudi 13 septembre 2007 Statut Contributeur Dernière intervention 11 mars 2024 - 16 juin 2015 à 14:41
Bonjour,
J'ai beaucoup de petits labels nommés umail1 , umail2, umail3, etc.
J'ai un tableau de données a deux dimentions.
Je ne me sert que de la colonne 1 pour les labels umail...
J'ai donc fait une boucle de ce type :
Dim l As Integer
Dim EMAIL As var
l = 0
Do Until l > 8
EMAIL = "Umail" & l + 1 & ".text"
EMAIL = MAIL(l, 0)
l = l + 1
Loop


J'aimerais pouvoir sélectionner mes labels (umail1, umail2, umail3 .... au moyen de cette boucle et de les remplir avec la cellule du tableau correspondante mais je n'y parvient pas il ne se passe rien ...
Je ne suis pas très doué en VB.
Merci de votre aide !

13 réponses

ucfoutu Messages postés 18038 Date d'inscription lundi 7 décembre 2009 Statut Modérateur Dernière intervention 11 avril 2018 211
16 juin 2015 à 11:17
EMAIL = "Umail" & l + 1 & ".text"
EMAIL = MAIL(l, 0)

1) Ecrit ainsi : EMAIL est une chaîne de caractères
2) écrire toto = "blabla" puis toto = "bonjour" a pour seul résultat (c'est tellement évident) que toto = "bonjour" !
1
ucfoutu Messages postés 18038 Date d'inscription lundi 7 décembre 2009 Statut Modérateur Dernière intervention 11 avril 2018 211
Modifié par ucfoutu le 16/06/2015 à 11:05
Bonjour,
dans :
EMAIL = "Umail" & l + 1 & ".text"
EMAIL = MAIL(l, 0)

ta seconde ligne affecte à EMAIL la valeur du tableau au lieu d'affecter au tableau la valeur de EMAIL !
Devrait être :
 MAIL(l, 0) = EMAIL 


Observation : c'est la le B.A.BA, y compris en logique seule (sans code)
________________________
Nul ne saurait valablement coder ce qu'il ne saurait exposer clairement.
0
Je ne veux pas affecter une valeur au tableau ...
Je veux affecter les valeurs du tableau à des labels només umail1, umail 2, umail3, etc.
Et je ne parviens pas à le faire.
je pensais qu'en passant par EMAIL, vb prendrais sa valeur, et utiliserais sa valeur (ex : umail1.text) et modifierai le label du nom umail1.text ...
Mais ce serais trop facile .. :/
0
ucfoutu Messages postés 18038 Date d'inscription lundi 7 décembre 2009 Statut Modérateur Dernière intervention 11 avril 2018 211
16 juin 2015 à 11:12
Veux-tu bien t'efforcer d'intervenir ici toujours sous le pseudo Ptitfils (en te connectant avec ce pseudo) ?
Dans l'autre discussion que tu as également ouverte sous "Théo", tu as ensuite répondu sous "Ptitfils", ce qui finit par semer un doute et ce d'autant que :
- Théo disait développer sous VB6
- Ptitfils montrait un code VB.Net
- lorsqu'une discussion est résolue, seul Ptifils peut la libérer (à condition d'avoir ouvert la discussion sous "Ptitfils") en cliquant sur le tag RESOLU au niveau du tout premier message !
Il est important que tu observes cette discipline.

0

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

Posez votre question
Ptitfils Messages postés 9 Date d'inscription vendredi 24 janvier 2014 Statut Membre Dernière intervention 17 juin 2015
16 juin 2015 à 11:16
Je ne peu donc pas résoudre la question d'hier ... :/
je me connecterai toujours sous ce pseudo, je n'en n'avais pas lors de mon premier message.
Et c'est en VB.net que je développe, toute mes excuses ! :)
0
Ptitfils Messages postés 9 Date d'inscription vendredi 24 janvier 2014 Statut Membre Dernière intervention 17 juin 2015
16 juin 2015 à 11:19
Oui ...
Je souhaite convertir cette chaîne de caractère en le paramètre que je souhaite modifier ...
En gros la chaine : MAIL = "umail1.text"
et je souhaite ensuite que vb comprenne :
umail1.text = MAIL(l,0)
0
ucfoutu Messages postés 18038 Date d'inscription lundi 7 décembre 2009 Statut Modérateur Dernière intervention 11 avril 2018 211
16 juin 2015 à 11:26
Je vais marquer moi-même comme résolue ton autre discussion.

En ce qui concerne la présente :
je ne suis pas vb.nettiste
Attends donc qu'un vb.nettiste passe par là.
Entre temps, lis-donc cette discussion. Je pense qu'elle devrait t'intéresser grandement
http://www.commentcamarche.net/forum/affich-18721602-groupe-de-controle-visual-basic-2010
0
Whismeril Messages postés 19030 Date d'inscription mardi 11 mars 2003 Statut Contributeur Dernière intervention 27 avril 2024 656
16 juin 2015 à 11:54
Bonjour que ce soit pour cette question ou la précédente,

VB.Net est un langage objet, ce qui, quand on s'en sert, simplifie grandement le codage.
Par exemple exit les tableaux à deux dimensions, remplacés par les list (ou autre collection) d'objets, ou une ligne est représentée par un enregistrement, et chaque "colonne" par les propriétés de l'objet.

Il est ensuite très simple d'affecter le contenu d'une donnée à un contrôle, soit par le code, soit par binding.

Mais pour comprendre tout ça, il faut commencer par apprendre ce qu'est VB.Net. Pour cela je t'invite à suivre ce cours.
http://plasserre.developpez.com/cours/vb-net/

Tu pourras ensuite regarder cet exemple de serialisation xml (export vers un fichier xml) avec Linq et une classe Personne
http://codes-sources.commentcamarche.net/forum/affich-10041677-modifier-des-donnees-dans-une-ligne-datagridview#7 pour ta question précédente.

et celui-ci pour le binding
http://codes-sources.commentcamarche.net/faq/1291-utilisation-du-binding-au-travers-de-l-objet-databindingsource
0
cs_Le Pivert Messages postés 7903 Date d'inscription jeudi 13 septembre 2007 Statut Contributeur Dernière intervention 11 mars 2024 137
16 juin 2015 à 12:03
Bonjour,

Voici un exemple de boucle sur des contrôles(Label):

  Dim i As Integer
        For Each ctrl As Control In Me.Controls
            If TypeOf ctrl Is Label Then
                i = ctrl.TabIndex
                ctrl.Text = "EMAIL" & i
            End If
        Next


Tu remplace EMAIL par les données de ton tableau
0
Ptitfils Messages postés 9 Date d'inscription vendredi 24 janvier 2014 Statut Membre Dernière intervention 17 juin 2015
16 juin 2015 à 12:20
Et si mes tabIndex ne se suivent pas correctement ?
je souhaite seulement arriver à :

umail1.text = MAIL(0,0)

MAIS umail1.text c'est la VALEUR de EMAIL
EMAIL = "Umail" & i + 1 & ".text"

Comment utiliser la VALEUR de EMAIL comme objet ou comme prpriété à modifier ?

Parce que dans ton code je ne vois pas comment on identifie le label à modifier ...
0
cs_Le Pivert Messages postés 7903 Date d'inscription jeudi 13 septembre 2007 Statut Contributeur Dernière intervention 11 mars 2024 137
16 juin 2015 à 13:53
Pour identifier le label par son nom:

 Dim nom As String
        For Each ctrl As Control In Me.Controls
            If TypeOf ctrl Is Label Then
                nom = ctrl.Name
                MsgBox(nom)
            End If
        Next


Et si mes tabIndex ne se suivent pas correctement ?

c'est à toi de les mettre correctement!

Mais là je commence a avoir du mal à te suivre
0
Ptitfils Messages postés 9 Date d'inscription vendredi 24 janvier 2014 Statut Membre Dernière intervention 17 juin 2015
16 juin 2015 à 14:26
Je ne comprend toujours pas d'ou sort le ctrl ...

Mes labels existent déjà ! il sont nomé Umail1, umail2, umail3

Pour modifier leurs textes il faut taper :

Umail1.text = MAIL(0,0)
Umail2.text = MAIL(1,0)
Umail3.text = MAIL(2,0)

Le problème : C'est que j'ai beaucoup de labels qui doivent prendre les valeurs du tableau MAIL(40,5)

Donc j'ai voulu passer par une boucle étant donné qu'il n'y à qu'un chiffre qui change, 1,2,3,4, ...

Je veux donc : faire :
("Umail" & (i+1)).text = MAIL(i,0)

Puis répéter l'opération avec le i toujours supérieur de 1 à chaque boucle jusque la fin.

Seulement je ne parvient pas à faire ça !

J'ai tout essayé !

EMAIL = "Umail" & i+1
EMAIL.text = MAIL(i,0)

Me.controls(EMAIL).text = MAIL(i,0)

Pas moyen ...
c'est moi qui vous ne suit plus la ...
0
cs_Le Pivert Messages postés 7903 Date d'inscription jeudi 13 septembre 2007 Statut Contributeur Dernière intervention 11 mars 2024 137
16 juin 2015 à 14:41
Je ne comprend toujours pas d'ou sort le ctrl ...


Il faut quand même savoir lire un code:

ctrl As Control

c'est un contrôle, il est déclaré en tant que tel

dans la ligne suivante

If TypeOf ctrl Is Label Then

si ce contrôle est un Label on boucle sur tous les Label

C'est le B A BA

Donc voici ta boucle, a condition que tes labels soient bien répertoriés :

 Dim i As Integer
        For Each ctrl As Control In Me.Controls
            If TypeOf ctrl Is Label Then
                i = ctrl.TabIndex
                ctrl.Text = "MAIL(" & i - 1 & ", 0)"
            End If
        Next
0
Rejoignez-nous