Automatisation de traitement

Tom352 Messages postés 2 Date d'inscription mardi 15 juin 2010 Statut Membre Dernière intervention 17 juin 2010 - 16 juin 2010 à 21:37
 Profil bloqué - 17 juin 2010 à 17:37
Bonsoir à tous,

Voila, je viens vers vous car je souhaiterais améliorer mon code mais je ne sais comment faire.

Voici une partie du code :

For i = 0 To UBound(PartieA)
If TextBox1.Text = PartieA(i) Then
Label3.Text = "Partie A"
Exit Sub
End If
Next

For i = 0 To UBound(PartitB)
If TextBox1.Text = PartitB(i) Then
Label3.Text = "Partit B"
Exit Sub
End If
Next


Etc...

Je test chaque tableau qui va de A à Z. Mon idée serait de faire une variable que j'incrémente grâce que code ascii.

Ca deviendrait donc :

For i = 0 To UBound(Partit & Chr(Asc(i))
If TextBox1.Text = "Partit" & Chr(Asc(i) Then
Label3.Text = "Partit" & Chr(Asc(i)
Exit Sub
End If
Next
Et aprés j'incrémene i à chaque fin de boucle.

Malheuresement, cette solution ne marche pas... Ca bloque à : For i = 0 To UBound(Partit & Chr(Asc(i)).
Quelqu'un aurait t'il une idée ??

Un grand merci par avance

3 réponses

Profil bloqué
16 juin 2010 à 23:09
Salut tom352
si tes 26 tableaux ont tous la même taille tu peux ne faire qu'un seul tableau à 2 dimensions

dim Partie(i,j) où i représenterait les lettres A à Z sous la forme 0 à 25 et j le nombre d'éléments des 26 sous-tableaux

For i = 0 To 25
For j = 0 to Ubound(Partie,2)
If TextBox1.Text = Partie(i,j) Then
Label3.Text "Partie" & Chr(Asc(i + 65) ' si i 0 la lettre est A , si i = 1 la lettre est B etc....
Exit for
End If
Next j
Exit Sub
Next i

La théorie, c'est quand on sait tout et que rien ne fonctionne. La pratique, c'est quand tout fonctionne et que personne ne sait pourquoi.

GRENIER Alain
0
Tom352 Messages postés 2 Date d'inscription mardi 15 juin 2010 Statut Membre Dernière intervention 17 juin 2010
17 juin 2010 à 01:58
Bonsoir,

Merci pour la réponse mais malheureusement mes tableaux sont de tailles différents. je garde néanmoins cette astuce sous le coude pour une prochaine prog.
0
Profil bloqué
17 juin 2010 à 17:37
Salut tom352

Dans le cas de tableaux de tailles différentes on peut faire ceci
Soit le cas de 3 tableaux : A(0 to 10), B(0 to 15) et C(0 to 20)

on dimensionne les trois tableaux de 0 à 20 et on les initialise avec une chaine vide
ensuite dans le tableau A on met les 11 valeurs de 0 à 10, dans B les 16 valeurs de 0 à 15 et dans C les 21 valeurs de 0 à 20

On reprend notre code

For i = 0 To 2 ' pour les tableaux A,B et C ( de A à Z on aurait de 0 à 25)
For j = 0 to 20 ' pour le plus grand tableau ( ici le C de 0 à 20)
If Partie(i,j) = "" Then Exit For ' si on arrive à chaine nulle : fin de ce tableau et on sort
If TextBox1.Text = Partie(i,j) Then
Label3.Text "Partie" & Chr(Asc(i + 65) ' si i 0 la lettre est A , si i = 1 la lettre est B etc....
Exit for
End If
Next j
Exit Sub
Next i


La théorie, c'est quand on sait tout et que rien ne fonctionne. La pratique, c'est quand tout fonctionne et que personne ne sait pourquoi.

GRENIER Alain
0
Rejoignez-nous