Les collections -> List(Of String) [Résolu]

Efferp
Messages postés
23
Date d'inscription
jeudi 27 février 2014
Dernière intervention
19 mai 2018
- 2 mai 2018 à 21:47 - Dernière réponse : Efferp
Messages postés
23
Date d'inscription
jeudi 27 février 2014
Dernière intervention
19 mai 2018
- 3 mai 2018 à 21:39
Bonjour,
je débute en VB.net et je suis face à un petit souci.
j'utilise une collection "Liste(Of String)".

J'ai un nombre d'entrée variable ( de 4 à 15, c'est pour cela que je passe par les collections et pas par les tableaux ) avec parfois des entrées en double.

J'arrive à récupérer les index avec
MaListe.IndexOf(ValeurATrouver)

et à faire des manip avec .RemoveAt et .Insert ( je m'en sers pour changer certaines valeurs à l'intérieur de ma collection.

Le problème...

Lorsque je veux changer toutes les valeurs identiques de cette collection par une autre valeur, comment je fais pour récupérer mes différents index ?

Exemple comment changer tous les AZE en ERT dans cette collection ?

0 FRE
1 AZE
2 AZS
3 ASE
4 AZE

quand j'utilise .IndexOf() cela me retourne l'index de la première valeur mais pas celui de la suivante, ou alors je sais pas comment faire.

Un coup de main ne serait pas de refus. SVP.
Afficher la suite 

Votre réponse

5 réponses

NHenry
Messages postés
14297
Date d'inscription
vendredi 14 mars 2003
Statut
Modérateur
Dernière intervention
14 novembre 2018
- 2 mai 2018 à 21:51
0
Merci
for var i=0 to MaListe.Count-1
    if MaListe(i).equals("...") Then
        MaListe(i)="...."
    End if
next

Commenter la réponse de NHenry
Efferp
Messages postés
23
Date d'inscription
jeudi 27 février 2014
Dernière intervention
19 mai 2018
- 2 mai 2018 à 22:08
0
Merci
Merci de la rapidité de ta réponse.

Je pense comprendre ton morceau de code. Et il me sera très utile pour les changements de masse, mais il ne me permets pas de récupérer les Index des entrées qui me servent ailleurs dans mon fichier.

Pour être plus clair, je travaille avec 2 collections en parallèle, et la lecture sur la première doit être répercutée en changement sur la deuxième :

Collection1
0 FRE
1 AZE
2 AZS
3 ASE
4 AZE

Collection2
0 FRE
1 AZE
2 AZS
3 ASE
4 POR

si les valeurs index 1 et 4 de la première collection sont identiques, je dois changer les valeurs des index 1 et 4 de la deuxième, mais comme tu peux le voir, elles ne sont pas identiques, c'est pour cela que je récupère les index comme expliqué dans mon premier message afin de faire les changements sur la deuxième.

Désolé de ne pas avoir été plus clair dès le début.
vb95
Messages postés
1701
Date d'inscription
samedi 11 janvier 2014
Dernière intervention
15 novembre 2018
- 3 mai 2018 à 00:02
Bonjour

ainsi tu fais le changement sur les 2 collections
Les AZE sont changés en ERT sur les 2 collections

For i=0 to MaListe1.Count-1
    if MaListe1(i) = "AZE" Then MaListe1(i)="ERT"   ' change le AZE de la liste n° 1
    if MaListe2(i) = "AZE" then MaListe2(i)="ERT"   ' change le AZE de la liste n° 2
Next


Les 3 changements
Collection1
0 FRE
1 AZE --> ERT
2 AZS
3 ASE
4 AZE --> ERT

Collection2
0 FRE
1 AZE --> ERT
2 AZS
3 ASE
4 POR
NHenry
Messages postés
14297
Date d'inscription
vendredi 14 mars 2003
Statut
Modérateur
Dernière intervention
14 novembre 2018
- 3 mai 2018 à 18:41
Par contre, il faut que les 2 collections aient le même nombre d'éléments.
Commenter la réponse de Efferp
Efferp
Messages postés
23
Date d'inscription
jeudi 27 février 2014
Dernière intervention
19 mai 2018
- 3 mai 2018 à 21:39
0
Merci
Parfait, c'est exactement ce que je voulais.
Merci à vous deux pour votre aide.

J'ouvre une autre discussion pour un autre problème :'(
Commenter la réponse de Efferp

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.